Python中使用matplotlib繪制各類圖表示例詳解
折線圖
折線圖是一種用于表示數(shù)據(jù)隨時(shí)間、變量或其他連續(xù)性變化的趨勢(shì)的圖表。通過在橫軸上放置時(shí)間或如此類似的連續(xù)變量,可以在縱軸上放置數(shù)據(jù)點(diǎn)的值,從而捕捉到數(shù)據(jù)隨時(shí)間發(fā)生的變化。折線圖可以用于比較不同變量的趨勢(shì),輕松地發(fā)現(xiàn)不同的變量之間的差異。
import matplotlib.pyplot as plt import numpy as np # 生成數(shù)據(jù) x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) # 創(chuàng)建一個(gè)繪圖窗口,大小為8x6英寸 plt.figure(figsize=(8, 6)) # 繪制折線圖 plt.plot(x, y1, label='sin(x)') plt.plot(x, y2, label='cos(x)') # 添加圖例,顯示在右上角 plt.legend(loc='upper right') # 添加標(biāo)題和軸標(biāo)簽 plt.title('Sin and Cos functions') plt.xlabel('x') plt.ylabel('y') # 顯示網(wǎng)格線 plt.grid(True) # 保存圖像,支持多種格式,如PNG、PDF、SVG等 plt.savefig('line_plot.png', dpi=300) # 顯示圖像 plt.show()
示例結(jié)果:
參數(shù)說明:
- plt.figure(figsize=(8, 6)):創(chuàng)建一個(gè)大小為8x6英寸的繪圖窗口。
- plt.plot(x, y1, label='sin(x)'):繪制折線圖,x和y1是數(shù)據(jù)點(diǎn)的x坐標(biāo)和y坐標(biāo),label是該折線的標(biāo)簽,用于圖例中顯示。
- plt.legend(loc='upper right'):添加圖例,loc參數(shù)指定圖例的位置,可以是字符串’upper right’等也可以是數(shù)字0~10。
- plt.title('Sin and Cos functions'):添加標(biāo)題。
- plt.xlabel('x'):添加x軸標(biāo)簽。
- plt.ylabel('y'):添加y軸標(biāo)簽。
- plt.grid(True):顯示網(wǎng)格線。
- plt.savefig('line_plot.png', dpi=300):保存圖像到文件line_plot.png中,dpi參數(shù)指定輸出分辨率。
柱狀圖
柱狀圖是一種用于比較不同組數(shù)據(jù)之間差異的圖表。它通過將每個(gè)數(shù)據(jù)組的值表示為柱形的高度來顯示差異。柱狀圖可用于比較不同分類數(shù)據(jù)的數(shù)量、頻率或比率,用于顯示該類別數(shù)據(jù)的相對(duì)大小。
import matplotlib.pyplot as plt import numpy as np # 生成數(shù)據(jù) x = ['A', 'B', 'C', 'D', 'E'] y1 = [3, 7, 2, 5, 9] y2 = [5, 2, 6, 3, 1] # 創(chuàng)建一個(gè)繪圖窗口,大小為8x6英寸 plt.figure(figsize=(8, 6)) # 繪制柱狀圖 plt.bar(x, y1, color='lightblue', label='Group 1') plt.bar(x, y2, color='pink', bottom=y1, label='Group 2') # 添加圖例,顯示在右上角 plt.legend(loc='upper right') # 添加標(biāo)題和軸標(biāo)簽 plt.title('Bar Plot') plt.xlabel('Category') plt.ylabel('Value') # 顯示圖像 plt.show()
示例結(jié)果:
參數(shù)說明:
- plt.bar(x, y1, color='lightblue', label='Group 1'):繪制柱狀圖,x是類別列表,y1是每個(gè)類別對(duì)應(yīng)的值,label是該組數(shù)據(jù)的標(biāo)簽,用于圖例中顯示。color參數(shù)指定柱狀圖的顏色。
- plt.bar(x, y2, color='pink', bottom=y1, label='Group 2'):繪制第二組數(shù)據(jù)的柱狀圖,bottom參數(shù)指定該組數(shù)據(jù)的底部位置。
- plt.legend(loc='upper right'):添加圖例,loc參數(shù)指定圖例的位置,可以是字符串’upper right’等也可以是數(shù)字0~10。
- plt.title('Bar Plot'):添加標(biāo)題。
- plt.xlabel('Category'):添加x軸標(biāo)簽。
- plt.ylabel('Value'):添加y軸標(biāo)簽。
直方圖
直方圖用于展示數(shù)據(jù)的分布情況,通常用于分析數(shù)據(jù)集的偏態(tài)和峰態(tài)等特征。
import matplotlib.pyplot as plt import numpy as np # 生成隨機(jī)數(shù)據(jù) np.random.seed(42) data = np.random.normal(size=1000) # 繪制直方圖 fig, ax = plt.subplots() ax.hist(data, bins=30, density=True, alpha=0.5, color='blue') # 設(shè)置圖表標(biāo)題和坐標(biāo)軸標(biāo)簽 ax.set_title('Histogram of Random Data', fontsize=16) ax.set_xlabel('Value', fontsize=14) ax.set_ylabel('Frequency', fontsize=14) # 設(shè)置坐標(biāo)軸刻度標(biāo)簽大小 ax.tick_params(axis='both', which='major', labelsize=12) # 顯示圖表 plt.show()
示例結(jié)果:
參數(shù)說明:
- data:要繪制的數(shù)據(jù)集。
- bins:直方圖中的箱數(shù)。
- density:是否將頻數(shù)轉(zhuǎn)換為概率密度。
- alpha:直方圖的透明度。
- color:直方圖的顏色。
- ax.set_title():設(shè)置圖表標(biāo)題。
- ax.set_xlabel():設(shè)置x軸標(biāo)簽。
- ax.set_ylabel():設(shè)置y軸標(biāo)簽。
- ax.tick_params():設(shè)置坐標(biāo)軸刻度標(biāo)簽的大小。
餅圖
餅圖用于展示數(shù)據(jù)的占比情況,通常用于比較不同類別或部分之間的占比情況。
import matplotlib.pyplot as plt # 生成數(shù)據(jù) labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10] colors = ['red', 'green', 'blue', 'yellow'] # 繪制餅圖 fig, ax = plt.subplots() ax.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90) # 設(shè)置圖表標(biāo)題 ax.set_title('Pie Chart of Data', fontsize=16) # 顯示圖表 plt.show()
示例結(jié)果:
參數(shù)說明:
- labels:數(shù)據(jù)的類別標(biāo)簽。
- sizes:數(shù)據(jù)的占比。
- colors:數(shù)據(jù)的顏色。
- autopct:占比的顯示格式。
- startangle:餅圖的起始角度。
- ax.set_title():設(shè)置圖表標(biāo)題。
括線圖
括線圖是一種用于比較不同組數(shù)據(jù)分布情況的圖表。它用于顯示數(shù)據(jù)的中位數(shù)、上下四分位數(shù)、最小值和最大值,可以幫助我們了解數(shù)據(jù)分布的形狀、位置和離散程度。在括線圖中,每個(gè)箱子代表數(shù)據(jù)的25%~75%分位數(shù),中位線是每個(gè)箱子中的中位數(shù),普通線是每個(gè)箱子之外的最小值和最大值。
import matplotlib.pyplot as plt # 生成數(shù)據(jù) data = [[3.4, 4.1, 3.8, 2.0], [2.3, 4.5, 1.2, 4.3]] # 創(chuàng)建一個(gè)繪圖窗口,大小為8x6英寸 plt.figure(figsize=(8, 6)) # 繪制括線圖 bp = plt.boxplot(data, widths=0.5, patch_artist=True, notch=True) # 設(shè)置每個(gè)箱線圖的顏色和填充 for patch, color in zip(bp['boxes'], ['lightblue', 'pink']): patch.set_facecolor(color) # 添加標(biāo)題和軸標(biāo)簽 plt.title('Box Plot') plt.xlabel('Group') plt.ylabel('Data') # 顯示圖像 plt.show()
示例結(jié)果:
參數(shù)說明:
- plt.boxplot(data, widths=0.5, patch_artist=True, notch=True):繪制括線圖,data是一個(gè)包含兩個(gè)列表的列表,表示兩組數(shù)據(jù)。widths參數(shù)指定每個(gè)箱線圖的寬度,patch_artist參數(shù)指定使用補(bǔ)丁來填充箱線圖,notch參數(shù)指定繪制出箱線圖中的記分牌。
- patch.set_facecolor(color):設(shè)置每個(gè)箱線圖的顏色和填充,zip函數(shù)可以將兩個(gè)列表打包成一個(gè)元組,逐個(gè)取出元組的值。
- plt.title('Box Plot'):添加標(biāo)題。
- plt.xlabel('Group'):添加x軸標(biāo)簽。
- plt.ylabel('Data'):添加y軸標(biāo)簽。
散點(diǎn)圖
散點(diǎn)圖是一種用于展示兩個(gè)變量之間關(guān)系的圖表。每個(gè)點(diǎn)代表一個(gè)數(shù)據(jù)點(diǎn),它的位置由變量的值確定。散點(diǎn)圖可用于尋找變量之間的相關(guān)性,并顯示數(shù)據(jù)中的任何異常值或離群值。
import matplotlib.pyplot as plt import numpy as np # 生成數(shù)據(jù) x = np.random.normal(size=100) y = np.random.normal(size=100) # 創(chuàng)建一個(gè)繪圖窗口,大小為8x6英寸 plt.figure(figsize=(8, 6)) # 繪制散點(diǎn)圖 plt.scatter(x, y, s=50, alpha=0.5) # 添加標(biāo)題和軸標(biāo)簽 plt.title('Scatter Plot') plt.xlabel('x') plt.ylabel('y') # 顯示圖像 plt.show()
示例結(jié)果:
參數(shù)說明:
- plt.scatter(x, y, s=50, alpha=0.5):繪制散點(diǎn)圖,x和y是數(shù)據(jù)點(diǎn)的x坐標(biāo)和y坐標(biāo),s指定點(diǎn)的大小,alpha指定點(diǎn)的透明度。
- plt.title('Scatter Plot'):添加標(biāo)題。
- plt.xlabel('x'):添加x軸標(biāo)簽。
- plt.ylabel('y'):添加y軸標(biāo)簽。
箱線圖
箱線圖用于展示數(shù)據(jù)的分布情況和異常值等信息,通常用于比較不同數(shù)據(jù)集之間的差異。
import matplotlib.pyplot as plt import numpy as np # 生成隨機(jī)數(shù)據(jù) np.random.seed(42) data = np.random.normal(size=(100, 4), loc=0, scale=1.5) # 繪制箱線圖 fig, ax = plt.subplots() ax.boxplot(data, notch=True, sym='o', vert=True, whis=1.5) # 設(shè)置圖表標(biāo)題和坐標(biāo)軸標(biāo)簽 ax.set_title('Boxplot of Random Data', fontsize=16) ax.set_xlabel('Variable', fontsize=14) ax.set_ylabel('Value', fontsize=14) # 設(shè)置坐標(biāo)軸刻度標(biāo)簽大小 ax.tick_params(axis='both', which='major', labelsize=12) # 顯示圖表 plt.show()
示例結(jié)果:
參數(shù)說明:
- data:要繪制的數(shù)據(jù)集。
- notch:是否繪制缺口。
- sym:異常值的標(biāo)記形狀。
- vert:是否垂直繪制箱線圖。
- whis:箱線圖的須長(zhǎng)度,以四分位距的1.5倍為標(biāo)準(zhǔn)。
- ax.set_title():設(shè)置圖表標(biāo)題。
- ax.set_xlabel():設(shè)置x軸標(biāo)簽。
- ax.set_ylabel():設(shè)置y軸標(biāo)簽。
- ax.tick_params():設(shè)置坐標(biāo)軸刻度標(biāo)簽的大小。
熱力圖
熱力圖用于展示數(shù)據(jù)之間的關(guān)系和趨勢(shì),通常用于分析二維數(shù)據(jù)的相關(guān)性和變化。
import matplotlib.pyplot as plt import numpy as np # 生成隨機(jī)數(shù)據(jù) np.random.seed(42) data = np.random.normal(size=(10, 10), loc=0, scale=1) # 繪制熱力圖 fig, ax = plt.subplots() im = ax.imshow(data, cmap='YlOrRd') # 添加顏色條 cbar = ax.figure.colorbar(im, ax=ax) cbar.ax.set_ylabel('Values', rotation=-90, va='bottom') # 添加軸標(biāo)簽和標(biāo)題 ax.set_xticks(np.arange(len(data))) ax.set_yticks(np.arange(len(data))) ax.set_xticklabels(np.arange(1, len(data)+1)) ax.set_yticklabels(np.arange(1, len(data)+1)) ax.set_title('Heatmap of Random Data', fontsize=16) # 顯示圖表 plt.show()
示例結(jié)果:
參數(shù)說明:
- data:要繪制的數(shù)據(jù)集。
- cmap:顏色映射,用于表示數(shù)據(jù)大小的顏色范圍。
- ax.imshow():繪制熱力圖。
- cbar.ax.set_ylabel():設(shè)置顏色條的標(biāo)簽。
- ax.set_xticks():設(shè)置x軸刻度標(biāo)簽。
- ax.set_yticks():設(shè)置y軸刻度標(biāo)簽。
- ax.set_xticklabels():設(shè)置x軸刻度標(biāo)簽的標(biāo)簽名。
- ax.set_yticklabels():設(shè)置y軸刻度標(biāo)簽的標(biāo)簽名。
- ax.set_title():設(shè)置圖表標(biāo)題。
樹狀圖
樹狀圖用于展示數(shù)據(jù)之間的層次結(jié)構(gòu)和關(guān)系,通常用于分析樹形結(jié)構(gòu)和組織架構(gòu)等問題。
import matplotlib.pyplot as plt # 繪制樹狀圖 fig, ax = plt.subplots() ax.barh('CEO', 1, color='black') ax.barh('VP1', 0.8, left=1, color='gray') ax.barh('VP2', 0.8, left=1, color='gray') ax.barh('Manager1', 0.6, left=1.8, color='gray') ax.barh('Manager2', 0.6, left=1.8, color='gray') ax.barh('Manager3', 0.6, left=1.8, color='gray') ax.barh('Supervisor1', 0.4, left=2.4, color='gray') ax.barh('Supervisor2', 0.4, left=2.4, color='gray') ax.barh('Supervisor3', 0.4, left=2.4, color='gray') ax.barh('Staff1', 0.2, left=3.2, color='gray') ax.barh('Staff2', 0.2, left=3.2, color='gray') ax.barh('Staff3', 0.2, left=3.2, color='gray') ax.barh('Staff4', 0.2, left=3.2, color='gray') # 設(shè)置軸標(biāo)簽和標(biāo)題 ax.set_yticks([]) ax.set_xlim(0, 4) ax.set_xlabel('Hierarchy', fontsize=14) ax.set_title('Tree Diagram of Organization', fontsize=16) # 顯示圖表 plt.show()
示例結(jié)果:
- 參數(shù)說明:
- ax.barh():繪制水平條形圖。
- ax.set_yticks():設(shè)置y軸刻度標(biāo)簽。
- ax.set_xlim():設(shè)置x軸坐標(biāo)范圍。
- ax.set_xlabel():設(shè)置x軸標(biāo)簽。
- ax.set_title():設(shè)置圖表標(biāo)題。
- 文章知識(shí)點(diǎn)與官方知識(shí)檔案匹配,可進(jìn)
總結(jié)
到此這篇關(guān)于Python中使用matplotlib繪制各類圖表的文章就介紹到這了,更多相關(guān)Python matplotlib繪制圖表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用到第三方庫(kù)PyMuPDF圖片與pdf相互轉(zhuǎn)換
今天為大家介紹個(gè)比較簡(jiǎn)單的Python第三方庫(kù)PyMuPDF進(jìn)行圖片和pdf之間的相互轉(zhuǎn)換,以下就是利用PyMuPDF進(jìn)行pdf與圖片之間的互轉(zhuǎn)2019-05-05Python技法之簡(jiǎn)單遞歸下降Parser的實(shí)現(xiàn)方法
遞歸下降解析器可以用來實(shí)現(xiàn)非常復(fù)雜的解析,下面這篇文章主要給大家介紹了關(guān)于Python技法之簡(jiǎn)單遞歸下降Parser的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05淺析python實(shí)現(xiàn)布隆過濾器及Redis中的緩存穿透原理
本文帶你了解了位圖的實(shí)現(xiàn),布隆過濾器的原理及 Python 中的使用,以及布隆過濾器如何應(yīng)對(duì) Redis 中的緩存穿透,相信你對(duì)布隆過濾器已經(jīng)有了一定的認(rèn)識(shí)2021-09-09Python PyMySQL操作MySQL數(shù)據(jù)庫(kù)的方法詳解
PyMySQL是一個(gè)用于Python編程語言的純Python MySQL客戶端庫(kù),它遵循Python標(biāo)準(zhǔn)DB API接口,并提供了許多方便的功能,本文就來和大家簡(jiǎn)單介紹一下吧2023-05-05python_tkinter彈出對(duì)話框創(chuàng)建
這篇文章主要介紹了python_tkinter彈出對(duì)話框?qū)崿F(xiàn),tkinter提供了三個(gè)模塊,可以創(chuàng)建彈出對(duì)話窗口,下面詳細(xì)介紹,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-03-03tensorflow中tf.slice和tf.gather切片函數(shù)的使用
今天小編就為大家分享一篇tensorflow中tf.slice和tf.gather切片函數(shù)的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01