使用matplotlib绘制柱状图,matplotlib.pyplot画柱形图
本文主要介绍Python连接数据库使用matplotlib绘制柱形图,并通过实例介绍相关主题。有一定的知识参考价值,感兴趣的朋友可以参考一下。
00-1010I、柱形图简介(1)简介(2)优缺点(3)适用范围二、数据简介(1)数据组成(2)数据选择三、python数据库连接配置和数据提取设置(1)调用库和连接语法(2)语法参数解释(3)数据提取设置四、全局变量配置(1)
目录
一、柱形图介绍
直方图又称条形图、条形图、条形图,是一种以矩形的长度为变量的统计报表图形。一系列不同高度的竖条表示数据分布,用于比较两个或多个值(不同时间或不同条件下)。只有一个变量,通常用于较小的变量。直方图也可以水平排列或多维表达。
(1)介绍
优点:
便于用户理解大量数据以及它们之间的关系。优点是用户可以通过视觉符号更快速直观地阅读原始数据。缺点:
直方图的局限性在于只适用于中小规模的数据集。
(2)优点、缺点
适用的场合是二维数据集,用来比较一段时间内的数据变化。
(3)适用范围
二、数据介绍
这个直方图绘制数据是由数据库中的订单表(order)提供的,其中订单表包含订单号(ORDER_ID)、订单日期(ORDER_DATE)、店名(SITE)等21列。
(1)数据构成
根据柱形图的定义和适用范围,本次绘图我们选取的数据是有统计和比较的数据,所以这次选取了销售经理和订单利润。
在Navicat中,每个销售经理2019年的利润是用SQL语句统计的。
SELECT MANAGER,SUM(PROFIT)作为订单的总利润,其中FY=2019 group by MANAGER
(2)数据选取
三、python数据库连接配置以及数据提取设置
没有pymysql库,可以通过语句pip install pymysql安装。
导入pymysql
导入熊猫,因为pd #用于数据导入(pd.read_sql_query()执行sql语句以获得结果df)
Importplotlib.py plot作为PLT #用来画图(plt.plot()折线图,plt.bar()条形图,)
# 1.连接MySQL数据库3360以创建数据库连接
Conn=pymysql.connect(主机= IP ,端口=端口号,用户=用户名,密码=用户密码,db=连接表名)
(1)调用库以及连接语法
调用库后通过pymysql.
connect创建连接,连接参数如下:
- host:主机名,也可以存储的ip地址
- port:数据库端口号,一般的数据库端口号3306
- user:用户名
- password:用户密码
- db:数据库名称
(3)数据提取设置
连接数据库,在数据库中提取数据就涉及到数据库的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)
四、全局变量配置
(1)字体画布配置
此处的字体画布设置在使用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
(2)标题、标签设置
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呢????)
五、数据库数据画图
(1)画图函数调用并作出图形
通过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])
作出图形如图:
(2)全代码
import pymysqlimport 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)
到此这篇关于Python连接数据库使用matplotlib画柱形图的文章就介绍到这了,更多相关Python matplotlib柱形图内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。