tft每日頭條

 > 科技

 > python怎麼用matplotlib畫圖

python怎麼用matplotlib畫圖

科技 更新时间:2024-06-29 12:29:48

Matplotlib是一個基于python的2D畫圖庫,能夠用python腳本方便的畫出折線圖,直方圖,功率譜圖,散點圖等常用圖表,而且語法簡單。

Python中通過matplotlib模塊的pyplot子庫來完成繪圖。Matplotlib可用于創建高質量的圖表和圖形,也可以用于繪制和可視化結果。matplotlib是Python優秀的數據可視化第三方庫,matplotlb.pyplot是繪制種類可視化圖形的命令子庫,相當于快捷方式 import matplotlib.pyplot as plt.

  1. 線形圖:

線性圖是最基本的圖表類型,常用于繪制連續的數據。通過繪制線形圖,可以表現出數據的一種趨勢變化。

Matplotlib的plot(X,Y)用來繪制線形圖,在參數中傳入X和Y的坐标即可。其中,X和Y軸坐标的數據格式可以是列表、數組和Series.

例1:坐标數據格式為series

import numpy as np import matplotlib.pyplot as plt import pandas as pd data={'name':['Tom','Peter','Lucy','Max'], 'sex':['female','female','male','male'], 'math':[78,79,83,92], 'city':['北京','上海','廣州','北京'] } df=pd.DataFrame(data) print(df) #DataFrame數據的行索引作為X軸,math列索引作為Y軸 plt.plot(df.index,df['math'],color='red',linestyle='-',linewidth=3,marker='D') #通過plot函數的color參數可以指定線條的顔色,

linestyle參數可以指定線條的形狀,

linewidth參數可指定線條的寬度,

marker參數可對坐标點進行标記(默認情況下,坐标點是沒有标記的),

結果: name sex math city #創建一個DataFrame數據 0 Tom female 78 北京 1 Peter female 79 上海 2 Lucy male 83 廣州 3 Max male 92 北京

繪制的線性圖:

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)1

注意:顔色設置要放在線條和點的樣式的前面,顔色、線條和點的樣式可以放置于格式字符串。

如:plt.plot(df.index,df['math'],'co-')

運行結果如下:

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)2

2. 柱狀圖

2.1 繪制柱狀圖主要是使用matplotlib的bar函數:

bar函數的color參數可以設置柱狀圖的填充顔色,

alpha參數可以設置透明度,

例如:

import matplotlib.pyplot as plt data=[23,85,72,43,52] plt.bar([1,2,3,4,5],data,color='royalblue',alpha=0.7)

運行結果:

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)3

bottom參數用于設置柱狀圖的高度,以此繪制堆積柱狀圖;

width參數 用于設置柱狀圖的寬度,以此可以繪制并列柱狀圖

grid函數用于繪制格網,通過對參數的個性化設置,可以繪制出個性的格網

例如:

import numpy as np import matplotlib.pyplot as plt data1=[23,85,72,43,52] data2=[42,35,21,16,9] width=0.3 plt.bar(np.arange(len(data1)),data1,color='royalblue',alpha=0.7,width=width) plt.bar(np.arange(len(data2)) width,data2,color='green',alpha=0.7,width=width) plt.grid(color='black',linstyle='--',linewidth=3,axis='y',alpha=0.6)

運行結果:

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)4

Bar函數的通過barh函數可以繪制水平柱狀圖

import numpy as np import matplotlib.pyplot as plt data1=[23,85,72,43,52] plt.barh(np.arange(len(data1)),data1,color='green',alpha=0.5)

如圖所示:

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)5

2.2 刻度與标簽:

現實中的柱狀圖的X軸是有刻度标簽的,上述實例中未設置。在matplotlib中,

通過xticks函數 設置圖标的X軸的刻度和刻度标簽,yticks函數設置y軸的刻度和标簽。

通過xlabel 和 ylabel 方法給X軸和Y軸添加标簽,

通過title方法為圖表添加标題

例如:

import numpy as np import matplotlib.pyplot as plt data1=[23,85,72,43,52] labels=['A','B','C','D','E'] plt.xticks(range(len(data1)),labels) #設置刻度和标簽 plt.xlabel('Class') #plt.xlabel、ylabel、title方法分别給X軸和Y軸,圖标題添加标簽。 plt.ylabel('Amounts') plt.title('Example') #plt.bar(range(len(data1)),data) plt.bar(np.arange(len(data1)),data1,color='royalblue',alpha=0.7) plt.grid(color='black',linstyle='--',linewidth=3,axis='y',alpha=0.6)

運行結果:

2.3 圖例:

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)6

圖例是标識圖表元素的重要工具,在bar函數中傳入label參數表示圖例名稱,通過legend函數即可繪制出圖例。

data1=[23,85,72,43,52] data2=[42,35,21,16,9] width=0.3 plt.bar(np.arange(len(data1)),data1,width=width,label='one') plt.bar(np.arange(len(data2)) width,data2,width=width,label='two') plt.legend()

