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