gpt4 book ai didi

python - Pandas 在线绘制条形图

转载 作者:行者123 更新时间:2023-11-28 21:42:38 25 4
gpt4 key购买 nike

我正在尝试在同一张图上绘制条形图和直线。这是有效的,无效的。谁能解释一下为什么?

什么不起作用:

df = pd.DataFrame({'year':[2001,2002,2003,2004,2005], 'value':[100,200,300,400,500]})
df['value1']= df['value']*0.4
df['value2'] = df['value']*0.6
fig, ax = plt.subplots(figsize = (15,8))
df.plot(x = ['year'], y = ['value'], kind = 'line', ax = ax)
df.plot(x = ['year'], y= ['value1','value2'], kind = 'bar', ax = ax)

enter image description here

但不知何故,当我删除第一个图中的 x=['year'] 时它起作用了:

fig, ax = plt.subplots(figsize = (15,8))
df.plot(y = ['value'], kind = 'line', ax = ax)
df.plot(x = ['year'], y= ['value1','value2'], kind = 'bar', ax = ax)

enter image description here

最佳答案

主要问题是 kinds="bar" 在 x 轴的低端绘制条形图,(所以 2001 实际上是 0)而 kind="line" 根据给定的值绘制它。删除 x=["year"] 只是让它根据顺序绘制值(幸运的是它与您的数据精确匹配)。

可能有更好的方法,但我知道最快的方法是停止将年份视为数字。

df = pd.DataFrame({'year':[2001,2002,2003,2004,2005], 'value':[100,200,300,400,500]})
df['value1']= df['value']*0.4
df['value2'] = df['value']*0.6
df['year'] = df['year'].astype("string") # Let them be strings!
fig, ax = plt.subplots(figsize = (15,8))
df.plot(x = ['year'], y = ['value'], kind = 'line', ax = ax)
df.plot(x = ['year'], y= ['value1','value2'], kind = 'bar', ax = ax)

以这种方式处理年份是有道理的,因为无论如何您都将年份视为分类数据,并且字母顺序与数字顺序相匹配。

enter image description here

关于python - Pandas 在线绘制条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43418820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com