Python数据处理从零开始----第四章(可视化)①②堆积柱状图目录使用Matplotlib和Pandas轻松堆积图表
时间:2022-06-16
本文章向大家介绍Python数据处理从零开始----第四章(可视化)①②堆积柱状图目录使用Matplotlib和Pandas轻松堆积图表,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
===============================================
使用Matplotlib和Pandas轻松堆积图表
- 为何要绘制堆积图表
因为堆积图标可以表示多个变量或者分组内部的构成比
但是一般情况下使用Matplotlib创建堆积条形图可能很困难。因为堆叠图需要的数据不是典型的行列dataframe,经典的数据框行为观测值,列为属性,而需要绘制堆积图表时是其他形式,甚至可能不是数据框而是多个series。
- 绘制只有两个图层的叠加图
# -*- coding: utf-8 -*-
"""
Created on Sat Dec 1 03:03:23 2018
@author: czh
"""
%clear
%reset -f
# In[*]
import numpy as np
import matplotlib.pyplot as plt
# In[*]
N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
menStd = (2, 3, 4, 1, 2)
womenStd = (3, 5, 2, 3, 3)
ind = np.arange(N) # the x locations for the groups
width = 0.35 # the width of the bars: can also be len(x) sequence
p1 = plt.bar(ind, menMeans, width, yerr=menStd)
p2 = plt.bar(ind, womenMeans, width,
bottom=menMeans, yerr=womenStd)
plt.ylabel('Scores')
plt.title('Scores by group and gender')
plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
plt.yticks(np.arange(0, 81, 10))
plt.legend((p1[0], p2[0]), ('Men', 'Women'))
plt.show()
- 绘制三个图层的叠加图
下面是一个示例数据框,数据以列为单位。 在这种情况下,我们要创建一个堆积图,使用Year列作为x轴刻度线,Month列作为图层,Value列作为每个月的高度。
# In[*]
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
data = [[2000, 2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002],
['Jan', 'Feb', 'Mar', 'Jan', 'Feb', 'Mar', 'Jan', 'Feb', 'Mar'],
[1, 2, 3, 4, 5, 6, 7, 8, 9]]
rows = list(zip(data[0], data[1], data[2]))
headers = ['Year', 'Month', 'Value']
df = pd.DataFrame(rows, columns=headers)
df
# In[*]
fig, ax = plt.subplots(figsize=(10,7))
months = df['Month'].drop_duplicates()
margin_bottom = np.zeros(len(df['Year'].drop_duplicates()))
colors = ["#006D2C", "#31A354","#74C476"]
for num, month in enumerate(months):
values = list(df[df['Month'] == month].loc[:, 'Value'])
df[df['Month'] == month].plot.bar(x='Year',y='Value', ax=ax, stacked=True,
bottom = margin_bottom, color=colors[num], label=month)
margin_bottom += values
plt.show()
- 使用Pivot
虽然上述方法效果很好,但必须有更好的方法。在这里Pandas可能更好的解决该问题里。pivot函数接受索引的参数(x轴和Y轴),类似于R语言中的整理转置reshape或者cast函数。最终结果是一个新的数据框。
pivot_df = df.pivot(index='Year', columns='Month', values='Value')
pivot_df
#Note: .loc[:,['Jan','Feb', 'Mar']] is used here to rearrange the layer ordering
pivot_df.loc[:,['Jan','Feb', 'Mar']].plot.bar(stacked=True, color=colors, figsize=(10,7))
image.png
- SOA十大设计原则
- 中国人民大学文继荣:大数据的经验主义解释
- 检查Python对象
- 分布式监控系统Zabbix-3.0.3-完整安装记录(6)-微信报警部署
- Android 命名规范 (提高代码可以读性)
- Msdn 杂志 asp.net ajax 文章汇集
- 分布式监控系统Zabbix-3.0.3-完整安装记录-新报微信报警(企业微信)
- 测试网站页面网速的一个简单Python脚本
- 框架页面尽可以这么用(后置代码中控制框架)
- 微信小程序「学科排名」发布了
- Nginx 负载均衡的Cache缓存批量清理的操作记录
- DotNet软件开发框架
- Nginx通过https方式反向代理的简单实现
- 再论IBatisNet + Castle进行项目的开发
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PyTorch版CenterNet数据加载解析
- WPF 使用 HandyControl 给 ListView 添加漂亮的表头效果
- kali2020 忘记密码
- 低比特量化之DoreFa-Net理论与实践
- 不用数组求多个数的最小值
- 小程序 Tip | 文档、环境、开发工具界面与特性
- 大佬的思路就是不一样,这是我见过最简洁又清晰的SSM框架整合
- SQL Server重置自增的值为0
- 被经理邀请去“爬山”,只是因为我写错了一条SQL语句?
- Maven环境配置-必会
- Centos7中Docker安装RabbitMQ
- 又陷入知识盲区了,面试被问Redis事务,我差点脸都“绿”了
- Mybatis中#{}与${}的区别
- POI合并单元格
- Centos7.x安装Docker