У меня есть функция для построения графика графики с использованием pyplot
. Код здесь:Добавление вторичной оси X с определяемым пользователем списком координат
def plot_results(results, expers):
"""
type results: list[list[float]]
type expers: list[int]
"""
label_builder = lambda index: 'experiment ' + str(index + 1)
colors = ('green', 'blue')
x_indices = list(map(compute_filesize, list(range(np.shape(results)[1]))))
x_percents = list(map(compute_percent, list(range(np.shape(results)[1]))))
fig, ax1 = plt.subplots()
for i in range(expers):
ax1.plot(x_indices, results[i], color=colors[i], lw=2, label=label_builder(i))
ax1.legend()
plt.show()
Для каждого значения expers
списка моя функция строит диаграмму. Например, if len(results) == len (expers) == 2
, я получить такой график:
нужно создать вторичный X-ось (аналогично this, но это может быть по оси Х, и она будет расположена на верхней части графика). Другое отличие состоит в том, что Мне нужно установить список координат вручную (например, ax2.set_coords (x_percents)).
Я создал новую ось, используя ax2 = ax1.twinx()
. Затем я установил список координат, используя ax2.set_xticks(x_percents)
.
Но из-за каждый x_percents[i] < x_indices[i]
, я получил такую картину:
(как вы можете видеть, все координаты новой оси расположены в левом нижнем углу)
Как я могу изменить свою функцию, чтобы сделать новый X-ось:
, расположенный на верхней части графика,
имеет свою собственную шкалу, т.е. каждое значение
x_percents
соответствует значениюresults[i]
иx_percents
диспергированного в интервале?
Вы хотите на самом деле построить данные с этой другой осью или это вторая ось, просто очередная презентация первой? – MaxNoe
также 'np.arange (results.shape [1])' будет чище и быстрее, чем то, что вы делаете сейчас – MaxNoe