偏差 (Deviation)

面积图 (Area Chart)

通过对轴和线之间的区域进行着色,面积图不仅强调峰和谷,而且还强调高点和低点的持续时间。 高点持续时间越长,线下面积越大。

https://datawhalechina.github.io/pms50/#/chapter14/chapter14

导入所需要的库

import numpy as np              # 导入numpy库
import pandas as pd # 导入pandas库
import matplotlib as mpl # 导入matplotlib库
import matplotlib.pyplot as plt
import seaborn as sns # 导入seaborn库

设定图像各种属性

large = 22; med = 16; small = 12

params = {'axes.titlesize': large,    # 设置子图上的标题字体
'legend.fontsize': med, # 设置图例的字体
'figure.figsize': (16, 10), # 设置图像的画布
'axes.labelsize': med, # 设置标签的字体
'xtick.labelsize': med, # 设置x轴上的标尺的字体
'ytick.labelsize': med, # 设置整个画布的标题字体
'figure.titlesize': large}
#plt.rcParams.update(params) # 更新默认属性
plt.style.use('seaborn-whitegrid') # 设定整体风格
sns.set_style("white") # 设定整体背景风格

程序代码

# step1:导入数据
df = pd.read_csv("https://github.com/selva86/datasets/raw/master/economics.csv", parse_dates=['date']).head(100)
x = np.arange(df.shape[0]) # 创造一个和数据相同长度的序列
y_returns = (df.psavert.diff().fillna(0) / df.psavert.shift(1)).fillna(0) * 100 # 获取所需要的数据 # step2:绘制面积图
# 画布
plt.figure(figsize = (16, 10), # 画布尺寸
dpi = 80) # 分辨率
# 绘制面积图
plt.fill_between(x[1:], # 定义x坐标
y_returns[1:], # 定义第一条曲线的纵坐标
0, # 定义第二条曲线的纵坐标
where = y_returns[1:] >= 0, # 被填充的区域
facecolor = 'green', # 被填充的颜色(绿色)
interpolate = True, # 交叉点区域的填充
alpha = 0.7) # 被填充区域的透明度
plt.fill_between(x[1:], # 定义x坐标
y_returns[1:], # 定义第一条曲线的纵坐标
0, # 定义第二条曲线的纵坐标
where = y_returns[1:] <= 0, # 被填充的区域
facecolor = 'red', # 被填充的颜色(虹色)
interpolate = True, # 交叉点区域的填充
alpha = 0.7) # 被填充区域的透明度 # 添加注释
plt.annotate('Peak \n1975', # 文本内容
xy = (94.0, 21.0), # 注释的起始位置
xytext = (88.0, 28), # 文本的起始位置
bbox = dict (boxstyle = 'square', # 箱体的形态为方形
fc = 'firebrick'), # 箱体的颜色
arrowprops = dict(facecolor = 'steelblue', # 箭头的类型,箭头的长度,箭头的宽度
shrink = 0.05),
fontsize = 15, # 文本尺寸
color = 'white') # 文本颜色 # step3:装饰
# 横坐标
xtickvals = [str(m)[:3].upper() + '-' + str(y) for y,m in zip(df.date.dt.year, df.date.dt.month_name())] # 组合为形如 JUL-1967
plt.gca().set_xticks(x[::6]) # 获取当前子图并设置当前子图的x轴刻度
# x轴刻度标签
plt.gca().set_xticklabels(xtickvals[::6], # x轴刻度
rotation = 60, # 选择60度
fontdict = {'horizontalalignment': 'center', # 水平对齐参数
'verticalalignment': 'center_baseline'}) # 垂直对齐参数 # 设置当前y坐标轴的范围
plt.ylim(-35, 35)
# 设置当前x坐标轴的范围
plt.xlim(1, 100)
# 设置图像标题
plt.title('Month Economics Return %', # 标题名称
fontsize = 22) # 标题尺寸
# 设置y轴标题
plt.ylabel('Monthly returns %')
# 设置网格
plt.grid(alpha = 0.5)
plt.show() # 显示图像

fill_between()函数总结

matplotlib.pyplot.fill_between(xy1y2=0where=Noneinterpolate=Falsestep=None*data=None**kwargs)

填充两条水平曲线之间的区域。

曲线由点定义( x , y1 )和( x , y2 )这将创建一个或多个描述填充区域的多边形。

默认情况下,边直接连接给定点。使用 step 如果填充应为阶跃函数,即介于 x .

x : 数组(长度n)

定义曲线的节点的X坐标。

y1 : 数组(长度n)或标量

定义第一条曲线的节点的Y坐标。

y2 : 数组(长度n)或标量,可选,默认值:0

定义第二条曲线的节点的Y坐标。

where: bool数组(长度n),可选,默认值:无

定义 where 不填充某些水平区域。填充区域由坐标定义。 x[where] . 更准确地说,填充 x[i] 和 x[i+1] 如果 where[i] and where[i+1] . 注意,这个定义意味着 True 介于两者之间的值  价值观 在哪里? 不会导致填充。两侧 True 位置因相邻而未填满  价值观。

interpolate: 可选的布尔

只有当 where两条曲线相互交叉。

语义上, where 通常用于 y1 > y2 或类似的。默认情况下,定义填充区域的多边形节点将仅放置在 x数组。这样的多边形无法描述接近交集的上述语义。包含交叉点的X形截面仅被剪裁。

设置 interpolate到 True 将计算实际交叉点并将填充区域扩展到此点。

