[英]Pandas plot bar chart over line
我试图在同一张图上绘制一条条和一条线。 这是有效的和无效的。 有没有人请解释一下为什么?
什么不起作用:
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)
但是当我删除第一个图中的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)
主要问题是kind="line"
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)
以这种方式处理年份是有道理的,因为无论如何您都将年份视为分类数据,并且字母顺序与数字顺序相匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.