大家好,我是愛(ài)吃熊掌的魚(yú),今天我要給大家?guī)?lái)一篇有趣開(kāi)朗的Matplotlib Python教程。Matplotlib是Python中最流行的數(shù)據(jù)可視化庫(kù)之一,它可以幫助我們將數(shù)據(jù)轉(zhuǎn)化為易于理解的圖表和圖形。無(wú)論你是初學(xué)者還是專(zhuān)業(yè)人士,Matplotlib都是一個(gè)非常有用的工具。讓我們開(kāi)始吧!
第一部分:安裝Matplotlib
在開(kāi)始之前,我們需要先安裝Matplotlib。在終端或命令行中運(yùn)行以下命令來(lái)安裝Matplotlib:
pip install matplotlib
如果你使用的是Jupyter Notebook或者是Google Colab這樣的交互式筆記本,可以使用以下命令來(lái)安裝Matplotlib:
pip install matplotlib
安裝完成后,我們就可以開(kāi)始使用Matplotlib了。
第二部分:Matplotlib的基礎(chǔ)知識(shí)
在使用Matplotlib之前,我們需要了解一些基礎(chǔ)知識(shí)。Matplotlib中最常用的對(duì)象是Figure和Axes對(duì)象。
- Figure對(duì)象是一個(gè)畫(huà)布,我們可以在上面繪制多個(gè)Axes對(duì)象。
- Axes對(duì)象是一個(gè)包含圖形和坐標(biāo)軸的區(qū)域。我們可以在Axes對(duì)象上繪制數(shù)據(jù)。
在Matplotlib中,我們可以使用pyplot子模塊來(lái)繪制圖形。以下是繪制圖形的基本步驟:
- 創(chuàng)建一個(gè)Figure對(duì)象。
- 創(chuàng)建一個(gè)Axes對(duì)象。
- 在Axes對(duì)象上繪制數(shù)據(jù)。
- 顯示圖形。
下面是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)Axes對(duì)象
ax = fig.add_subplot(111)
# 在Axes對(duì)象上繪制數(shù)據(jù)
ax.plot([1, 2, 3, 4], [1, 4, 9, 16])
# 顯示圖形
plt.show()
以上代碼創(chuàng)建了一個(gè)簡(jiǎn)單的折線圖。我們使用plot()函數(shù)在Axes對(duì)象上繪制了數(shù)據(jù),并使用show()函數(shù)顯示了圖形。
第三部分:繪制不同類(lèi)型的圖形
在Matplotlib中,我們可以繪制多種類(lèi)型的圖形,包括線圖、柱狀圖、散點(diǎn)圖、餅圖等等。接下來(lái),我們將介紹如何繪制不同類(lèi)型的圖形。
折線圖
折線圖是一種常見(jiàn)的數(shù)據(jù)可視化圖形,用于顯示數(shù)據(jù)隨時(shí)間或其他變量的變化情況。在Matplotlib中,我們可以使用plot()函數(shù)來(lái)繪制折線圖。
以下是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)Axes對(duì)象
ax = fig.add_subplot(111)
# 在Axes對(duì)象上繪制折線圖
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.plot(x, y)
# 添加標(biāo)題和標(biāo)簽
ax.set_title("折線圖")
ax.set_xlabel("X軸")
ax.set_ylabel("Y軸")
# 顯示圖形
plt.show()
以上代碼創(chuàng)建了一個(gè)簡(jiǎn)單的折線圖。我們使用plot()函數(shù)在Axes對(duì)象上繪制了折線,并使用set_title()、set_xlabel()和set_ylabel()函數(shù)添加了標(biāo)題和標(biāo)簽。
柱狀圖
柱狀圖用于比較多個(gè)項(xiàng)目之間的數(shù)據(jù)。在Matplotlib中,我們可以使用bar()函數(shù)來(lái)繪制柱狀圖。
以下是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)Axes對(duì)象
ax = fig.add_subplot(111)
# 在Axes對(duì)象上繪制柱狀圖
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.bar(x, y)
# 添加標(biāo)題和標(biāo)簽
ax.set_title("柱狀圖")
ax.set_xlabel("X軸")
ax.set_ylabel("Y軸")
# 顯示圖形
plt.show()
以上代碼創(chuàng)建了一個(gè)簡(jiǎn)單的柱狀圖。我們使用bar()函數(shù)在Axes對(duì)象上繪制了柱狀圖,并使用set_title()、set_xlabel()和set_ylabel()函數(shù)添加了標(biāo)題和標(biāo)簽。
散點(diǎn)圖
散點(diǎn)圖用于顯示兩個(gè)變量之間的關(guān)系。在Matplotlib中,我們可以使用scatter()函數(shù)來(lái)繪制散點(diǎn)圖。
以下是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)Axes對(duì)象
ax = fig.add_subplot(111)
# 在Axes對(duì)象上繪制散點(diǎn)圖
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.scatter(x, y)
# 添加標(biāo)題和標(biāo)簽
ax.set_title("散點(diǎn)圖")
ax.set_xlabel("X軸")
ax.set_ylabel("Y軸")
# 顯示圖形
plt.show()
以上代碼創(chuàng)建了一個(gè)簡(jiǎn)單的散點(diǎn)圖。我們使用scatter()函數(shù)在Axes對(duì)象上繪制了散點(diǎn)圖,并使用set_title()、set_xlabel()和set_ylabel()函數(shù)添加了標(biāo)題和標(biāo)簽。
餅圖
餅圖用于顯示不同類(lèi)別的占比情況。在Matplotlib中,我們可以使用pie()函數(shù)來(lái)繪制餅圖。
以下是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)Axes對(duì)象
ax = fig.add_subplot(111)
# 在Axes對(duì)象上繪制餅圖
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
ax.pie(sizes, labels=labels)
# 添加標(biāo)題
ax.set_title("餅圖")
# 顯示圖形
plt.show()
以上代碼創(chuàng)建了一個(gè)簡(jiǎn)單的餅圖。我們使用pie()函數(shù)在Axes對(duì)象上繪制了餅圖,并使用set_title()函數(shù)添加了標(biāo)題。
第四部分:Matplotlib的高級(jí)功能
除了基本的繪圖功能之外,Matplotlib還提供了許多高級(jí)功能,可以幫助我們更好地控制圖形的樣式和布局。接下來(lái),我們將介紹一些Matplotlib的高級(jí)功能。
子圖
Matplotlib中的子圖是一種將多個(gè)圖形組合在一起顯示的方式。在Matplotlib中,我們可以使用subplot()函數(shù)來(lái)創(chuàng)建子圖。
以下是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)包含2個(gè)子圖的GridSpec對(duì)象
gs = fig.add_gridspec(1, 2)
# 創(chuàng)建第一個(gè)子圖
ax1 = fig.add_subplot(gs[0, 0])
ax1.plot([1, 2, 3], [1, 2, 3])
ax1.set_title("子圖1")
# 創(chuàng)建第二個(gè)子圖
ax2 = fig.add_subplot(gs[0, 1])
ax2.plot([1, 2, 3], [3, 2, 1])
ax2.set_title("子圖2")
# 顯示圖形
plt.show()
以上代碼創(chuàng)建了一個(gè)包含2個(gè)子圖的圖形。我們使用add_gridspec()函數(shù)創(chuàng)建了一個(gè)包含1行2列的GridSpec對(duì)象,并使用add_subplot()函數(shù)在GridSpec對(duì)象上創(chuàng)建了兩個(gè)子圖。在設(shè)置子圖的標(biāo)題時(shí),我們使用了set_title()函數(shù)。
圖例
Matplotlib中的圖例用于解釋圖形中不同元素的含義。在Matplotlib中,我們可以使用legend()函數(shù)來(lái)添加圖例。
以下是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)Axes對(duì)象
ax = fig.add_subplot(111)
# 在Axes對(duì)象上繪制折線圖
x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 2, 3, 4]
ax.plot(x, y1, label='數(shù)據(jù)集1')
ax.plot(x, y2, label='數(shù)據(jù)集2')
# 添加圖例
ax.legend()
# 添加標(biāo)題和標(biāo)簽
ax.set_title("折線圖")
ax.set_xlabel("X軸")
ax.set_ylabel("Y軸")
# 顯示圖形
plt.show()
以上代碼創(chuàng)建了一個(gè)包含圖例的折線圖。我們?cè)诶L制折線圖時(shí),使用label參數(shù)指定了每個(gè)數(shù)據(jù)集的名稱(chēng),并在添加圖例時(shí)使用legend()函數(shù)。在設(shè)置圖形的標(biāo)題和標(biāo)簽時(shí),我們使用了set_title()、set_xlabel()和set_ylabel()函數(shù)。
注釋
在Matplotlib中,我們可以使用annotate()函數(shù)向圖形中添加注釋。注釋可以用于解釋圖形中的某些特殊點(diǎn)或區(qū)域。
以下是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)Axes對(duì)象
ax = fig.add_subplot(111)
# 在Axes對(duì)象上繪制折線圖
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.plot(x, y)
# 添加注釋
ax.annotate('最大值', xy=(3, 9), xytext=(2, 12), arrowprops=dict(facecolor='red', shrink=0.05))
# 添加標(biāo)題和標(biāo)簽
ax.set_title("折線圖")
ax.set_xlabel("X軸")
ax.set_ylabel("Y軸")
# 顯示圖形
plt.show()
以上代碼創(chuàng)建了一個(gè)包含注釋的折線圖。我們使用annotate()函數(shù)向圖形中添加注釋?zhuān)付ㄗ⑨屛谋镜奈恢煤图^的屬性。在設(shè)置圖形的標(biāo)題和標(biāo)簽時(shí),我們使用了set_title()、set_xlabel()和set_ylabel()函數(shù)。
保存圖形
在Matplotlib中,我們可以使用savefig()函數(shù)將圖形保存為文件。Matplotlib支持多種文件格式,包括PNG、PDF、SVG和EPS等。
以下是一個(gè)簡(jiǎn)單的例子:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
# 創(chuàng)建一個(gè)Figure對(duì)象
fig = plt.figure()
# 創(chuàng)建一個(gè)Axes對(duì)象
ax = fig.add_subplot(111)
# 在Axes對(duì)象上繪制折線圖
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
ax.plot(x, y)
# 添加標(biāo)題和標(biāo)簽
ax.set_title("折線圖")
ax.set_xlabel("X軸")
ax.set_ylabel("Y軸")
# 保存圖形
plt.savefig('line_chart.png')
# 顯示圖形
plt.show()
以上代碼將繪制的折線圖保存為PNG格式的文件。我們?cè)谡{(diào)用savefig()函數(shù)時(shí),指定了保存文件的名稱(chēng)和格式。
問(wèn)題總結(jié)
錯(cuò)誤1
問(wèn)題錯(cuò)誤代碼
C:\Program Files\JetBrains\PyCharm 2022.3.3\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py:68: UserWarning: Glyph 36724 (\N{CJK UNIFIED IDEOGRAPH-8F74}) missing from current font.
FigureCanvasAgg.draw(self)
C:\Program Files\JetBrains\PyCharm 2022.3.3\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py:68: UserWarning: Glyph 25240 (\N{CJK UNIFIED IDEOGRAPH-6298}) missing from current font.
FigureCanvasAgg.draw(self)
C:\Program Files\JetBrains\PyCharm 2022.3.3\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py:68: UserWarning: Glyph 32447 (\N{CJK UNIFIED IDEOGRAPH-7EBF}) missing from current font.
FigureCanvasAgg.draw(self)
C:\Program Files\JetBrains\PyCharm 2022.3.3\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py:68: UserWarning: Glyph 22270 (\N{CJK UNIFIED IDEOGRAPH-56FE}) missing from current font.
FigureCanvasAgg.draw(self)
問(wèn)題原因
這些警告是因?yàn)槿鄙傧鄳?yīng)字形的字體。這些字形是CJK(中日韓)統(tǒng)一表意文字(Unicode中的漢字和其他東亞象形文字)。如果你需要在Matplotlib圖表中使用這些字形,可以嘗試安裝包含它們的字體,比如SimSun、SimHei、STSong等中文字體。
解決方案
在Matplotlib中,你可以使用rcParams參數(shù)來(lái)設(shè)置全局的字體,或者在每個(gè)圖表中單獨(dú)設(shè)置字體。比如,你可以使用如下代碼將全局的字體設(shè)置為SimHei:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
或者在繪制圖表時(shí),使用如下代碼設(shè)置字體:
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.xlabel('橫軸', fontproperties='SimHei')
plt.ylabel('縱軸', fontproperties='SimHei')
plt.show()
這樣就可以使用SimHei字體繪制圖表了,就不會(huì)出現(xiàn)那些報(bào)錯(cuò)了。
有其他問(wèn)題可以私信我,看到就會(huì)回的。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-420266.html
如果我的博客對(duì)你有幫助,請(qǐng)三連謝謝。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-420266.html
到了這里,關(guān)于數(shù)據(jù)可視化神器!Matplotlib Python教程 | 從入門(mén)到精通繪制各種類(lèi)型的圖形和保存圖形的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!