文章目錄
- 前言
- 安裝Matplotlib
- 用PyPlot創建一個簡單的線條圖
- 創建條形圖
- 創建餅圖
- 添加標簽
- 在情節中添加標題
- 創造傳奇
- 顯示多個數字
- 包起來
前言
資料可視化是與他人共享資料的重要方法,有些人將可視化稱為圖解、圖表或圖形,在本文中,這些名稱是同義詞,
Python有許多第三方包,用于資料可視化,事實上,有這么多,它可能有點壓倒性,其中最古老和最受歡迎的是Matplotlib,Matplotlib以在Python中創建靜態、影片和互動式可視化而聞名,
您可以使用Matplotlib創建許多不同型別的繪圖和圖表,它還與其他資料科學和數學庫(如NumPy和熊貓,您還會發現Matplotlib可以使用Python的大多數GUI工具包,例如Tkinter、wxPython和PyQt,因為Matplotlib是眾所周知的,所以本文將介紹它的圖形化包,
您將了解以下主題:
- 用PyPlot創建一個簡單的線條圖
- 創建條形圖
- 創建餅圖
- 添加標簽
- 在情節中添加標題
- 創造傳奇
- 顯示多個數字
讓我們開始用Matplotlib作圖吧!
安裝Matplotlib
您需要安裝Matplotlib才能使用它,幸運的是,這樣做很容易,pip:
python -m pip install matplotlib
這將安裝Matplotlib以及它所需的任何依賴項,現在你已經準備好開始繪圖了!
用PyPlot創建一個簡單的線條圖
創建圖表(或圖表)是使用繪圖包的主要目的,Matplotlib有一個名為pyplot用來創建圖表,要開始,繼續創建一個名為line_plot.py并添加以下代碼:
# line_plot.py
import matplotlib.pyplot as plt
def line_plot(numbers):
plt.plot(numbers)
plt.ylabel('Random numbers')
plt.show()
if __name__ == '__main__':
numbers = [2, 4, 1, 6]
line_plot(numbers)
你在這里進口matplotlib.pyplot如plt,然后創建一個line_plot()它接受Python的數字串列,若要繪制數字,請使用plot()功能,您還可以向y軸添加一個標簽,最后,你打電話show()顯示情節,
現在,您應該可以看到如下所示的視窗:

現在您知道了如何使用Matplotlib創建一個簡單的線條圖!現在,您將在下一節中了解如何制作條形圖,
創建條形圖
使用Matplotlib創建條形圖與創建線條圖非常相似,只是需要一些額外的爭論,繼續創建一個名為bar_chart.py并在其中輸入以下代碼:
# bar_chart.py
import matplotlib.pyplot as plt
def bar_chart(numbers, labels, pos):
plt.bar(pos, numbers, color='blue')
plt.xticks(ticks=pos, labels=labels)
plt.show()
if __name__ == '__main__':
numbers = [2, 1, 4, 6]
labels = ['Electric', 'Solar', 'Diesel', 'Unleaded']
pos = list(range(4))
bar_chart(numbers, labels, pos)
創建條形圖時,請使用bar(),則傳遞x軸的值串列,然后你傳遞給酒吧的高度串列,您還可以選擇為條形圖設定顏色,在這種情況下,您將它們設定為“藍色”,接下來,設定xticks(),這是沿著x軸應該出現的勾號,您還傳遞了與滴答對應的標簽串列,
繼續運行以下代碼,您將看到以下圖表:

您還可以使用Matplotlib制作水平條形圖,你所需要做的就是改變bar()到barh(),創建一個名為bar_chartsh.py并添加以下代碼:
# bar_charth.py
import matplotlib.pyplot as plt
def bar_charth(numbers, labels, pos):
plt.barh(pos, numbers, color='blue')
plt.yticks(ticks=pos, labels=labels)
plt.show()
if __name__ == '__main__':
numbers = [2, 1, 4, 6]
labels = ['Electric', 'Solar', 'Diesel', 'Unleaded']
pos = list(range(4))
bar_charth(numbers, labels, pos)
這里還有另外一個鬼鬼祟祟的變化,你能認出它嗎?更改是,因為它現在是一個水平條形圖,所以您需要將yticks()而不是xticks()否則看起來就不太好了,
一旦準備就緒,運行代碼,您將看到以下內容:

這看起來很棒,而且它根本不需要太多的代碼!現在,讓我們了解如何使用Matplotlib創建餅圖,
創建餅圖
派圖有點不同,要創建餅圖,您將使用Matplotlib的subplots()函式,該函式回傳Figure和一個Axes物件,要了解它是如何作業的,請創建一個名為pie_chart_plain.py然后把這個代碼放進去:
# pie_chart_plain.py
import matplotlib.pyplot as plt
def pie_chart():
numbers = [40, 35, 15, 10]
labels = ['Python', 'Ruby', 'C++', 'PHP']
fig1, ax1 = plt.subplots()
ax1.pie(numbers, labels=labels)
plt.show()
if __name__ == '__main__':
pie_chart()
在這段代碼中,您可以創建subplots()然后使用pie()方法Axes物件,您將像以前一樣傳遞一個數字串列,以及一個標簽串列,然后,當您運行代碼時,您將看到您的餅圖:

對于這么短的一段代碼來說,這是相當不錯的,但是你可以把你的餅圖做得更好,創建一個名為pie_chart_fancy.py并添加以下代碼以查看如何:
# pie_chart_fancy.py
import matplotlib.pyplot as plt
def pie_chart():
numbers = [40, 35, 15, 10]
labels = ['Python', 'Ruby', 'C++', 'PHP']
# Explode the first slice (Python)
explode = (0.1, 0, 0, 0)
fig1, ax1 = plt.subplots()
ax1.pie(numbers, explode=explode, labels=labels,
shadow=True, startangle=90,
autopct='%1.1f%%')
ax1.axis('equal')
plt.show()
if __name__ == '__main__':
pie_chart()
在本例中,您可以使用explode引數可以告訴餅圖“爆炸”或從餅餅中洗掉一片,在本例中,洗掉第一個片段,它對應于“Python”,您還添加了一個shadow派圖上,您可以告訴您的餅圖逆時針旋轉一定數量的度,通過設定startangle,如果要顯示切片百分比,可以使用autopct,它將使用Python的字串內插語法,
運行此代碼時,餅圖現在將如下所示:

是不是很干凈?你的餅圖現在看起來更漂亮了!現在是時候學習如何添加標簽到您的其他圖形!
添加標簽
在繪制資料時,通常需要對軸進行標記,屬性來標記x軸,xlabel()函式,您可以使用相應的ylabel()功能,要了解這是如何作業的,請創建一個名為bar_chart_labels.py并將以下代碼添加到其中:
# bar_chart_labels.py
import matplotlib.pyplot as plt
def bar_chart(numbers, labels, pos):
plt.bar(pos, numbers, color='blue')
plt.xticks(ticks=pos, labels=labels)
plt.xlabel('Vehicle Types')
plt.ylabel('Number of Vehicles')
plt.show()
if __name__ == '__main__':
numbers = [2, 1, 4, 6]
labels = ['Electric', 'Solar', 'Diesel', 'Unleaded']
pos = list(range(4))
bar_chart(numbers, labels, pos)
在這里,你打電話給兩個人xlabel()和ylabel()并將它們設定成不同的字串,這分別在圖的下面和圖的左邊添加了一些解釋性文本,結果如下:

看起來挺不錯的,您的圖表更容易理解,但它缺少一個標題,您將在下一節中學習如何做到這一點!
在情節中添加標題
使用Matplotlib向圖形添加標題非常簡單,實際上,您所需要做的就是使用title()函式添加一個,要了解如何創建一個名為bar_chart_title.py并將以下代碼添加到其中:
# bar_chart_title.py
import matplotlib.pyplot as plt
def bar_chart(numbers, labels, pos):
plt.bar(pos, [4, 5, 6, 3], color='green')
plt.bar(pos, numbers, color='blue')
plt.xticks(ticks=pos, labels=labels)
plt.title('Gas Used in Various Vehicles')
plt.xlabel('Vehicle Types')
plt.ylabel('Number of Vehicles')
plt.show()
if __name__ == '__main__':
numbers = [2, 1, 4, 6]
labels = ['Electric', 'Solar', 'Diesel', 'Unleaded']
pos = list(range(4))
bar_chart(numbers, labels, pos)
這里的主要更改是在第9行呼叫title()然后傳入一根繩子,這設定了圖表的標題,默認情況下,它沿著頂部居中,可以通過設定loc引數為“左”或“右”,但不能指定標題位于頂部以外的任何位置,還有一個fontdict引數,可用于控制標題字體的外觀,
您還可以向圖中添加一個新的條形圖,這可以幫助您了解堆疊的條形圖是什么樣子,也可以幫助您為下一節做好準備,
下面是您的圖表現在的樣子:

這張圖看上去更好,但仍然遺漏了一些東西,噢!你需要一個傳奇!接下來我們來看看怎么做,
創造傳奇
向Matplotlib圖添加一個圖例也很簡單,您將使用legend()函式添加一個,創建一個名為bar_chart_legend.py,然后,將以下代碼添加到其中:
# bar_chart_legend.py
import matplotlib.pyplot as plt
def bar_chart(numbers, labels, pos):
plt.bar(pos, [4, 5, 6, 3], color='green')
plt.bar(pos, numbers, color='blue')
plt.xticks(ticks=pos, labels=labels)
plt.xlabel('Vehicle Types')
plt.ylabel('Number of Vehicles')
plt.legend(['First Label', 'Second Label'], loc='upper left')
plt.show()
if __name__ == '__main__':
numbers = [2, 1, 4, 6]
labels = ['Electric', 'Solar', 'Diesel', 'Unleaded']
pos = list(range(4))
bar_chart(numbers, labels, pos)
在這里添加一個legend()就在你面前show()圖表,創建圖例時,可以通過傳遞字串串列來設定標簽,串列應該與圖中的圖數相匹配,還可以使用loc引數,
運行此代碼時,您將看到您的圖形更新如下:

現在,您的圖包含了您希望在圖中包含的所有正常組件,至此,您已經看到了許多使用Matplotlib可以完成的任務,最后一個要學習的主題是如何使用Matplotlib添加多個數字,
顯示多個數字
Matplotlib允許您在展示之前創建幾個情節,這使您可以同時處理多個資料集,有幾種不同的方法可以做到這一點,您將看到最簡單的方法之一,
創建一個名為multiple_figures.py并添加以下代碼:
# multiple_figures.py
import matplotlib.pyplot as plt
def line_plot(numbers, numbers2):
first_plot = plt.figure(1)
plt.plot(numbers)
second_plot = plt.figure(2)
plt.plot(numbers2)
plt.show()
if __name__ == '__main__':
numbers = [2, 4, 1, 6]
more_numbers = [5, 1, 10, 3]
line_plot(numbers, more_numbers)
在這里,您創建了兩個線條圖,在你策劃之前,你打電話給figure(),它為呼叫后的繪圖創建一個頂級容器,因此,第一個圖添加到圖一,第二個圖添加到圖2,show()最后,Matplotlib將打開兩個視窗,每個圖分別顯示,
運行代碼,您將在計算機上看到以下兩個視窗:

Matplotlib還支持向單個視窗添加兩個或多個繪圖,若要查看該檔案的作業原理,請創建另一個新檔案并命名此檔案,multiple_plots.py,為了使事情更有趣,您將在本例中使用NumPy創建這兩個情節,
注:如果您還沒有安裝NumPy,則需要安裝NumPy才能使此示例正常作業,
此示例基于Matplotlib檔案中的一個:
# multiple_plots.py
import matplotlib.pyplot as plt
import numpy as np
def multiple_plots():
# Some example data to display
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)
fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
plt.show()
if __name__ == '__main__':
multiple_plots()
在這里,您創建了相當于兩個獨立的正弦波圖,要使它們都出現在同一個視窗中,您可以呼叫subplots(),這是在單個呼叫中創建多個數字的方便實用程式,然后,您可以使用Axes物件來繪制用NumPy創建的資料,
結果如下所示:

如果不想使用NumPy,可以繪制上一個示例中的兩組數字,事實上,你應該試試,繼續創建一個名為multiple_plots2.py并添加以下代碼:
# multiple_plots2.py
import matplotlib.pyplot as plt
def multiple_plots():
numbers = [2, 4, 1, 6]
more_numbers = [5, 1, 10, 3]
fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(numbers)
axs[1].plot(more_numbers)
plt.show()
if __name__ == '__main__':
multiple_plots()
在此代碼中,您將完全洗掉NumPy代碼,并從前面的示例中添加兩個數字串列,然后使用Axes物件,
這導致了以下堆疊情節:

此時,您應該很好地掌握了如何使用Matplotlib創建多個圖形和疊加的繪圖,
包起來
Matplotlib是一個很好的包,您可以使用它來創建各種整潔的圖形,令人驚訝的是,您需要撰寫幾行代碼才能根據資料創建有用的繪圖,在本文中,您了解了以下主題:
- 用PyPlot創建一個簡單的線條圖
- 創建條形圖
- 創建餅圖
- 添加標簽
- 在情節中添加標題
- 創造傳奇
- 顯示多個數字
Matplotlib非常強大,有許多特性在這里沒有涉及,您可以使用Matplotlib創建許多其他型別的可視化,
有一個較新的包,名為海航這是建立在Matplotlib之上的,使它的圖形看起來更好,還有許多其他完全獨立的Python圖形化包,您會發現Python支持幾乎任何型別的圖,并且可能有許多您不知道的圖,
非常感謝大家的閱讀!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298586.html
標籤:AI
