Python 如何在matplotlib pyplot中更改图形颜色并绘制垂直着色矩形?
我有这个数据框:Python 如何在matplotlib pyplot中更改图形颜色并绘制垂直着色矩形?,python,matplotlib,Python,Matplotlib,我有这个数据框: A a_red green_bar date 2020-01-01 5 False False 2020-01-02 6 True False 2020-01-03 7 True False 2020-01-04 4 False True 2020-01-05 5 False True 2020-01-06 5 Fa
A a_red green_bar
date
2020-01-01 5 False False
2020-01-02 6 True False
2020-01-03 7 True False
2020-01-04 4 False True
2020-01-05 5 False True
2020-01-06 5 False False
从A列,我在图表中画了一条线:
我想添加两个功能:
import matplotlib.pyplot as plt
import pandas as pd
# create sample dataframe
import io
data = io.StringIO("""
date|A|a_red|green_bar
2020-01-01|5|False|False
2020-01-02|6|True|False
2020-01-03|7|True|False
2020-01-04|4|False|True
2020-01-05|5|False|True
2020-01-06|5|False|False""")
df = pd.read_csv(data, sep='|', parse_dates=['date'])
df = df.set_index('date')
# draw plot
with plt.style.context('seaborn'):
plt.plot(df['A'], color='blue')
plt.show()
非常感谢你的帮助,我真的很感激 可以通过逐行循环数据帧来创建所需的绘图。请注意,日期是绘图上的点,而直线位于两个连续日期之间。因此,最后一个日期不会有一行或一条线(为了缓解这种情况,您可以附加一个虚拟的最后一个日期)
导入matplotlib.pyplot作为plt
作为pd进口熊猫
输入io
#创建示例数据帧
数据=io.StringIO(“”)
日期| A | A |红色|绿色|条
2020-01-01 | 5 |假|假
2020-01-02 | 6 |对|错
2020-01-03 | 7 |对|错
2020-01-04 | 4 |假|真
2020-01-05 | 5 |假|真
2020-01-06 | 5 |假|假
df=pd.read_csv(数据,sep='|',parse_dates=['date'])
df=df.set_索引(“日期”)
#绘图
使用plt.style.context('seaborn'):
对于i,枚举(zip(df['a\u red'][:-1],df['green\u bar'][:-1])中的(a\u red,green\u bar):
plt.plot(df['A'][i:i+2],如果A是红色,则颜色为红色,否则颜色为蓝色)
如果为绿色,请单击工具栏:
plt.axvspan(测向指数[i],测向指数[i+1],颜色为绿色,α=0.2)
plt.show()
这太完美了,谢谢!最后一次约会对我来说没问题。我会将您的解决方案应用到我的大型数据帧。如果循环速度太慢,我可以先重新采样使其变小。