Python连接数据库使用matplotlib画柱形图

目录
  • 一、柱形图介绍
    • (1)介绍
    • (2)优点、缺点
    • (3)适用范围
  • 二、数据介绍
    • (1)数据构成
    • (2)数据选取
  • 三、python数据库连接配置以及数据提取设置
    • (1)调用库以及连接语法
    • (2)语法参数讲解
    • (3)数据提取设置
  • 四、全局变量配置
    • (1)字体画布配置
    • (2)标题、标签设置
  • 五、数据库数据画图
    • (1)画图函数调用并作出图形
    • (2)全代码

一、柱形图介绍

(1)介绍

柱状图(Histogram),也称条图(英文:bargraph)、长条图(英文:barchart)、条状图(Bar graph),是一种以长方形的长度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。柱状图亦可横向排列,或用多维方式表达。

(2)优点、缺点

优点:

  • ①便于用户理解大量数据以及数据相互之间的关系。
  • ②优点是让用户通过视觉化的符号,更加快速直观的读取原始数据。

缺点:

柱状图的局限在于只适用中小规模的数据集。

(3)适用范围

适用场合是二维数据集,用于比较一段时间内的数据变化

二、数据介绍

(1)数据构成

本次柱状图绘画数据是由数据库中的订单表(order)提供,其中表order含有订单编号(ORDER_ID)、订单日期(ORDER_DATE)、店铺名称(SITE)等二十一个列。

(2)数据选取

根据柱形图的定义以及适用范围,我们本次画图选用的数据是具有统计计数并且能够比较的数据,因此我们本次选择销售经理以及订单利润。

在Navicat中通过SQL语句统计出2019年各个销售经理所销售的利润。

SELECT MANAGER, SUM(PROFIT) as TotalProfit FROM orders where FY='2019' group by MANAGER

三、python数据库连接配置以及数据提取设置

(1)调用库以及连接语法

没有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='连接表名')

(2)语法参数讲解

调用库后通过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 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')

到此这篇关于Python连接数据库使用matplotlib画柱形图的文章就介绍到这了,更多相关Python matplotlib柱形图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python数据分析之 Matplotlib 饼图绘制

    前言: 饼状图是用来呈现一个数据系列中各项的大小与各项占项总和的百分比,Matplotlib 提供了plt.pie()方法绘制柱状图,语法格式如下: plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None,

  • python使用Matplotlib绘制多种常见图形

    目录 柱状图 水平绘制柱状图 多个柱状图 叠加型柱状图 散点图 气泡图 直方图 箱线图 添加文字描述 添加文字描述 方法二 多个图形描绘 subplots 使用Pandas 绘图 Matplotlib官网如果想了解更多可查看官网. import numpy as np import matplotlib.pyplot as plt %matplotlib inline #写了这个就可以不用写plt.show() plt.rcParams['font.sans-serif']=['SimHei']

  • Python + Tkinter连接本地MySQL数据库简单实现注册登录

    项目结构: 源代码: # -*- coding: utf-8 -*- """ @date:  2022/01/09 17:40 @author: Anker @python:v3.10 """   import tkinter as tk import tkinter.messagebox import pymysql   # 定义要执行的创建表的SQL语句 test_sql = """              

  • 教你利用python的matplotlib(pyplot)绘制折线图和柱状图

    目录 前言 一.折线图 二.柱状图 总结 前言 今天帮师兄赶在deadline之前画论文的图,现学现卖很是刺激,现把使用matplotlib的子库pyplot画折线图和柱状图的代码记录分享一下,方便大家参考,个人感觉pyplot真的蛮方便的,非常值得使用. 先看下官方对pyplot的描述:“Provides a MATLAB-like plotting framework.”.对,就是一个类似matlab的画图框架.就不多多说了,直接上代码吧: 一.折线图 代码: import matplotl

  • Python使用bar绘制堆积/带误差棒柱形图的实现

    本博文源于<python数据可视化>(黑马程序员编著).先讲解bar参数如何使用,然后分别演示堆积柱形图和带误差柱形图画法. bar参数 bar(x,height,width=0.8,bottom=None,align='center',data=None, tick_label=None,xerr=None,yerr=None,error_kw=None,**kwargs) 该函数常用参数如下: x 表示x的坐标值 height:表示柱形的高度 width:表示柱形的宽度,默认为0.8 bo

  • python连接clickhouse数据库的两种方式小结

    目录 python连接clickhouse数据库 主要针对clickhouse_driver的使用进行简要介绍 python将数据写入clickhouse python连接clickhouse数据库 在Python中获取系统信息的一个好办法是使用psutil这个第三方模块. 顾名思义,psutil = process and system utilities,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用. 主要针对clickhouse_driver的使用进行简要介绍 第一步: 通过pi

  • 如何利用Python连接MySQL数据库实现数据储存

    目录 介绍 Python连接MySQL实现数据储存 总结 介绍 MySQL是一个关系型数据库,MySQL由于性能高.成本低.可靠性好,已经成为最流行的开源数据库.最开始由瑞典的MySQL AB公司开发,后来被甲骨文公司(Oracle)收购. 如何利用Python连接MySQL数据库实现数据储存,下面我们将着重介绍. Python连接MySQL实现数据储存 首先我们需要准备Python的pymysql模块,MySQL数据库(这个自行网上找教学安装),Navicat Premium 15数据库工具(

  • Python数据分析之使用matplotlib绘制折线图、柱状图和柱线混合图

    目录 matplotlib介绍 matplotlib绘制折线图 matplotlib绘制柱状图 matplotlib绘制柱线混合图 总结 matplotlib介绍 Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 PyQt 和 wxPython. 安装Matplotlib库命令:在cmd命令窗口输入pip install matplotlib. matplotlib绘制折线图 1.绘

  • python绘制柱形图的方法

    本文实例为大家分享了python绘制柱形图的具体代码,供大家参考,具体内容如下 #柱形图 import pandas import numpy import matplotlib  from matplotlib import pyplot as plt #导入数据 data_columns=pandas.read_csv('D://Python projects//reference data//6.4//data.csv') #定义中文格式 font={'family':'MicroSoft

  • Python连接数据库使用matplotlib画柱形图

    目录 一.柱形图介绍 (1)介绍 (2)优点.缺点 (3)适用范围 二.数据介绍 (1)数据构成 (2)数据选取 三.python数据库连接配置以及数据提取设置 (1)调用库以及连接语法 (2)语法参数讲解 (3)数据提取设置 四.全局变量配置 (1)字体画布配置 (2)标题.标签设置 五.数据库数据画图 (1)画图函数调用并作出图形 (2)全代码 一.柱形图介绍 (1)介绍 柱状图(Histogram),也称条图(英文:bargraph).长条图(英文:barchart).条状图(Bar gr

  • Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法

    本文实例讲述了Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法.分享给大家供大家参考.具体如下: 看看下面的例子和效果吧 # -*- coding: utf-8 -*- from matplotlib.widgets import MultiCursor from pylab import figure, show, np t = np.arange(0.0, 2.0, 0.01) s1 = np.sin(2*np.pi*t) s2 = np.sin(4*np.pi*t

  • Python通过matplotlib画双层饼图及环形图简单示例

    (1) 饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一. 在python中常用matplotlib的pie来绘制,基本命令如下所示(python3.X版本): vals = [1, 2, 3, 4]#创建数据系列 fig, ax = plt.subplots()#创建子图 labels = 'A', 'B', 'C', 'D' colors = ['yellowgreen', 'gold', 'lightskyblue', '

  • Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】

    本文实例讲述了Python基于matplotlib画箱体图检验异常值操作.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 import pandas as pd import os import matplotlib.pyplot as plt data=pd.read_excel('catering_sale.xls',index_col='日期') plt.rcParams['font.sans-serif']=['SimHei']#正常

  • 解决python中用matplotlib画多幅图时出现图形部分重叠的问题

    1.解决方法:使用函数 tight_layout() 2.具体使用方法 import matplotlib.pyplot as plt fig = plt.figure() ''' 具体的画图程序 ''' fig.tight_layout() fig.tight_layout() 功能:使得子图横纵坐标更加紧凑,主要用于自动调整图区的大小以及间距,使所有的绘图及其标题.坐标轴标签等都可以不重叠的完整显示在画布上. 参数: Pad:用于设置绘图区边缘与画布边缘的距离大小 w_pad:用于设置绘图区

  • python使用Matplotlib画条形图

    本文实例为大家分享了python使用Matplotlib画条形图的具体代码,供大家参考,具体内容如下 数据 中国的四个直辖市分别为北京市.上海市.天津市和重庆市,其2017年上半年的GDP分别为12406.8亿.13908.57亿.9386.87亿.9143.64亿. 代码 # encoding:utf-8 import matplotlib.pyplot as plt # 构建数据 GDP = [12406.8,13908.57,9386.87,9143.64] # 中文乱码的处理 plt.r

  • python使用matplotlib画饼状图

    本文实例为大家分享了python使用matplotlib画饼状图的具体代码,供大家参考,具体内容如下 代码与详细注释 from matplotlib import pyplot as plt #调节图形大小,宽,高 plt.figure(figsize=(6,9)) #定义饼状图的标签,标签是列表 labels = [u'第一部分',u'第二部分',u'第三部分'] #每个标签占多大,会自动去算百分比 sizes = [60,30,10] colors = ['red','yellowgreen

  • python使用matplotlib画柱状图、散点图

    本文实例为大家分享了python使用matplotlib画柱状图.散点图的具体代码,供大家参考,具体内容如下 柱状图(plt.bar) 代码与注释 import numpy as np from matplotlib import pyplot as plt plt.figure(figsize=(9,6)) n = 8 X = np.arange(n)+1 #X是1,2,3,4,5,6,7,8,柱的个数 # numpy.random.uniform(low=0.0, high=1.0, siz

  • python matplotlib 画dataframe的时间序列图实例

    在python中经常会用到pandas来处理数据,最常用的数据类型是dataframe,但是有时候在dataframe有时间字段需要画时间序列图的时候会遇到一些问题,下面是我处理这个问题的一个小案例,希望可以帮到在坑里的小朋友哦,开个小玩笑. code as fallows: doc_list = [] doc_target = doc.iloc[:, 141:142] for i in doc.iloc[:, 3:4].values.tolist(): for j in i: doc_list

  • python matplotlib画盒图、子图解决坐标轴标签重叠的问题

    在使用matplotlib画图的时候将常会出现坐标轴的标签太长而出现重叠的现象,本文主要通过自身测过好用的解决办法进行展示,希望也能帮到大家,原图出现重叠现象例如图1: 代码为: data1=[[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765]] data

随机推荐