在x轴上的刻度标签的Plotlot间距

时间:2018-04-02 10:28:11

标签: python matplotlib

在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.)

bad xticks

2 个答案:

答案 0 :(得分:2)

出现问题的一部分,因为您在绘图函数中省略了x坐标。如果你正在使用

plt.plot(x, np.log(x))

你不会有间距问题。

如果省略x坐标,它会被np.arange(len(y))替换为内部,因此您的x轴的值为0到100而不是0到10.

供参考:

enter image description here enter image description here

一般来说,matplotlib提供了一些处理蜱间距的定位器:
https://matplotlib.org/examples/ticks_and_spines/tick-locators.html

答案 1 :(得分:1)

一种选择是使用日志轴,例如改变:

plt.xticks(np.arange(10))

为:

plt.semilogx(np.arange(10))

你会得到: enter image description here

有关更多选项,请参阅https://matplotlib.org/api/_as_gen/matplotlib.pyplot.semilogx.html?highlight=semilogx#matplotlib.pyplot.semilogx

一个选项是给刻度线提供一个值列表:

plt.xticks([0,10,30,100])

会给: enter image description here

但还有其他选项,例如为step功能指定arange