python中matplotlib条件背景颜色的实现


Posted in Python onSeptember 02, 2019

如何根据图表中没有的变量更改折线图的背景颜色?例如,如果我有以下数据帧:

import numpy as np
import pandas as pd

dates = pd.date_range('20000101', periods=800)
df = pd.DataFrame(index=dates)
df['A'] = np.cumsum(np.random.randn(800)) 
df['B'] = np.random.randint(-1,2,size=800)

如果我做df.A的折线图,如何根据该时间点'B'列的值更改背景颜色?

例如,如果在该日期B = 1,则该日期的背景为绿色。

如果B = 0,则该日期的背景应为黄色。

如果B = -1那么背景那个日期应该是红色的。

添加我最初考虑使用axvline的解决方法,但@jakevdp回答正是看起来因为不需要for循环:首先需要添加一个'i'列作为计数器,然后整个代码看起来像:

dates = pd.date_range('20000101', periods=800)
df = pd.DataFrame(index=dates)
df['A'] = np.cumsum(np.random.randn(800)) 
df['B'] = np.random.randint(-1,2,size=800)
df['i'] = range(1,801)

# getting the row where those values are true wit the 'i' value
zeros = df[df['B']== 0]['i'] 
pos_1 = df[df['B']==1]['i']
neg_1 = df[df['B']==-1]['i']

ax = df.A.plot()

for x in zeros:
 ax.axvline(df.index[x], color='y',linewidth=5,alpha=0.03)
for x in pos_1:
  ax.axvline(df.index[x], color='g',linewidth=5,alpha=0.03)
for x in neg_1:
  ax.axvline(df.index[x], color='r',linewidth=5,alpha=0.03)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
python字典get()方法用法分析
Apr 17 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
python制作一个桌面便签软件
Aug 09 Python
Python数据类型学习笔记
Jan 13 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
python安装本地whl的实例步骤
Oct 12 Python
PyTorch学习:动态图和静态图的例子
Jan 06 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 #Python
Python流程控制 if else实现解析
Sep 02 #Python
Python 变量的创建过程详解
Sep 02 #Python
python脚本之一键移动自定格式文件方法实例
Sep 02 #Python
Python中zip()函数的简单用法举例
Sep 02 #Python
Python在OpenCV里实现极坐标变换功能
Sep 02 #Python
Python 读取用户指令和格式化打印实现解析
Sep 02 #Python
You might like
提升PHP执行速度全攻略(下)
2006/10/09 PHP
PHP安全配置详细说明
2011/09/26 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
php服务器的系统详解
2019/10/12 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
js实现坦克大战游戏
2020/02/24 Javascript
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
python实现2014火车票查询代码分享
2014/01/10 Python
pandas值替换方法
2018/07/10 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
python3 pygame实现接小球游戏
2019/05/14 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
和平主题的演讲稿
2014/01/12 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
爱心募捐通知范文
2015/04/27 职场文书
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS