網(wǎng)站首頁 編程語言 正文
一、柱形圖介紹
(1)介紹
柱狀圖(Histogram),也稱條圖(英文:bargraph)、長條圖(英文:barchart)、條狀圖(Bar graph),是一種以長方形的長度為變量的表達(dá)圖形的統(tǒng)計報告圖,由一系列高度不等的縱向條紋表示數(shù)據(jù)分布的情況,用來比較兩個或以上的價值(不同時間或者不同條件),只有一個變量,通常利用于較小的數(shù)據(jù)集分析。柱狀圖亦可橫向排列,或用多維方式表達(dá)。
(2)優(yōu)點、缺點
優(yōu)點:
- ①便于用戶理解大量數(shù)據(jù)以及數(shù)據(jù)相互之間的關(guān)系。
- ②優(yōu)點是讓用戶通過視覺化的符號,更加快速直觀的讀取原始數(shù)據(jù)。
缺點:
柱狀圖的局限在于只適用中小規(guī)模的數(shù)據(jù)集。
(3)適用范圍
適用場合是二維數(shù)據(jù)集,用于比較一段時間內(nèi)的數(shù)據(jù)變化
二、數(shù)據(jù)介紹
(1)數(shù)據(jù)構(gòu)成
本次柱狀圖繪畫數(shù)據(jù)是由數(shù)據(jù)庫中的訂單表(order)提供,其中表order含有訂單編號(ORDER_ID)、訂單日期(ORDER_DATE)、店鋪名稱(SITE)等二十一個列。
(2)數(shù)據(jù)選取
根據(jù)柱形圖的定義以及適用范圍,我們本次畫圖選用的數(shù)據(jù)是具有統(tǒng)計計數(shù)并且能夠比較的數(shù)據(jù),因此我們本次選擇銷售經(jīng)理以及訂單利潤。
在Navicat中通過SQL語句統(tǒng)計出2019年各個銷售經(jīng)理所銷售的利潤。
SELECT MANAGER, SUM(PROFIT) as TotalProfit FROM orders where FY='2019' group by MANAGER
三、python數(shù)據(jù)庫連接配置以及數(shù)據(jù)提取設(shè)置
(1)調(diào)用庫以及連接語法
沒有pymysql庫,可以通過語句pip install pymysql方式安裝
import pymysql
import pandas as pd # 用來做數(shù)據(jù)導(dǎo)入(pd.read_sql_query() 執(zhí)行sql語句得到結(jié)果df)
import matplotlib.pyplot as plt # 用來畫圖(plt.plot()折線圖, plt.bar()柱狀圖,....)
# 1. 連接MySQL數(shù)據(jù)庫: 創(chuàng)建數(shù)據(jù)庫連接
conn = pymysql.connect(host='ip',port=端口號,user='用戶名',password='用戶密碼',db='連接表名')
(2)語法參數(shù)講解
調(diào)用庫后通過pymysql.connect創(chuàng)建連接,連接參數(shù)如下:
- host:主機名,也可以存儲的ip地址
- port:數(shù)據(jù)庫端口號,一般的數(shù)據(jù)庫端口號3306
- user:用戶名
- password:用戶密碼
- db:數(shù)據(jù)庫名稱
(3)數(shù)據(jù)提取設(shè)置
連接數(shù)據(jù)庫,在數(shù)據(jù)庫中提取數(shù)據(jù)就涉及到數(shù)據(jù)庫的SQL查詢,此處也會有簡單數(shù)據(jù)庫在Python下的操作方法。
# 2 創(chuàng)建一個sql語句
# -- 統(tǒng)計每個銷售經(jīng)理2019年的利潤總額
sql = r"SELECT MANAGER, SUM(PROFIT) as TotalProfit FROM orders where FY='2019' group by MANAGER"
# 3 執(zhí)行sql語句獲取統(tǒng)計查詢結(jié)果
df = pd.read_sql_query(sql, conn)
四、全局變量配置
(1)字體畫布配置
此處的字體畫布設(shè)置在使用matplotlib畫圖時都可以放在庫導(dǎo)入之后,當(dāng)成固定的設(shè)置,其中的參數(shù)介紹在前面plot()函數(shù)畫圖時已經(jīng)做出介紹詳細(xì)請看前面的文章。
plt.rcParams['font.sans-serif'] = 'SimHei' # 設(shè)置中文字體支持中文顯示
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)標(biāo)題、標(biāo)簽設(shè)置
title()是標(biāo)題設(shè)置,ylael()設(shè)置y軸的標(biāo)簽,grid()網(wǎng)格線設(shè)置
#標(biāo)簽、標(biāo)題設(shè)置
plt.title("每個銷售經(jīng)理2019年的利潤總額")
plt.ylabel("利潤額")
plt.xlabel('經(jīng)理')
#網(wǎng)格線設(shè)置
plt.grid(axis='y')
網(wǎng)格線設(shè)置參數(shù)介紹:
plt.grid() # 顯示網(wǎng)格線 1=True=默認(rèn)顯示;0=False=不顯示
plt.grid(1) # 顯示網(wǎng)格線
plt.grid(True) # 顯示網(wǎng)格線
plt.grid(b=True) # 顯示網(wǎng)格線
plt.grid(b=1) # 顯示網(wǎng)格線
plt.grid(b=True, axis='x') #只顯示x軸網(wǎng)格線
plt.grid(b=True, axis='y') #只顯示y軸網(wǎng)格線
plt.grid(b=1, which='major') # 默認(rèn)就是major,例如x軸最大值為3.5(這個值占比極小,不影響作圖的話),這部分圖像不會顯示;若which='both'則顯示;若設(shè)置為minor則不顯示網(wǎng)格(其實這里有點不懂,,既然不顯示,那為什么不直接設(shè)置為b=0呢????)
五、數(shù)據(jù)庫數(shù)據(jù)畫圖
(1)畫圖函數(shù)調(diào)用并作出圖形
通過for循環(huán)將每個經(jīng)理對應(yīng)的值畫入圖像上:
#y軸值的顯示
for index,value in df['TotalProfit'].items():
plt.text(index,value,round(value),ha='center',va='bottom',color='k')
#通過上述查詢的結(jié)果進(jìn)行x,y的帶入
plt.bar(df['MANAGER'], df['TotalProfit'])
作出圖形如圖:
(2)全代碼
import pymysql
import pandas as pd # 用來做數(shù)據(jù)導(dǎo)入(pd.read_sql_query() 執(zhí)行sql語句得到結(jié)果df)
import matplotlib.pyplot as plt # 用來畫圖(plt.plot()折線圖, plt.bar()柱狀圖,....)
plt.rcParams['font.sans-serif'] = 'SimHei' # 設(shè)置中文字體支持中文顯示
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')
#設(shè)置查詢語句
sql = r"SELECT MANAGER, SUM(PROFIT) as TotalProfit FROM orders where FY='2019' group by MANAGER"
#執(zhí)行sql語句獲取統(tǒng)計查詢結(jié)果,并賦值
df = pd.read_sql_query(sql, conn)
#調(diào)用函數(shù)
plt.bar(df['MANAGER'], df['TotalProfit'])
#設(shè)置y軸的網(wǎng)格線
plt.grid(axis='y')
#設(shè)置標(biāo)題
plt.title("每個銷售經(jīng)理2019年的利潤總額")
#y軸標(biāo)簽
plt.ylabel("利潤額")
#x軸標(biāo)簽
plt.xlabel("經(jīng)理姓名")
#將對應(yīng)數(shù)值寫入柱形圖
for index,value in df['TotalProfit'].items():
plt.text(index,value,round(value),ha='center',va='bottom',color='k')
原文鏈接:https://blog.csdn.net/Sheenky/article/details/125043265
相關(guān)推薦
- 2022-04-08 c++11中std::move函數(shù)的使用_C 語言
- 2022-04-08 深入理解Golang的反射reflect示例_Golang
- 2022-01-21 有了 IP 地址,為什么還要用 MAC 地址?
- 2021-12-28 Android中實現(xiàn)視差滾動示例介紹_Android
- 2022-08-15 常見哈希算法、Hmac算法和BouncyCastle
- 2022-08-12 Windows?Server?修改遠(yuǎn)程桌面端口的實現(xiàn)_win服務(wù)器
- 2023-03-23 React?Native中WebView與html雙向通信遇到的坑_React
- 2022-08-06 詳解Android中motion_toast的使用_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支