考虑下图。
此图像已使用以下代码设置。
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
fig, ax = plt.subplots()
ax.set_xlabel("Run Number", fontsize=25)
plt.grid(True, linestyle='--')
plt.tick_params(labelsize=20)
ax.set_xticklabels(map(str,range(number_of_runs)))
ax.minorticks_on()
ax.set_ylim([0.75,1.75])
为了清楚起见,我没有包含实际生成用于绘图的数据的代码。
与上图不同,我想通过每个橙色(并因此是蓝色)点绘制垂直于X轴的网格线。我该怎么做呢? 在我的代码中,连续的橙色和蓝色点的x坐标形成相同的算术级数。
我还注意到编号为1,2,...的刻度号对我的应用程序是错误的。相反,我希望我在上一步中要求垂直于X轴的每条连续的网格线沿X轴从1开始顺序编号。如何为此配置Xtick标记?
答案 0 :(得分:1)
网格线穿过xticks(或yticks)。 您需要正确定义xticks,以使网格线与数据点(点)交叉
以下示例:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
number_of_runs = range(1,10) # use your actual number_of_runs
ax.set_xticks(number_of_runs, minor=False)
ax.xaxis.grid(True, which='major')
如果您只想使用垂直线,请添加以下内容:
ax.yaxis.grid(False, which='major')
类似的问题here。
答案 1 :(得分:0)
您应该使用对ax.set_xticks
的调用来指定要放置网格的确切位置,然后通过对ax.set_xticklabels
的调用来指定想要在轴上的确切位置。
我在下面的示例中绘制了一些随机数组:
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
y1 = np.random.random(10)
y2 = np.random.random(10)
fig, ax = plt.subplots(ncols=2, figsize=(8, 3))
# equivalent to your figure
ax[0].plot(y1, 'o-')
ax[0].plot(y2, 'o-')
ax[0].grid(True, linestyle='--')
ax[0].set_title('Before')
# hopefully what you want
ax[1].plot(y1, 'o-')
ax[1].plot(y2, 'o-')
ax[1].set_title('After')
ax[1].set_xticks(range(0, len(y1)))
ax[1].set_xticklabels(range(1, len(y1)+1))
ax[1].grid(True, linestyle='--')
plt.show()
注意:查看您的绘图,似乎实际的x轴不是整数,但您希望整数从1开始,也许最好的方法是将y轴数据数组作为plot命令的参数(plt.plot(y)
而不是plt.plot(x, y)
,就像我上面所做的一样。您应该确定这是否适合您的情况。