【发布时间】:2017-08-31 06:13:46
【问题描述】:
我想使用 matplotlib 绘制存储在 Pandas Dataframe 中的一些数据。我想在 x 轴刻度上放置特定标签。因此,我将它们设置为:
ax.xaxis.set_ticklabels(data_frame['labels'])
效果很好,但是它为每个数据点设置了一个刻度标签,使绘图不可读,所以我尝试了:
ax.locator_params(axis='x', nbins=3)
这将刻度数减少到 3,但标签不对应于正确的数据点(如果标签是 a,b,c,d,e ..., x,y,z 我得到标签 a,b ,c 而不是 a,m,z 或类似的东西)。我的下一个想法是设置刻度标签位置:
ax.xaxis.set_ticks(data_frame.index.values)
但它不起作用。
有效的是:
ax.xaxis.set_ticklabels(data_frame['labels'][::step])
ax.xaxis.set_ticks(data_frame.index.values[::step])
不设置任何locator_params。
这几乎是完美的。它修复了刻度和标签,但是当我缩放绘图(使用 matplotlib 交互式窗口)时,新标签显然没有出现。我需要的是可读的刻度,它们会根据绘图缩放进行自我调整(这是ax.locator_params(axis='x', nbins=3) 在没有任何自定义标签的情况下正确执行的操作)。
换句话说:我需要为每个数据点设置特定的标签,但在绘图轴刻度上只显示其中的几个,而不会丢失正确的分配。
【问题讨论】:
-
我无法理解您想要什么。当您实际上只想要数据点位置的标签时,为什么要出现新标签?这对我来说听起来很矛盾。
-
@michal-2am 我的回答回答了你的问题吗?
标签: python pandas matplotlib plot