对于Matplotlib和制图来说,我还是很陌生,所以如果这个问题听起来微不足道,我感到抱歉。
我正在尝试绘制具有以下x和y值的折线图。
x_values = [18, 19, 20, 21, 22, 23, 24]
y_values = [6, 14, 39, 124, 553, 1718, 5524]
问题在于,由于y_values
是指数的,因此您无法在图形上真正看到较低的值。我尝试过与yticks玩耍,但是比例保持不变。 有没有办法绘制此图形,以便您可以看到所有值?我希望在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()
plt.yticks(np.concatenate((np.arange(0, 175, 25), [553], [1718], [5524]), axis=None))
这是我的目标,但具有更好的y轴比例。
答案 0 :(得分:1)
也许您只是在寻找对数刻度?
plt.plot(x_values, y_values)
plt.yscale("log")
plt.yticks(y_values, y_values)
plt.show()
答案 1 :(得分:1)
您对此感到满意吗?它显示原始图并在其旁边显示较低值的视图?
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()