利用Matplotlib繪制折線圖、散點圖、柱狀圖、直方圖、餅圖的實例
一、折線圖
以折線的上升或下降來表示統(tǒng)計數(shù)量的增減變化的統(tǒng)計圖
特點:能夠顯示數(shù)據(jù)的變化趨勢,反映事物的變化情況(變化)
函數(shù):plt.plot(x, y)
import matplotlib.pyplot as plt
import random
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"] # 設置顯示中文字體
mpl.rcParams["axes.unicode_minus"] = False # 設置正常顯示符號
# 數(shù)據(jù)準備
x = range(24)
y = [random.uniform(13, 20) for i in x] # random.uniform():隨機生成13-20范圍內(nèi)的浮點數(shù)
plt.figure(figsize=(10, 5), dpi=80) # 創(chuàng)建畫布
plt.plot(x, y, color='y', linestyle='-',label='樟樹') # 繪制折線圖
x_ticks_label = ["{}:00".format(i) for i in x] # 構建x軸刻度標簽
y_ticks = range(40) # 構建y軸刻度
# 修改x,y軸坐標的刻度顯示
plt.xticks(x[::2], x_ticks_label[::2])
plt.yticks(y_ticks[10:20:1])
plt.grid(True, linestyle='-', alpha=0.9) # 添加網(wǎng)格
plt.legend(loc=0) # 顯示圖例
# 描述信息
plt.xlabel("時間")
plt.ylabel("溫度")
plt.title("24小時內(nèi)溫度變化圖", fontsize=18)
plt.savefig("./plot.jpg") # 保存至指定位置
plt.show() # 顯示圖像結果如下

二、散點圖
用兩組數(shù)據(jù)構成多個坐標點,考察坐標點的分布,判斷兩變量之間是否存在某種關聯(lián)或總結坐標點的分布模式
特點:判斷變量之間是否存在數(shù)量關聯(lián)趨勢,展示離群點(分布規(guī)律)
函數(shù):plt.scatter(x, y)
import matplotlib.pyplot as plt
import random
# 數(shù)據(jù)準備
x = range(100)
y = [random.uniform(13, 20) for i in x] # random.uniform():隨機生成13-20范圍內(nèi)的浮點數(shù)
plt.figure(figsize=(10, 5), dpi=80) # 創(chuàng)建畫布
plt.scatter(x, y, color='r', linestyle='-',label='樟樹') # 繪制折線圖
x_ticks_label = ["{}天".format(i) for i in x] # 構建x軸刻度標簽
y_ticks = range(25) # 構建y軸刻度
# 修改x,y軸坐標的刻度顯示
plt.xticks(x[::10], x_ticks_label[::10])
plt.yticks(y_ticks[10:22:2])
plt.grid(True, linestyle='-', alpha=0.9) # 添加網(wǎng)格
plt.legend(loc=0) # 顯示圖例
# 描述信息
plt.xlabel("時間/天")
plt.ylabel("溫度")
plt.title("24小時內(nèi)溫度變化圖", fontsize=18)
plt.savefig("./scatter.jpg") # 保存至指定位置
plt.show() # 顯示圖像結果如下

三、柱狀圖
排列在工作表的列或行中的數(shù)據(jù)可以繪制到柱狀圖中
特點:繪制連離散的數(shù)據(jù),能夠一眼看出各個數(shù)據(jù)的大小,比較數(shù)據(jù)之間的差別(統(tǒng)計/對比)
函數(shù):plt.bar(x, width, align='center', **kwargs)
- x:需要傳遞的數(shù)據(jù)
- width:柱狀圖的寬度
- align:每個柱狀圖的位置對齊方式
- **kwargs
- color:選擇柱狀圖的顏色
import matplotlib.pyplot as plt
import random
# 數(shù)據(jù)準備
x = range(0,10)
y = [random.randint(35, 45) for i in x] # random.uniform():隨機生成13-20范圍內(nèi)的浮點數(shù)
plt.figure(figsize=(10, 5), dpi=80) # 創(chuàng)建畫布
plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g']) # 繪制折線圖
x_ticks_label = ["21{}班".format(i) for i in x] # 構建x軸刻度標簽
y_ticks = range(55) # 構建y軸刻度
# 修改x,y軸坐標的刻度顯示
plt.xticks(x[::1], x_ticks_label[::1])
plt.yticks(y_ticks[0:55:5])
plt.grid(True, linestyle=':', alpha=0.3) # 添加網(wǎng)格
# 描述信息
plt.xlabel("班級")
plt.ylabel("人數(shù)")
plt.title("2021級各班人數(shù)柱狀圖", fontsize=18)
plt.savefig("./bar.jpg") # 保存至指定位置
plt.show() # 顯示圖像結果如下

