Либо неправильный интервал, либо неправильный размер с использованием общей оси Y и равного аспекта matplotlib.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Либо неправильный интервал, либо неправильный размер с использованием общей оси Y и равного аспекта matplotlib.

Сообщение Anonymous »

Контекст
Я пытаюсь отобразить некоторые данные синхронизации различных алгоритмов, которые зависят от некоторого входного размера и другого параметра. Цель состоит в том, чтобы иметь n графиков, показывающих различные алгоритмы, и один сводный график.
графики алгоритмов имеют оси от параметра до времени выполнения и разные линии для каждого размера входных данных, в то время как сводный график показывает размер ввода для минимального времени выполнения (параметр выбран оптимально).
Проблема
Для этого у меня есть следующий код

Код: Выделить всё

import matplotlib.pyplot as plt
import matplotlib.patheffects as pe

data = {
"Case1": {
10: ([10,20,30], [ 100, 20, 80 ]),
1000: ([10,20,30], [ 200, 40, 100 ]),
},

"Case2": {
10: ([10,20,30], [ 50, 60, 70 ]),
1000: ([10,20,30], [ 100, 200, 300 ]),
}
}

minimum_data = {
"Case1": ([10,1000],[20, 40]),
"Case2": ([10,1000],[50, 100])
}

minimum = 10
maximum = 400

plot_count = 2 + 1

fig, axs = plt.subplots(1, plot_count,  figsize=(6*plot_count, 6), sharey=True)
*individual_plots, group_plot = axs

for ax, ( category, grouped ) in zip( individual_plots, data.items() ):
for group, datum in grouped.items():
ax.loglog(datum[0], datum[1])
ax.text(datum[0][0], datum[1][0], f'size {group}', path_effects=[pe.withStroke(linewidth=4, foreground="white")])
ax.set_aspect("equal", adjustable="box")
ax.set_xlabel("parameter")
ax.set_ylabel("total")
ax.set_title(category)
ax.set_ylim([minimum,maximum])

for category, data in minimum_data.items():
group_plot.loglog(data[0], data[1], label=category)

group_plot.set_aspect("equal", adjustable="box")
group_plot.set_xlabel("size")
group_plot.set_ylabel("total")
group_plot.set_title("minimal totals")
group_plot.set_ylim([minimum,maximum])

fig.legend(
title="categories",
loc='outside center right'
)
plt.show()
Это приводит к чему-то вроде
[img]https://i. sstatic.net/bmKtLqcU.png[/img]

Там, где подграфики расположены слишком далеко друг от друга и общая ось Y не работает.
Растяжка фигуры "исправляет" общая ось Y, но ухудшает интервал.
Изображение

И наоборот, уменьшение изображения приводит к обратному результату.
Изображение

Вопрос
Как Сохраню ли я общую ось Y и сделаю ли поля между разными графиками идентичными? (Также работает более чем на 3 участках)

Подробнее здесь: https://stackoverflow.com/questions/792 ... xis-and-as
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»