利用Matplotlib繪制折線圖、散點(diǎn)圖、柱狀圖、直方圖、餅圖的實(shí)例
一、折線圖
以折線的上升或下降來(lái)表示統(tǒng)計(jì)數(shù)量的增減變化的統(tǒng)計(jì)圖
特點(diǎn):能夠顯示數(shù)據(jù)的變化趨勢(shì),反映事物的變化情況(變化)
函數(shù):plt.plot(x, y)
import matplotlib.pyplot as plt import random from pylab import mpl mpl.rcParams["font.sans-serif"] = ["SimHei"] # 設(shè)置顯示中文字體 mpl.rcParams["axes.unicode_minus"] = False # 設(shè)置正常顯示符號(hào) # 數(shù)據(jù)準(zhǔn)備 x = range(24) y = [random.uniform(13, 20) for i in x] # random.uniform():隨機(jī)生成13-20范圍內(nèi)的浮點(diǎn)數(shù) plt.figure(figsize=(10, 5), dpi=80) # 創(chuàng)建畫布 plt.plot(x, y, color='y', linestyle='-',label='樟樹(shù)') # 繪制折線圖 x_ticks_label = ["{}:00".format(i) for i in x] # 構(gòu)建x軸刻度標(biāo)簽 y_ticks = range(40) # 構(gòu)建y軸刻度 # 修改x,y軸坐標(biāo)的刻度顯示 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("時(shí)間") plt.ylabel("溫度") plt.title("24小時(shí)內(nèi)溫度變化圖", fontsize=18) plt.savefig("./plot.jpg") # 保存至指定位置 plt.show() # 顯示圖像
結(jié)果如下
二、散點(diǎn)圖
用兩組數(shù)據(jù)構(gòu)成多個(gè)坐標(biāo)點(diǎn),考察坐標(biāo)點(diǎn)的分布,判斷兩變量之間是否存在某種關(guān)聯(lián)或總結(jié)坐標(biāo)點(diǎn)的分布模式
特點(diǎn):判斷變量之間是否存在數(shù)量關(guān)聯(lián)趨勢(shì),展示離群點(diǎn)(分布規(guī)律)
函數(shù):plt.scatter(x, y)
import matplotlib.pyplot as plt import random # 數(shù)據(jù)準(zhǔn)備 x = range(100) y = [random.uniform(13, 20) for i in x] # random.uniform():隨機(jī)生成13-20范圍內(nèi)的浮點(diǎn)數(shù) plt.figure(figsize=(10, 5), dpi=80) # 創(chuàng)建畫布 plt.scatter(x, y, color='r', linestyle='-',label='樟樹(shù)') # 繪制折線圖 x_ticks_label = ["{}天".format(i) for i in x] # 構(gòu)建x軸刻度標(biāo)簽 y_ticks = range(25) # 構(gòu)建y軸刻度 # 修改x,y軸坐標(biāo)的刻度顯示 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("時(shí)間/天") plt.ylabel("溫度") plt.title("24小時(shí)內(nèi)溫度變化圖", fontsize=18) plt.savefig("./scatter.jpg") # 保存至指定位置 plt.show() # 顯示圖像
結(jié)果如下
三、柱狀圖
排列在工作表的列或行中的數(shù)據(jù)可以繪制到柱狀圖中
特點(diǎn):繪制連離散的數(shù)據(jù),能夠一眼看出各個(gè)數(shù)據(jù)的大小,比較數(shù)據(jù)之間的差別(統(tǒng)計(jì)/對(duì)比)
函數(shù):plt.bar(x, width, align='center', **kwargs)
- x:需要傳遞的數(shù)據(jù)
- width:柱狀圖的寬度
- align:每個(gè)柱狀圖的位置對(duì)齊方式
- **kwargs
- color:選擇柱狀圖的顏色
import matplotlib.pyplot as plt import random # 數(shù)據(jù)準(zhǔn)備 x = range(0,10) y = [random.randint(35, 45) for i in x] # random.uniform():隨機(jī)生成13-20范圍內(nèi)的浮點(diǎn)數(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] # 構(gòu)建x軸刻度標(biāo)簽 y_ticks = range(55) # 構(gòu)建y軸刻度 # 修改x,y軸坐標(biāo)的刻度顯示 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("班級(jí)") plt.ylabel("人數(shù)") plt.title("2021級(jí)各班人數(shù)柱狀圖", fontsize=18) plt.savefig("./bar.jpg") # 保存至指定位置 plt.show() # 顯示圖像
結(jié)果如下
四、直方圖
由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況, 一般用橫軸表示數(shù)據(jù)范圍,縱軸表示分布情況
特點(diǎn):繪制連續(xù)性的數(shù)據(jù)展示一組或者多組數(shù)據(jù)的分布狀況(統(tǒng)計(jì))
函數(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) # 隨機(jī)數(shù)種子,用于生成隨機(jī)數(shù) x = 4 + np.random.normal(0, 1.5, 200) # numpy.random.normal(loc=0.0, scale=1.0, size=None) 為一個(gè)正態(tài)分布 # loc(float):均值,對(duì)應(yīng)著這個(gè)分布的中心。loc=0說(shuō)明這一個(gè)以y軸為對(duì)稱軸的正態(tài)分布 # scale(float):標(biāo)準(zhǔn)差,對(duì)應(yīng)分布的寬度,scale越大越矮胖,scale越小,越瘦高 # size(int 或者整數(shù)元組):輸出的值賦在shape里,默認(rèn)為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個(gè),包含0,間隔為7,7×8=56,即[0,7,14,21,28,35,42,49,56] # np.arange():返回一個(gè)有終點(diǎn)和起點(diǎn)的固定步長(zhǎng)的排列 # np.linspace(start, stop, num):用來(lái)創(chuàng)建等差數(shù)列,num為個(gè)數(shù) plt.show()
結(jié)果如下
五、餅圖
用于表示不同分類的占比情況,通過(guò)弧度大小來(lái)對(duì)比各種分類
特點(diǎn):分類數(shù)據(jù)的占比情況(占比)
plt.pie(x, labels=,autopct=,colors)
- x:數(shù)量,自動(dòng)算百分比
- labels:每部分名稱
- autopct:占比顯示指定%1.2f%%
- colors:每部分顏色
- startangle:開(kāi)始繪制的角度
- shadow=True:陰影
import matplotlib.pyplot as plt # 餅圖,其中切片將按逆時(shí)針順序排序和繪制: labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' sizes = [15, 30, 45, 20] explode = (0, 0.1, 0, 0) # 僅分解第二個(gè)切片,間距為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') # 等長(zhǎng)寬比確保餅被畫成圓 plt.show()
結(jié)果如下
Matplotlib官網(wǎng):https://matplotlib.org/stable/
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 3 實(shí)現(xiàn)定義跨模塊的全局變量和使用教程
這篇文章主要介紹了Python 3 實(shí)現(xiàn)定義跨模塊的全局變量和使用,本文通過(guò)實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Python環(huán)境的安裝以及PyCharm編輯器配置教程詳解
優(yōu)質(zhì)的教程可以讓我們少走很多彎路,這一點(diǎn)毋庸置疑。這篇文章主要為大家介紹了純凈Python環(huán)境的安裝以及PyCharm編輯器的配置,需要的可以參考一下2023-04-04Python基于二分查找實(shí)現(xiàn)求整數(shù)平方根的方法
這篇文章主要介紹了Python基于二分查找實(shí)現(xiàn)求整數(shù)平方根的方法,涉及Python的二分查找算法與數(shù)學(xué)運(yùn)算相關(guān)技巧,需要的朋友可以參考下2016-05-05解決jupyter notebook 前面書寫后面內(nèi)容消失的問(wèn)題
這篇文章主要介紹了解決jupyter notebook 前面書寫后面內(nèi)容消失的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04python中的十大%占位符對(duì)應(yīng)的格式化的使用方法
本文主要介紹了python中的十大%占位符對(duì)應(yīng)的格式化的使用方法,它可以很好的幫助我們解決一些字符串格式化的問(wèn)題, 文中通過(guò)示例代碼介紹的非常詳細(xì),感興趣的小伙伴們可以參考一下2022-01-01如何爬取通過(guò)ajax加載數(shù)據(jù)的網(wǎng)站
這篇文章主要介紹了如何爬取通過(guò)ajax加載數(shù)據(jù)的網(wǎng)站,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08關(guān)于python安裝第三方庫(kù)的問(wèn)題與解決方案
Python開(kāi)發(fā)中經(jīng)常遇到第三方庫(kù)安裝困難的問(wèn)題,速度慢可以使用國(guó)內(nèi)鏡像如清華鏡像加速,若遇到wheel錯(cuò)誤,可以手動(dòng)下載whl文件進(jìn)行安裝,對(duì)于找不到的包,可以嘗試在Python的官方包發(fā)布網(wǎng)站上進(jìn)行搜索和下載,本文提供了具體的解決方案和操作步驟2024-10-10