四、直方圖
由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況, 一般用橫軸表示數(shù)據(jù)范圍,縱軸表示分布情況
特點:繪制連續(xù)性的數(shù)據(jù)展示一組或者多組數(shù)據(jù)的分布狀況(統(tǒng)計)
函數(shù):matplotlib.pyplot.hist(x, bins=None)
- x:需要傳遞的數(shù)據(jù)
- bins:組距
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
# 生成數(shù)據(jù)
np.random.seed(1) # 隨機數(shù)種子,用于生成隨機數(shù)
x = 4 + np.random.normal(0, 1.5, 200)
# numpy.random.normal(loc=0.0, scale=1.0, size=None) 為一個正態(tài)分布
# loc(float):均值,對應著這個分布的中心。loc=0說明這一個以y軸為對稱軸的正態(tài)分布
# scale(float):標準差,對應分布的寬度,scale越大越矮胖,scale越小,越瘦高
# size(int 或者整數(shù)元組):輸出的值賦在shape里,默認為None
# plot:
fig, ax = plt.subplots()
ax.hist(x, bins=8, linewidth=0.5, edgecolor="white")
ax.set(xlim=(0, 10), xticks=np.arange(1, 10),
ylim=(0, 56), yticks=np.linspace(0, 56, 9)) # 9個,包含0,間隔為7,7×8=56,即[0,7,14,21,28,35,42,49,56]
# np.arange():返回一個有終點和起點的固定步長的排列
# np.linspace(start, stop, num):用來創(chuàng)建等差數(shù)列,num為個數(shù)
plt.show()結果如下

五、餅圖
用于表示不同分類的占比情況,通過弧度大小來對比各種分類
特點:分類數(shù)據(jù)的占比情況(占比)
plt.pie(x, labels=,autopct=,colors)
- x:數(shù)量,自動算百分比
- labels:每部分名稱
- autopct:占比顯示指定%1.2f%%
- colors:每部分顏色
- startangle:開始繪制的角度
- shadow=True:陰影
import matplotlib.pyplot as plt
# 餅圖,其中切片將按逆時針順序排序和繪制:
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 20]
explode = (0, 0.1, 0, 0) # 僅分解第二個切片,間距為0.1
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.3f%%',colors=['r','y','c','g'],
shadow=True, startangle=90)
ax1.axis('equal') # 等長寬比確保餅被畫成圓
plt.show()結果如下

Matplotlib官網(wǎng):https://matplotlib.org/stable/
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python 3 實現(xiàn)定義跨模塊的全局變量和使用教程
這篇文章主要介紹了Python 3 實現(xiàn)定義跨模塊的全局變量和使用,本文通過實例代碼相結合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
python實現(xiàn)簡單的學生成績管理系統(tǒng)
這篇文章主要為大家詳細介紹了python實現(xiàn)簡單的學生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
Python環(huán)境的安裝以及PyCharm編輯器配置教程詳解
優(yōu)質(zhì)的教程可以讓我們少走很多彎路,這一點毋庸置疑。這篇文章主要為大家介紹了純凈Python環(huán)境的安裝以及PyCharm編輯器的配置,需要的可以參考一下2023-04-04
Python基于二分查找實現(xiàn)求整數(shù)平方根的方法
這篇文章主要介紹了Python基于二分查找實現(xiàn)求整數(shù)平方根的方法,涉及Python的二分查找算法與數(shù)學運算相關技巧,需要的朋友可以參考下2016-05-05
解決jupyter notebook 前面書寫后面內(nèi)容消失的問題
這篇文章主要介紹了解決jupyter notebook 前面書寫后面內(nèi)容消失的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
如何爬取通過ajax加載數(shù)據(jù)的網(wǎng)站
這篇文章主要介紹了如何爬取通過ajax加載數(shù)據(jù)的網(wǎng)站,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08