step : 'pre'、'post'、'mid',可选

定义 step 如果填充应为阶跃函数,即介于 x . 该值确定步骤的发生位置:

  • “pre”:Y值从 x 位置,即间隔 (x[i-1], x[i]] 具有价值 y[i] .
  • “post”:y值从每个 x 位置,即间隔 [x[i], x[i+1]) 具有价值 y[i] .
  • “mid”:步骤发生在 x 位置。

数据可视化实例(十四):面积图 (matplotlib,pandas)的更多相关文章

  1. 【Matplotlib】数据可视化实例分析

    数据可视化实例分析 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为要实现其功能用途而令 ...

  2. C语言库函数大全及应用实例十四

    原文:C语言库函数大全及应用实例十四                                       [编程资料]C语言库函数大全及应用实例十四 函数名: strset 功 能: 将一个串 ...

  3. 数据可视化实例(十七):包点图 (matplotlib,pandas)

    排序 (Ranking) 包点图 (Dot Plot) 包点图表传达了项目的排名顺序,并且由于它沿水平轴对齐,因此您可以更容易地看到点彼此之间的距离. https://datawhalechina.g ...

  4. 数据可视化实例(十六):有序条形图(matplotlib,pandas)

    排序 (Ranking) 棒棒糖图 (Lollipop Chart) 棒棒糖图表以一种视觉上令人愉悦的方式提供与有序条形图类似的目的. https://datawhalechina.github.io ...

  5. 数据可视化基础专题(八):Pandas基础(七) 数据清洗与预处理相关

    1.数据概览 第一步当然是把缺失的数据找出来, Pandas 找缺失数据可以使用 info() 这个方法(这里选用的数据源还是前面一篇文章所使用的 Excel ,小编这里简单的随机删除掉几个数据) i ...

  6. 数据可视化实例(十四):带标记的发散型棒棒糖图 (matplotlib,pandas)

    偏差 (Deviation) 带标记的发散型棒棒糖图 (Diverging Lollipop Chart with Markers) 带标记的棒棒糖图通过强调您想要引起注意的任何重要数据点并在图表中适 ...

  7. 数据可视化实例(十二): 发散型条形图 (matplotlib,pandas)

    https://datawhalechina.github.io/pms50/#/chapter10/chapter10 如果您想根据单个指标查看项目的变化情况,并可视化此差异的顺序和数量,那么散型条 ...

  8. 数据可视化实例(十一): 矩阵图(matplotlib,pandas)

    矩阵图 https://datawhalechina.github.io/pms50/#/chapter9/chapter9 导入所需要的库 import numpy as np # 导入numpy库 ...

  9. 数据可视化实例(十): 相关图(matplotlib,pandas)

    相关图 https://datawhalechina.github.io/pms50/#/chapter8/chapter8 导入所需要的库 import numpy as np # 导入numpy库 ...

随机推荐

  1. MongoDB 基础知识学习笔记

    注意:本文假设您已经安装好 MongoDB 数据库并启动它了. 连接 MongoDB.数据库操作.集合操作 连接 MongoDB mongo ip:port/dbName -u username -p ...

  2. 深入理解React:懒加载(lazy)实现原理

    目录 代码分割 React的懒加载 import() 原理 React.lazy 原理 Suspense 原理 参考 1.代码分割 (1)为什么要进行代码分割? 现在前端项目基本都采用打包技术,比如 ...

  3. 这一次搞懂Spring事务是如何传播的

    文章目录 前言 正文 事务切面的调用过程 事务的传播性概念 实例分析 总结 前言 上一篇分析了事务注解的解析过程,本质上是将事务封装为切面加入到AOP的执行链中,因此会调用到MethodIncepto ...

  4. 力扣:二叉树着色游戏(DFS详解)

    有两位极客玩家参与了一场「二叉树着色」的游戏.游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同. 游戏从「一号」玩家开始(「一号 ...

  5. 【原创】强撸基于 .NET 的 Redis Cluster 集群访问组件

    Hello 大家好,我是TANZAME,我们又见面了.今天我们来聊聊怎么手撸一个 Redis Cluster 集群客户端,纯手工有干货,您细品. 随着业务增长,线上环境的QPS暴增,自然而然将当前的单 ...

  6. redis概要学习

    redis 概要学习 redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Re ...

  7. Jmeter工具环境搭建

    Jmeter工具什么 1 多线程框架-支持多并发操作 2 用于对服务器模拟负载 3 支持web,数据库,FTP服务器系统的性能测试 4 开源,可二次定制开发 下载Java JDK 下载地址: http ...

  8. ASP.NET WebAPI框架解析第一篇

    ASP.NET WebAPI有两种寄宿模式,一种是WebHost,一种是SelfHost,为什么可以有两种模式的原因在于WebAPI有一个相对独立的消息处理管道,只要给这个消息管道传递一个封装好的对象 ...

  9. opencv c++访问某一区域

    int main(){ cv::Mat m1(,, CV_8UC1); for(int i=;i<m1.rows;++i) for(int j=;j<m1.cols;++j) m1.at& ...

  10. 十万同时在线用户,需要多少内存?——Newbe.Claptrap 框架水平扩展实验

    Newbe.Claptrap 项目是笔者正在构建以反应式.Actor模式和事件溯源为理论基础的一套服务端开发框架.本篇我们将来了解一下框架在水平扩展方面的能力. 前情提要 时隔许久,今日我们再次见面. ...