如何在matplotlib图的y轴上指定值

42fyovps  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(87)

我需要使用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轴上指定不同数量的值?或者将它们指定为一个间隔,而不是一个列表?

xpcnnkqh

xpcnnkqh1#

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()

像这样的东西应该工作。

um6iljoc

um6iljoc2#

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();

相关问题