Построение экспоненциальных графов в интервале matplotlib - ytick - PullRequest
0 голосов
/ 19 апреля 2019

Я довольно плохо знаком с matplotlib и графикой в ​​целом, поэтому извините, если эта проблема звучит тривиально.

Я пытаюсь построить линейный график со следующими значениями x и y.

x_values = [18, 19, 20, 21, 22, 23, 24]

y_values = [6, 14, 39, 124, 553, 1718, 5524]

Проблема в том, что, поскольку y_values экспоненциально, вы не можете видеть нижние значения на графике.Я пытался поиграть с итиками, но пропорции остались прежними. Есть ли способ построить это, чтобы вы могли увидеть все значения? Я бы хотел иметь что-то вроде фиксированного расстояния между yticks или что-то подобное.

Мой текущий код:

import numpy as np
import matplotlib.pyplot as plt

x_values = [18, 19, 20, 21, 22, 23, 24]
y_values = [6, 14, 39, 124, 553, 1718, 5524]

plt.plot(np.array(x_values), np.array(y_values))
plt.xticks(np.arange(18, 25, 1), ('18', '+19', '+20', '+21', '+22', '+23', '+24'))
plt.grid()
plt.show()

plot

plot

plt.yticks(np.concatenate((np.arange(0, 175, 25), [553], [1718], [5524]), axis=None))

Это будет моей целью, но с лучшими пропорциями по оси Y.

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Будете ли вы счастливы с этим?он показывает исходный график и рядом с ним вид нижних значений?

import numpy as np
import matplotlib.pyplot as plt

x_values = [18, 19, 20, 21, 22, 23, 24]
y_values = [6, 14, 39, 124, 553, 1718, 5524]

plt1 = plt.subplot(121)
plt1.margins(0.05)
plt1.plot(np.array(x_values), np.array(y_values), 'k')
plt1.set_title("Original Graph")
plt1.grid()

plt2 = plt.subplot(122)
plt2.margins()
plt2.plot(np.array(x_values[:4]), np.array(y_values[:4]), 'r')
plt2.set_title("Zoom of Lower Values")
plt2.grid()
plt.show()

This is what the plots look like

1 голос
/ 19 апреля 2019

Возможно, вы просто ищете масштаб для журнала?

plt.plot(x_values, y_values)
plt.yscale("log")
plt.yticks(y_values, y_values)
plt.show()

enter image description here

...