在pyplot图表中间隔xticks的正确方法是什么?例如,我试图在Jupiter笔记本中绘制对数。我在y轴上有很多数据点,这会产生太多的xticks(标签相互重叠并且不可读)。如何将图表配置为每10 xt打印一次标签?
我尝试使用
plt.xticks(np.arange(10))
但这只是以相同的紧密分组方式呈现前10个标签。
%matplotlib inline
import matplotlib.pyplot as plt
x = np.arange(0.1, 10, 0.1)
plt.plot(np.log(x), label='$\log_e$')
plt.plot(np.log2(x), label='$\log_2$')
plt.plot(np.log10(x), label='$\log_{10}$')
plt.xticks(np.arange(10))
plt.grid()
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
答案 0 :(得分:2)
出现问题的一部分,因为您在绘图函数中省略了x
坐标。如果你正在使用
plt.plot(x, np.log(x))
你不会有间距问题。
如果省略x
坐标,它会被np.arange(len(y))
替换为内部,因此您的x轴的值为0到100而不是0到10.
供参考:
一般来说,matplotlib提供了一些处理蜱间距的定位器:
https://matplotlib.org/examples/ticks_and_spines/tick-locators.html
答案 1 :(得分:1)
一种选择是使用日志轴,例如改变:
plt.xticks(np.arange(10))
为:
plt.semilogx(np.arange(10))
一个选项是给刻度线提供一个值列表:
plt.xticks([0,10,30,100])
但还有其他选项,例如为step
功能指定arange
。