如何在不使用matplotlib(仅使用pandas)的情况下使用不同类型的图(条形图和线图)绘制不同的列

时间:2019-04-21 22:56:47

标签: python python-3.x pandas

我有如下数据框:

   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

但是它看起来不是我想要的。 预先感谢!

enter image description here

2 个答案:

答案 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')

enter image description here

答案 1 :(得分:0)

ax=df.plot(figsize=(10,5),x="month",y="End",kind="bar")
df.plot(x='month', y='Start',kind="line",ax=ax)

对我来说很好。