我正在尝试修复 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.xticks:
plt.xticks
plt.xticks(np.arange(min(x), max(x)+1, 1.0))
例如,
import numpy as np import matplotlib.pyplot as plt x = [0,5,9,10,15] y = [0,1,2,3,4] plt.plot(x,y) plt.xticks(np.arange(min(x), max(x)+1, 1.0)) plt.show()
(为了以防万一,np.arange使用了而不是 Python 的函数,并且是浮点数而不是整数。)range``min(x)``max(x)
np.arange
range``min(x)``max(x)
(plt.plot或ax.plot)函数将自动设置默认值x和y限制。如果您希望保持这些限制,并且只需更改刻度线的步长,那么您可以使用ax.get_xlim()来发现 Matplotlib 已经设置的限制。
plt.plot
ax.plot
x
y
ax.get_xlim()
start, end = ax.get_xlim() ax.xaxis.set_ticks(np.arange(start, end, stepsize))
默认的刻度格式化程序应该可以将刻度值四舍五入到合理的有效数字位数。但是,如果您希望对格式有更多的控制,您可以定义自己的格式化程序。例如,
ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f'))
这是一个可运行的示例:
import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as ticker x = [0,5,9,10,15] y = [0,1,2,3,4] fig, ax = plt.subplots() ax.plot(x,y) start, end = ax.get_xlim() ax.xaxis.set_ticks(np.arange(start, end, 0.712123)) ax.xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.1f')) plt.show()