Python中如何实现画柱形图,具体方法是什么
Admin 2022-08-01 群英技术资讯 1164 次浏览
关于“Python中如何实现画柱形图,具体方法是什么”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。柱状图(Histogram),也称条图(英文:bargraph)、长条图(英文:barchart)、条状图(Bar graph),是一种以长方形的长度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。柱状图亦可横向排列,或用多维方式表达。
优点:
缺点:
柱状图的局限在于只适用中小规模的数据集。
适用场合是二维数据集,用于比较一段时间内的数据变化
本次柱状图绘画数据是由数据库中的订单表(order)提供,其中表order含有订单编号(ORDER_ID)、订单日期(ORDER_DATE)、店铺名称(SITE)等二十一个列。

根据柱形图的定义以及适用范围,我们本次画图选用的数据是具有统计计数并且能够比较的数据,因此我们本次选择销售经理以及订单利润。
在Navicat中通过SQL语句统计出2019年各个销售经理所销售的利润。
SELECT MANAGER, SUM(PROFIT) as TotalProfit FROM orders where FY='2019' group by MANAGER

没有pymysql库,可以通过语句pip install pymysql方式安装
import pymysql import pandas as pd # 用来做数据导入(pd.read_sql_query() 执行sql语句得到结果df) import matplotlib.pyplot as plt # 用来画图(plt.plot()折线图, plt.bar()柱状图,....) # 1. 连接MySQL数据库: 创建数据库连接 conn = pymysql.connect(host='ip',port=端口号,user='用户名',password='用户密码',db='连接表名')
调用库后通过pymysql.connect创建连接,连接参数如下:
连接数据库,在数据库中提取数据就涉及到数据库的SQL查询,此处也会有简单数据库在Python下的操作方法。
# 2 创建一个sql语句 # -- 统计每个销售经理2019年的利润总额 sql = r"SELECT MANAGER, SUM(PROFIT) as TotalProfit FROM orders where FY='2019' group by MANAGER" # 3 执行sql语句获取统计查询结果 df = pd.read_sql_query(sql, conn)
此处的字体画布设置在使用matplotlib画图时都可以放在库导入之后,当成固定的设置,其中的参数介绍在前面plot()函数画图时已经做出介绍详细请看前面的文章。
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文字体支持中文显示 plt.rcParams['axes.unicode_minus'] = False # 支持中文字体下显示'-'号 # figure 分辨率 800x600 plt.rcParams['figure.figsize'] = (6,4) # 8x6 inches plt.rcParams['figure.dpi'] = 100 # 100 dot per inch
title()是标题设置,ylael()设置y轴的标签,grid()网格线设置
#标签、标题设置
plt.title("每个销售经理2019年的利润总额")
plt.ylabel("利润额")
plt.xlabel('经理')
#网格线设置
plt.grid(axis='y')
网格线设置参数介绍:
plt.grid() # 显示网格线 1=True=默认显示;0=False=不显示 plt.grid(1) # 显示网格线 plt.grid(True) # 显示网格线 plt.grid(b=True) # 显示网格线 plt.grid(b=1) # 显示网格线 plt.grid(b=True, axis='x') #只显示x轴网格线 plt.grid(b=True, axis='y') #只显示y轴网格线 plt.grid(b=1, which='major') # 默认就是major,例如x轴最大值为3.5(这个值占比极小,不影响作图的话),这部分图像不会显示;若which='both'则显示;若设置为minor则不显示网格(其实这里有点不懂,,既然不显示,那为什么不直接设置为b=0呢????)
通过for循环将每个经理对应的值画入图像上:
#y轴值的显示
for index,value in df['TotalProfit'].items():
plt.text(index,value,round(value),ha='center',va='bottom',color='k')
#通过上述查询的结果进行x,y的带入
plt.bar(df['MANAGER'], df['TotalProfit'])
作出图形如图:

import pymysql
import pandas as pd # 用来做数据导入(pd.read_sql_query() 执行sql语句得到结果df)
import matplotlib.pyplot as plt # 用来画图(plt.plot()折线图, plt.bar()柱状图,....)
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文字体支持中文显示
plt.rcParams['axes.unicode_minus'] = False # 支持中文字体下显示'-'号
# figure 分辨率 800x600
plt.rcParams['figure.figsize'] = (6,4) # 8x6 inches
plt.rcParams['figure.dpi'] = 100 # 100 dot per inch
#建立连接
conn = pymysql.connect(host='localhost',port=3306,user='root',password='9812yang',db='mydb')
#设置查询语句
sql = r"SELECT MANAGER, SUM(PROFIT) as TotalProfit FROM orders where FY='2019' group by MANAGER"
#执行sql语句获取统计查询结果,并赋值
df = pd.read_sql_query(sql, conn)
#调用函数
plt.bar(df['MANAGER'], df['TotalProfit'])
#设置y轴的网格线
plt.grid(axis='y')
#设置标题
plt.title("每个销售经理2019年的利润总额")
#y轴标签
plt.ylabel("利润额")
#x轴标签
plt.xlabel("经理姓名")
#将对应数值写入柱形图
for index,value in df['TotalProfit'].items():
plt.text(index,value,round(value),ha='center',va='bottom',color='k')
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了python collections模块如何使用的技巧,小编觉得collections模块的使用是比较实用的,因此分享给大家参考,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获。
大家好,本篇文章主要讲的是python绘制堆叠条形图介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
这篇文章主要介绍了Python 如何实时向文件写入数据(附代码),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
本文主要向大家介绍Python中实现拼接的6种方法:1、加号法;2、逗号法;3、直接拼接法;4、格式化法;5、join函数法;6、多行字符串拼接法。详情请看本文。
这篇文章主要介绍了Python3时间转换之时间戳转换为指定格式的日期,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008