gpt4 book ai didi

Python Matplotlib X轴标签双轴与数据框

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:24 24 4
gpt4 key购买 nike

我使用 matplotlib 绘制了双轴条形图和线图。我将数据作为数据框读取,

[WEEK       SIGNUPS APPLICATIONS    PRECOURSE_WORK  QUALIFIED   ENROLLED    SPEND
2019-10-07 5674 2938 2220 106 2 77581.67
2019-10-14 4538 2225 2309 567 204 61258.08
2019-10-21 3865 1997 1801 121 39 53700.58
2019-10-28 3559 1886 1641 162 39 53543.28
2019-11-04 3782 1946 1980 190 109 49495.64
2019-11-11 4033 2035 1568 118 109 49952.17
2019-11-18 3999 2009 1537 83 77 58545.72
2019-11-25 6170 3322 1660 110 61 52332.4
2019-12-02 5189 2658 7041 73 30 56727.55
2019-12-09 4631 2497 7904 174 116 60977.49
2019-12-16 4935 2501 3492 108 82 68179.54
2019-12-23 5289 2603 1983 80 38 76956.81
2019-12-30 5843 3037 2150 90 80 76246.14
2020-01-06 4194 1930 1619 74 57 46114.68]

我的代码可以运行并生成一个图表(如下) Dual Axis spend graph

这是我的代码

import matplotlib.pyplot as plt
from pylab import rcParams
from matplotlib import style
style.use('seaborn-paper')
#print(plt.style.available)
rcParams['figure.figsize'] = 20, 10
#plt.xticks(df[['WEEK']])
ax = df[['SPEND']].plot(kind='bar', color = 'lightblue')
ax.set_ylabel("Spend",color="blue",fontsize=20)
ax.set_xlabel('Weeks',color="blue",fontsize=20)
ax2 = ax.twinx()
ax2.plot(df[['SIGNUPS','APPLICATIONS','ENROLLED']].values, linestyle='-', marker='o', linewidth=4.0)
fmt = '${x:,.0f}'
tick = mtick.StrMethodFormatter(fmt)
ax.yaxis.set_major_formatter(tick)

当我取消注释行 plt.xticks(df[['WEEK']]) 时,出现以下错误

ConversionError Failed to convert value(s) to axis unit.

谁能帮帮我吗?

最佳答案

plt.xticks期望指定刻度位置以及可选的标签,来自 docs签名是

xticks(ticks, [labels], **kwargs)

所以当你这样做时

plt.xticks(df[['WEEK']])

它尝试将 'WEEK' 列中的日期解释为刻度的位置。你想做的是使用 plt.set_xticklabels它期望只指定标签,即

plt.set_xticklabels(df[['WEEK']])
# or
plt.set_xticklabels(df[['WEEK']].values)

尽管您可能还需要手动将转换为字符串,具体取决于它们的定义方式。

关于Python Matplotlib X轴标签双轴与数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59689903/

24 4 0