matplotlib将xticks设置为列,将标签设置为对应的索引

发布于 2021-01-29 14:59:57

对于matlpotlib来说我还很陌生,我发现刻度线定位器和标签令人困惑,所以请多多包涵。我发誓我已经搜寻了几个小时。

我有一个这样的数据框“框架”(相关列):

dayofweek   sla
weekday         
Mon     1   0.889734
Tue     2   0.895131
Wed     3   0.879747
Thu     4   0.935000
Fri     5   0.967742
Sat     6   0.852941
Sun     7   1.000000

其中,工作日名称是索引,而工作日编号是一列。此框架中没有日期时间对象。

我把这个变成了一个数字。

fig=plt.figure(figsize=(7,5))    
ax=plt.subplot(111)

我需要将x轴用作数值,因为我想稍后添加一个散点图,这对于字符串值是不可能的。

x_=frame.dayofweek.values
anbar=ax.bar(x_,y_an,width=0.8,color=an_c,label='angekommen')

这样可以 xticks是“
dayofweek”

所以基本上我希望我的xticks是“ dayofweek”列,而它们的标签是对应的索引。现在,如果我通过手动设置set_xticklabels

ax.set_xticklabels(frame.index)

标签从轴上的位置0开始。

在此处输入图片说明

我可以通过重新排列标签列表来解决此问题,但是应该有一种“正确”的方式来使用“定位器”或“格式化程序”,但是(请参阅上文)这对我来说很令人困惑。有人可以指出我如何使标签与其索引相对应吗?

关注者
0
被浏览
138
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    直接的解决方案是不仅设置xticklabel,还设置刻度线:

    ax.set_xticks(frame.dayofweek.values)
    ax.set_xticklabels(frame.index)
    

    使用FixedLocator和FixedFormatter可以完成相同的操作,

    ax.xaxis.set_major_locator(matplotlib.ticker.FixedLocator(frame.dayofweek.values))
    ax.xaxis.set_major_formatter(matplotlib.ticker.FixedFormatter(frame.index))
    

    但对于此简单任务而言似乎完全没有必要。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看