我试图修复python如何绘制我的数据。 说:
x = [0,5,9,10,15]
y = [0,1,2,3,4]
matplotlib.pyplot.plot(x,y)
matplotlib.pyplot.show()
x轴的刻度以5为间隔绘制。有没有办法让它显示1的间隔?
我试图修复python如何绘制我的数据。 说:
x = [0,5,9,10,15]
y = [0,1,2,3,4]
matplotlib.pyplot.plot(x,y)
matplotlib.pyplot.show()
x轴的刻度以5为间隔绘制。有没有办法让它显示1的间隔?
当前回答
如果你只是想把间距设置为一个简单的一行和最小的样板:
plt.gca().xaxis.set_major_locator(plt.MultipleLocator(1))
对小蜱虫也很有效:
plt.gca().xaxis.set_minor_locator(plt.MultipleLocator(1))
有点满口,但很紧凑
其他回答
这是一个老话题了,但我偶尔会遇到这个问题,然后做了这个功能。非常方便:
import matplotlib.pyplot as pp
import numpy as np
def resadjust(ax, xres=None, yres=None):
"""
Send in an axis and I fix the resolution as desired.
"""
if xres:
start, stop = ax.get_xlim()
ticks = np.arange(start, stop + xres, xres)
ax.set_xticks(ticks)
if yres:
start, stop = ax.get_ylim()
ticks = np.arange(start, stop + yres, yres)
ax.set_yticks(ticks)
像这样控制刻度的一个警告是,一个人不再享受在添加一行后最大刻度的交互式自动更新。然后做
gca().set_ylim(top=new_top) # for example
并再次运行resadjust函数。
你可以循环标签,并显示或隐藏你想要的:
for i, label in enumerate(ax.get_xticklabels()):
if i % interval != 0:
label.set_visible(False)
如果你只是想把间距设置为一个简单的一行和最小的样板:
plt.gca().xaxis.set_major_locator(plt.MultipleLocator(1))
对小蜱虫也很有效:
plt.gca().xaxis.set_minor_locator(plt.MultipleLocator(1))
有点满口,但很紧凑
如果有人对一般的一行程序感兴趣,只需获取当前的刻度,并通过对每个其他刻度进行采样来使用它来设置新的刻度。
ax.set_xticks(ax.get_xticks()[::2])
xmarks=[i for i in range(1,length+1,1)]
plt.xticks(xmarks)
这对我很有效
如果你想要[1,5](1到5包括在内)之间的刻度,那么替换
length = 5