Python绘制组合图的示例


Posted in Python onSeptember 18, 2020

绘制组合图:

组合图就是将多个形状,组合到⼀个图形中,主要作⽤是节约作图的空间,节省读者的时间,从⽽提⾼
信息传达的效率。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def plot_combination1():
 sale = pd.read_excel('./data/每月目标销售额和实际销售额.xlsx',header=0,index_col=0)
 # 设置正常显示中文标签
 plt.rcParams['font.sans-serif'] = ['SimHei']
 # 正常显示负号
 plt.rcParams['axes.unicode_minus'] = False
 # 设置字体大小
 plt.rcParams.update({'font.size':16})

 # 提取数据
 x = np.arange(12)+1
 y1 = sale.目标销售额
 y2 = sale.实际销售额

 # 计算目标完成率
 y3 = y2/y1 # float
 # print(y3) 1月 1.120000 2月 0.887500 3月 1.118182 4月 1.150000
 """
 第一种方式:是⽤两个不同颜⾊的柱⼦,分别展示每个⽉的实际销售额和⽬标销售额,
 ⽤折线图展示⽬标完成率。
 左边的主坐标轴是柱形图对应的数据,右边的次坐标轴是折线图对应的
 数据,下边的横坐标轴表示细分的维度,⽐如时间、地区、渠道等。
 """
 plt.figure(figsize=(16,8))
 plt.subplot(111)

 # 柱形宽度
 bar_width = 0.35

 # 在主坐标轴绘制柱形图
 plt.bar(x,y1,bar_width,label='目标销售额')
 plt.bar(x+bar_width,y2,bar_width,label='实际销售额')

 # 设置坐标轴的取值范围,避免柱子过高而与图例重叠
 plt.ylim(0,max(y1.max(),y2.max())*1.2)

 # 设置图例
 plt.legend(loc='upper left')

 # 设置横坐标的标签
 plt.xticks(x)
 # plt.set_xticklabels(sale.index)

 # 在次坐标轴上绘制折线图
 plt.twinx()
 # ls:线的类型,lw:宽度,o:在顶点处实心圈
 plt.plot(x,y3,ls='-',lw=2,color='r',marker='o',label='目标完成率')

 # 设置次坐标轴的取值范围,避免折线图波动过大
 plt.ylim(0,1.35)

 # 设置图例
 plt.legend()

 # 定义显示百分号的函数
 def to_percent(number, position=0):
 return '%.f' % (number * 100) + '%'

 # 次坐标轴的标签显示百分号 FuncFormatter:自定义格式函数包
 from matplotlib.ticker import FuncFormatter
 plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))

 # 设置标题
 plt.title('\n每月销售目标达成情况\n',fontsize=36,loc='center',color = 'k')
 plt.show()



def plot_combination2():
 """
 第二种方式:是⽤两条不同颜⾊的折线,分别展示每个⽉的实际销售额和⽬标销售额,再⽤两种不同颜
 ⾊的柱形图展示实际与⽬标的差额,绿⾊代表完成⽬标,红⾊代表没有完成⽬标,
 这种组合图不需要⽤到两个纵坐标轴,
 """
 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt

 # 设置正常显示中⽂标签
 plt.rcParams['font.sans-serif'] = ['SimHei']

 # 正常显示负号
 plt.rcParams['axes.unicode_minus'] = False

 # 设置字体⼤⼩
 plt.rcParams.update({'font.size': 16})

 # 从 Excel ⽂件中读取数据,第⼀列设置为索引
 sale = pd.read_excel('./data/每月目标销售额和实际销售额.xlsx', index_col=0)
 # 提取数据
 # print('index')
 x = sale.index # Index(['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], dtype='object', name='month')
 # print(x)
 y1 = sale.目标销售额
 y2 = sale.实际销售额
 # 计算差额
 y3 = y2 - y1
 # 绘制折线图
 plt.figure(figsize=(16, 8))
 plt.subplot(111)
 plt.plot(x, y1, ls='-', lw=2, label='目标销售额')
 plt.plot(x, y2, ls='--', lw=2, label='实际销售额')
 # ⽤列表推导式定义柱⼦的颜⾊,绿⾊代表完成⽬标, 红⾊代表没有完成⽬标
 color = ['g' if i > 0 else '#dc5034' for i in y3]

 # 绘制柱形图
 plt.bar(x, y3, color=color, label='差额')
 # 设置图例
 plt.legend(loc='upper left')
 # 设置标题
 title = '\n每月销售目标达成情况\n'
 plt.title(title, fontsize=36, loc='center', color='k')
 plt.show()

if __name__ == '__main__':
 plot_combination1()
 plot_combination2()

绘制结果:

第一种 

Python绘制组合图的示例

第二种:

Python绘制组合图的示例

参考书目:

以上就是Python绘制组合图的示例的详细内容,更多关于Python绘制组合图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python交换变量
Sep 06 Python
Python实现处理管道的方法
Jun 04 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 Python
Python实现微信好友的数据分析
Dec 16 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
python中使用input()函数获取用户输入值方式
May 03 Python
python实现杨辉三角的几种方法代码实例
Mar 02 Python
Python音乐爬虫完美绕过反爬
Aug 30 Python
python多线程方法详解
Jan 18 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 Python
记一次Django响应超慢的解决过程
Sep 17 #Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 #Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 #Python
PyCharm中关于安装第三方包的三个建议
Sep 17 #Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 #Python
django跳转页面传参的实现
Sep 17 #Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 #Python
You might like
PHP中的加密功能
2006/10/09 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python获取邮件地址的方法
2015/07/10 Python
python使用代理ip访问网站的实例
2018/05/07 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
python将unicode和str互相转化的实现
2020/05/11 Python
Django如何使用redis作为缓存
2020/05/21 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
学生手册家长评语
2014/02/10 职场文书
辩论赛主持词
2014/03/18 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
python flappy bird小游戏分步实现流程
2022/02/15 Python