結果圖:

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)7

2.4 文本注解:

例如:在柱狀圖中加入文本數字,可以很清楚的知道每個類别的數量。通過text函數可以在指定的坐标(x,y)上加入文本注釋

data=[23,85,72,43,52] labels=['A','B','C','D','E'] plt.xticks(range(len(data)),labels) #設置刻度和标簽 plt.xlabel('Class') plt.ylabel('Amounts') plt.title('Example') plt.bar(range(len(data)),data) for x,y in zip(range(len(data)),data): plt.text(x,y,y,ha='center',va='bottom') #文本注解 # 第一個參數是x軸坐标 # 第二個參數是y軸坐标 # 第三個參數是要顯式的内容

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)8

3.散點圖:

Matpltlib中 scatter函數可以用來繪制散點圖,傳入X和Y軸坐标。Scatter(X,Y)

利用Numpy創建一組随機數

import numpy as np import matplotlib.pyplot as plt X=np.random.randn(100) Y=np.random.randn(100) plt.scatter(X,Y,color='red',marker='D')

散點圖:

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)9

4. 直方圖

matplotlib的hist()函數用來繪制直方圖。

直方圖與條形圖的區别:

直方圖是用面積表示各頻數的多少,矩形的高度表示每一組的頻數或頻率,寬度則表示各組的組距,因此其寬度與高度均有意義;

條形圖(柱狀圖)是用條形的長度表示各類頻數的多少,其寬度是固定的。

由于分組數據具有連續性,直方圖的各矩形通常是連續排列,而條形圖是分開排列;條形圖主要是用于展示分類數據,而直方圖則主要用于展示數據型數據。

x=np.random.normal(size=100) plt.hist(x,bins=30)

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)10

5. 自定義設置

Matplotlib的圖像位于Figure對象中,實際上就是創建了一個空的圖像窗口。可通過figure函數可以創建一個新的Figure,用于繪制圖表

fig=plt.figure(figsize=(10,6)) #figsize參數可以設置圖表(整個圖)的長寬比

ax1=fig.add_subplot(2,2,1) #不能通過空figure繪圖,必須用add_subplot()創建一個或者多個子subplot繪圖區才能繪圖

意思是:繪制2*2兩行兩列共4個子subplot圖像

ax2=fig.add_subplot(2,2,2) #在創建Figure對象過程中,通過add_subplot函數創建子圖,用于繪制圖形

ax3=fig.add_subplot(2,2,3)

years=[1950,1960,1970,1980,1990,2000,2010]

gdp=[300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3]

ax1.scatter(years,gdp) #選用不同的ax變量,則可以在對應的subplot子圖中繪圖(散點圖、線形圖、柱狀圖)

ax2.plot(years,gdp)

ax3.bar(years,gdp)

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)11

plt.subplots可以輕松的創建子圖,而axes的索引類型類似于二維數組,這樣就可以對指定的子圖進行繪制。Subplot函數中有3個參數:垂直繪圖的數量、水平繪圖的數量以及表示繪圖位置的索引(基于行進行計算)

fig,axes=plt.subplots(2,2,figsize=(10,6)) axes[1,0].plot(years,gdp) axes[0,0].scatter(years,gdp) axes[0,1].bar(years,gdp) axes[1,1].hist(years,gdp)

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)12

注意:當沒有設置figsize時,創建多子圖會顯得擁擠。通過plt..subplot_adjust方法可以設置子圖的間距修改子圖之間的間距(增加額外的空間以調整兩個子圖之間的距離)

subplots__adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=None) ,其中前4個參數用于設置subplot子圖的外圍邊距,wspace和hapace參數設置用于設置subplot子圖間的邊距。

fig,axes=plt.subplots(2,2) #未設置figsize時,默認情況下,各sudplot子圖間都會留有一定的間距。

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)13

years=[1950,1960,1970,1980,1990,2000,2010] gdp=[300.2,543.3,1075.9,2862.5,5979.6,10289.7,14958.3] fig,axes=plt.subplots(2,2) plt.subplots_adjust(wspace=0.3,hspace=0.3) axes[1,0].plot(years,gdp) axes[0,0].scatter(years,gdp) axes[0,1].bar(years,gdp) axes[1,1].hist(years,gdp)

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)14

6. 樣式與字體:

Matplotlib自帶了一些樣式供用戶使用,如常用的ggplot樣式,通過plt.style.use('ggplot') 函數即可調用該樣式繪圖。

Matplotlib默認為英文字體,如果繪制中出現漢字就會亂碼,因此需要指定matplotlib的默認字體,這樣就可以解決亂碼的問題,

plt.rcParams['font.sans-serif']=['simhei'] #指定默認字體

plt.rcParams['axes.unicode_minus']=False #解決保存圖像時負号‘-’顯示為方塊的問題

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)15

如果你對Python編程感興趣,那麼記得私信小編“007”領取全套Python資料哦。

python怎麼用matplotlib畫圖(Python數據分析matplotlib可視化之繪圖)16

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved