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插入排序算法的实现代码
Nov 21 Python
Python实现二分查找算法实例
May 26 Python
python3设计模式之简单工厂模式
Oct 17 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
pandas分区间,算频率的实例
Jul 04 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
PyTorch中的Variable变量详解
Jan 07 Python
Django集成MongoDB实现过程解析
Dec 01 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 Python
python如何用matplotlib创建三维图表
Jan 26 Python
使用python实现学生信息管理系统
Feb 25 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基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
给ECShop添加最新评论
2015/01/07 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
基于JQuery的密码强度验证代码
2010/03/01 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
jQuery带进度条全屏图片轮播特效代码分享
2020/06/28 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
JS中的防抖与节流及作用详解
2019/04/01 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Python----数据预处理代码实例
2019/03/20 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
优秀生推荐信范文
2013/11/28 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
建设投标担保书
2014/05/13 职场文书
新学期开学标语
2014/06/30 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
欢送领导祝酒词
2015/08/12 职场文书
高中运动会广播稿
2015/08/19 职场文书
话题作文之成长
2019/12/09 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android