我想通过指定每次跳过多少刻度来设置x刻度密度。例如,如果x轴标记为100个连续日期,并且我想跳过每10个日期,那么我将执行类似
的操作import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.period_range("20060101", periods=100).strftime("%Y%m%d")
y = np.random.randn(100)
ax = plt.subplot(1, 1, 1)
ax.plot(ts, y)
xticks = ax.get_xticks()
ax.set_xticks(xticks[::10])
plt.xticks(rotation="vertical")
plt.show()
然而输出不合适。 Pyplot只选择前几个刻度并将它们全部放在错误的位置,尽管间距是正确的:
我可以做些什么来获得所需的输出?也就是说,刻度应该是:
['20060101' '20060111' '20060121' '20060131' '20060210' '20060220'
'20060302' '20060312' '20060322' '20060401']
@ klim的回答似乎在轴上放了正确的标记,但标签仍然不会显示。日期轴正确标记但没有标签的示例:
答案 0 :(得分:1)
也设置xticklabels。像这样。
xticks = ax.get_xticks()
xticklabels = ax.get_xticklabels()
ax.set_xticks(xticks[::10])
ax.set_xticklabels(xticklabels[::10], rotation=90)
忘掉上面的内容,这是行不通的。
这个怎么样?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.period_range("20060101", periods=100).strftime("%Y%m%d")
x = np.arange(len(ts))
y = np.random.randn(100)
ax = plt.subplot(1, 1, 1)
ax.plot(x, y)
ax.set_xticks(x[::10])
ax.set_xticklabels(ts[::10], rotation="vertical")
plt.show()
这适用于我的机器。