Как matplotlib.pyplot определяет метки осей x и y и графики масштаба? - PullRequest
0 голосов
/ 22 января 2020

У меня проблемы с пониманием того, как matplotlib.pyplot определяет метки x и y (по умолчанию), размещенные на осях x и y, и, соответственно, как изменить интервалы этих меток и соответственно масштабировать график, Этот последний бит важен, потому что у меня очень странное поведение. В частности, график по умолчанию выглядит следующим образом:

enter image description here

Чтобы быть уверенным, этот график отображает данные правильно. Однако я не хочу, чтобы на оси Y было так много меток и они не были такими точными. Поэтому я добавил в свою программу следующий фрагмент кода:

ax.set_ylim(bottom=y_min, top=y_max)
y_tick_marks = list(np.arange(y_min, y_max, (y_max - y_min)/10))
y_labels = [round(elem, 4) for elem in y_tick_marks]
plt.yticks(y_tick_marks, y_labels)

И я получил следующий график: enter image description here

Что кажется нелепым, потому что я должен быть в состоянии увидеть некоторые из обоих графиков (я понимаю, что наибольшее значение у не совпадает с предыдущим графиком). Затем я стер предыдущий блок кода и включил следующий (обратите внимание, что они одинаковы, за исключением того, что пропущена одна строка):

y_tick_marks = list(np.arange(y_min, y_max, (y_max - y_min)/10))
y_labels = [round(elem, 4) for elem in y_tick_marks]
plt.yticks(y_tick_marks, y_labels)

Я сделал это, потому что подозревал, что что-то происходит с масштабированием график с учетом разницы между графиком 1 и 2 выше. Я думаю, что я прав, потому что я получил следующий график:

enter image description here

Это очень странно, потому что первый график инсинуировал значения у второго графика будет соответствовать, но на этом третьем графике мы видим, что второй график - это очень маленькая часть. Поэтому я запустил оператор печати:

print(ax.get_ylim())

, который дал следующий вывод:

(-1.1500000000000001, 24.15)

Что происходит в мире? Кажется, что matplotlib допускает масштабирование значений y каким-то образом, но не забудьте связать эти масштабированные значения y с их исходными значениями через метки оси y.

Я понимаю, что я не включил много кода , но я не хотел заставлять кого-либо читать кучу кода, если не было необходимости отвечать на вопрос - чтобы быть уверенным, я напечатал все y-значения и трижды проверил мой ввод в графических методах. Я могу добавить больше кода, если потребуется, но графики говорят сами за себя.

Общее решение было бы неплохо, но я также был бы очень признателен, если бы его можно было представить на низком уровне. Спасибо всем, кто пытается ответить на этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...