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实现读取命令行参数的方法
May 22 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
Python socket实现的简单通信功能示例
Aug 21 Python
分析经典Python开发工程师面试题
Apr 08 Python
Python Flask框架模板操作实例分析
May 03 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
Python Gitlab Api 使用方法
Aug 28 Python
python性能测量工具cProfile使用解析
Sep 26 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
Python 操作SQLite数据库的示例
Oct 16 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性能优化的介绍
2013/06/20 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
js实现拖拽效果
2015/02/12 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
python PIL模块与随机生成中文验证码
2016/02/27 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Python检查ping终端的方法
2019/01/26 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
详解python播放音频的三种方法
2019/09/23 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
英国办公用品商店:Office Outlet
2018/04/04 全球购物
大学自我评价
2014/02/12 职场文书
继承权公证书范本
2015/01/23 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python