【发布时间】:2020-07-21 18:38:03
【问题描述】:
我只想使用十进制年份列表来为自定义 x 轴分配标签和刻度:
labels = [1992.71, 1991.67, 1990.5, 1989.54, 1988.5, 1987.5, .., 1700.5]
重要提示:上面列表中2个连续值之间的间隔不是恒定的,我这里只关心步骤,所以列表中的每个位置都应该是一个tick或一个bin。
问题是,如果我使用列表中的所有标签,图表会变得过于密集。顺便说一句,我的图表里面是一个 PNG 图像,而不是一个绘图。
所以,我决定(可能是错误的)生成第二个列表,其中只包含我需要的值(这次使用字符串):
labels2 = ['1992.71','','','','','1987.50', etc.]
理想情况下,我希望 x 轴具有以下配置:
或者这个:
或者这个:
到目前为止,我一直在玩这些功能:
ax.set_xticklabels
plt.locator_params
ax.tick_params
plt.xticks
ax.xaxis.set_ticks
ax.xaxis.set_major_formatter
...
没有成功。
这是我最近的一次:
但是标签序列在 x 轴的右侧被 CUT 并且永远不会到达列表的末尾,所以它在列表的中途结束(应该在 1700.5 结束):
另外,我只想显示与所选标签相对应的刻度,而不是全部。
这是我的代码:
plt.locator_params(axis='x', nbins=len(labels2)-1)
ax.set_xticklabels(labels2, rotation=90 )
ax.tick_params(axis='x', which='major', length=4, labelsize=2)
本质上,目前我无法复制我想要的,
有什么想法吗?
【问题讨论】:
标签: python matplotlib