我有如下数据框:
month start end
0 2018-1 1000 0
1 2018-2 1100 0.1
2 2018-3 1400 0.3
3 2018-4 700 -0.5
如果我只想在同一张图中使用pandas plot函数来绘制带有线条的“开始”列和带有条形的“结束”列(x轴应为月),该怎么办? + 对于条形图,最好在图表的末尾= 0处有一条黑色的水平线,并用彩色编码的条形,以使正收益为绿色,负收益为红色。
我开始尝试
ax = df.plot(figsize=(10,5), x='month', y='start')
df.plot(figsize=(10,5), x='month', y='end', kind='bar', ax=ax)
ax
pass
但是它看起来不是我想要的。 预先感谢!
答案 0 :(得分:2)
IIUC,您需要这样的东西。如何有条件地对条进行着色已取自here。我从剪贴板中提取了您在问题中提供的数据
import pandas as pd
df = pd.read_clipboard()
df['positive'] = df['end'] > 0
ax = df.plot(figsize=(10,5), x='month', y='start')
ax1 = df.plot(figsize=(10,5), x='month', y='end', kind='bar', color=df.positive.map({True: 'g', False: 'r'}),
ax=ax, secondary_y=True)
ax1.plot([0, len(df['end'])], [0, 0], color='black')
答案 1 :(得分:0)
ax=df.plot(figsize=(10,5),x="month",y="End",kind="bar")
df.plot(x='month', y='Start',kind="line",ax=ax)
对我来说很好。