如何在 matplotlib 绘图中指定 y 轴的值

43

我需要使用matplotlib生成一个类似于附图中的图形。到目前为止,我尝试了以下方法:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([0,1,2,3])
y = np.array([20,21,22,23])
my_xticks = ['John','Arnold','Mavis','Matt']
plt.xticks(x, my_xticks)
plt.plot(x, y)
plt.show()

我该如何指定y轴上的值与x轴上的值不同?并且可能将它们指定为0.005间隔而不是列表?

desired image

2个回答

61
import matplotlib.pyplot as plt
import numpy as np

x = np.array([0,1,2,3])
y = np.array([0.650, 0.660, 0.675, 0.685])
my_xticks = ['a', 'b', 'c', 'd']
plt.xticks(x, my_xticks)
plt.yticks(np.arange(y.min(), y.max(), 0.005))
plt.plot(x, y)
plt.grid(axis='y', linestyle='-')
plt.show()

像这样的东西应该可以工作。


0

Y轴上的值被称为y刻度标签(刻度是轴上的短线)。正如@Martini所示,可以使用状态机设置它。还有面向对象的方法,我认为更加透明。

这种方法是您可以显式创建一个Axes对象并调用相应的方法(这在plt.xticks()下也是在幕后完成的)。

选项#1。例如,要设置yticks,有专用的ax.set_yticks()方法。

x = np.array([0,1,2,3])
y = np.array([0.650, 0.660, 0.675, 0.685])
my_xticks = ['John','Arnold','Mavis','Matt']


fig, ax = plt.subplots(facecolor='white')           # create figure and axes objects
ax.plot(x, y)                                       # make plot
ax.set_xticks(x)                                    # set x tick positions
ax.set_xticklabels(my_xticks)                       # set the corresponding x tick labels
ax.set_yticks(np.arange(y.min(), y.max(), 0.005))   # set y tick positions
ax.grid(axis='y');                                  # draw grid

选项#2。 Axes对象还定义了set()方法,可用于设置多个属性,如xticks,yticks,ylabel等。

fig, ax = plt.subplots(facecolor='white')
ax.plot(x, y)
ax.set(xticks=x, xticklabels=my_xticks, yticks=np.arange(y.min(), y.max(), 0.005), xlabel='x axis', ylabel='y axis');
ax.grid(axis='y');

选项 #3. 每个轴也定义了轴对象(YAxis 和 XAxis),它们各自定义了一个 set() 方法,可用于设置该轴上的属性。

fig, ax = plt.subplots(facecolor='white')
ax.plot(x, y)
ax.xaxis.set(ticks=x, ticklabels=my_xticks, label_text='x axis')
ax.yaxis.set(ticks=np.arange(y.min(), y.max(), 0.005), label_text='y axis')
ax.yaxis.grid();

result


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接