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 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
Python中强大的命令行库click入门教程
Dec 26 Python
python切片及sys.argv[]用法详解
May 25 Python
python实现反转部分单向链表
Sep 27 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
python自动化测试之如何解析excel文件
Jun 27 Python
浅谈python3中input输入的使用
Aug 02 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 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中print(),print_r(),echo()的区别详解
2014/12/01 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python中的jquery PyQuery库使用小结
2014/05/13 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
PyTorch基本数据类型(一)
2019/05/22 Python
python简单区块链模拟详解
2019/07/03 Python
python plotly绘制直方图实例详解
2019/07/22 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Django更新models数据库结构步骤
2020/04/01 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
2014年小学植树节活动方案
2014/03/02 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
《长征》教学反思
2014/04/27 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
党员转正申请报告
2015/05/15 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
爱的教育观后感
2015/06/17 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python
Python自动化爬取天眼查数据的实现
2021/06/15 Python