在matplotlib中更改x或y轴上的“刻度频率”?

问题:

我试图修复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(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)是浮点而不是int。)
plt.plot(或ax.plot)功能将自动设置默认xy限制。如果您希望保留这些限制,并且只需更改刻度线的步骤,则可以使用ax.get_xlim()来发现Matplotlib已经设置的限制。

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

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Changing the “tick frequency” on x or y axis in matplotlib?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

24 − = 15