欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Matplotlib數(shù)據(jù)可視化模塊使用詳解

 更新時間:2022年11月21日 15:29:24   作者:切糕師學(xué)AI  
matplotlib是基建立在python之上,適用于創(chuàng)建靜態(tài),動畫和交互式可視化,通常與數(shù)據(jù)分析模塊pandas搭配使用,用于數(shù)據(jù)的分析和展示,適用于主流的操作系統(tǒng),如Linux、Win、Mac

本文主要介紹python 數(shù)據(jù)可視化模塊 Matplotlib,并試圖對其進行一個詳盡的介紹。

通過閱讀本文,你可以:

  • 了解什么是 Matplotlib
  • 掌握如何用 Matplotlib 繪制各種圖形(柱狀圖、餅狀圖、直方圖等)
  • 掌握如何定制圖形的顏色和樣式
  • 掌握如何用 Matplotlib 繪制三維圖

前言

為了將數(shù)據(jù)變成所有人都喜歡的圖形,就需要使用本文要介紹的數(shù)據(jù)可視化庫Matplotlib。當(dāng)然,還有很多類似的程序庫。但 Matplotlib 的功能更強大,而且可以很容易與Numpy、Pandas 等程序庫結(jié)合在一起使用。

Matplotlib 是一個 Python 的 2D 繪圖庫。通過 Matplotlib,開發(fā)者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。學(xué)習(xí) Matplotlib,可讓數(shù)據(jù)可視化,更直觀的真實給用戶。使數(shù)據(jù)更加客觀、更具有說服力。 Matplotlib 是 Python的庫,又是開發(fā)中常用的庫。

1 matplotlib 開發(fā)環(huán)境搭建

如果使用的是 Anaconda Python 開 發(fā) 環(huán) 境 , 那 么Matplotlib 已 經(jīng) 被 集 成 進Anaconda,并不需要單獨安裝。

如果使用的是標準的Python 開發(fā)環(huán)境,可以使用下面的命令安裝 Matplotlib,語法格式如下:

pip install matplotlib

如果要了解 Matplotlib 更詳細的情況,請訪問官方網(wǎng)站。網(wǎng)址如下:https://matplotlib.org。

安裝完 Matplotlib 后,可以測試一下 Matplotlib 是否安裝成功。進入 Python 的環(huán)境使用下面的語句導(dǎo)入 matplotlib.pyplot 模塊。如果不出錯,就說明 Matplotlib 已經(jīng)安裝成功了。

import matplotlib.pyplot as plt

2 繪制基礎(chǔ)

在使用 Matplotlib 繪制圖形時,其中有兩個最為常用的場景。一個是畫點,一個是畫線。

pyplot 基本方法的使用如下。

2.1 繪制直線

在使用 Matplotlib 繪制線性圖時,其中最簡單的是繪制線圖。在下面的實例代碼中,使用 Matplotlib 繪制了一個簡單的直線。具體實現(xiàn)過程如下:

  • 導(dǎo)入模塊 pyplot,并給它指定別名 plt,以免反復(fù)輸入 pyplot。在模塊 pyplot中包含很多用于生產(chǎn)圖表的函數(shù)。
  • 將繪制的直線坐標傳遞給函數(shù) plot()。
  • 通過函數(shù) plt.show()打開 Matplotlib 查看器,顯示繪制的圖形。

【示例 1】使用 matplotlib 根據(jù)兩點繪制一條線

import matplotlib.pyplot as plt 
#將(0,1)點和(2,4)連起來
plt.plot([0,2],[1,4])
plt.show()

2.2 繪制折線

在上述的實例代碼中,使用兩個坐標繪制一條直線,接下來使用平方數(shù)序列 1、4、9、16 和 25 來繪制一個折線圖。

【示例 2】使用 matplotlib 繪制折線圖

import matplotlib.pyplot as plt 
x=[1,2,3,4,5] 
squares=[1,4,9,16,25] 
plt.plot(x,squares)
plt.show()

2.3 設(shè)置標簽文字和線條粗細

在上面的實例直線結(jié)果不夠完美,開發(fā)者可以繪制的線條樣式進行靈活設(shè)置。例如:可以設(shè)置線條的粗細、設(shè)置文字等。

【示例 3】使用 matplotlib 繪制折線圖并設(shè)置樣

import matplotlib.pyplot as plt 
datas=[1,2,3,4,5] 
squares=[1,4,9,16,25]
plt.plot(datas,squares,linewidth=5) 
#設(shè)置線條寬度#設(shè)置圖標標題,并在坐標軸上添加標簽plt.title('Numbers',fontsize=24) 
plt.xlabel('datas',fontsize=14) 
plt.ylabel('squares',fontsize=14)
plt.show()

Matplotlib 默認情況不支持中文,可以使用以下簡單的方法來解決:

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽

【示例 4】解決標簽、標題中的中文問題

import matplotlib.pyplot as plt
datas=[1,2,3,4,5]
squares=[1,4,9,16,25] 
plt.plot(datas,squares,linewidth=5) 
#設(shè)置線條寬度#設(shè)置中文亂碼問題
plt.rcParams['font.sans-serif'] = ['SimHei'] 
#設(shè)置圖標標題,并在坐標軸上添加標簽
plt.title('標題設(shè)置',fontsize=24) 
plt.xlabel('x 軸',fontsize=14)
plt.ylabel('y 軸',fontsize=14)
plt.show()

2.4 繪制一元二次方程的曲線 y=x^2

Matplotlib 有很多函數(shù)用于繪制各種圖形,其中 plot 函數(shù)用于曲線,需要將 200 個點的x 坐標和 Y 坐標分別以序列的形式傳入 plot 函數(shù),然后調(diào)用 show 函數(shù)顯示繪制的圖形。一元二次方程的曲線。

【示例 5】使用 matplotlib 繪制一元二次方程曲線

import matplotlib.pyplot as plt 
#200 個點的 x 坐標
x=range(-100,100)
#生成 y 點的坐標
y=[i**2 for i in x ] 
#繪制一元二次曲線
plt.plot(x,y)
#調(diào)用 savefig 將一元二次曲線保存為 result.jpg
#plt.savefig('result.jpg') #如果直接寫成 plt.savefig('cos')  會生成 cos.png
plt.show()

2.5 繪制正弦曲線和余弦曲線

使用 plt 函數(shù)繪制任何曲線的第一步都是生成若干個坐標點(x,y),理論上坐標點是越多越好。本例取 0 到 10 之間 100 個等差數(shù)作為 x 的坐標,然后將這 100 個 x 坐標值一起傳入 Numpy 的 sin 和 cos 函數(shù),就會得到 100 個 y 坐標值,最后就可以使用 plot 函數(shù)繪制正弦曲線和余弦曲線。

【示例 6】使用 matplotlib 繪制正弦曲線和余弦曲線

import matplotlib.pyplot as plt
import numpy as np
#生成 x 的坐標(0-10 的 100 個等差數(shù)列)
x=np.linspace(0,10,100)
sin_y=np.sin(x) 
#繪制正弦曲線
plt.plot(x,sin_y) 
#繪制余弦曲線
cos_y=np.cos(x) 
plt.plot(x,cos_y) 
plt.show()

上面的示例可以看到,調(diào)用兩次 plot 函數(shù),會將 sin 和 cos 曲線繪制到同一個二維坐標系中,如果想繪制到兩張畫布中,可以調(diào)用 subplot()函數(shù)將畫布分區(qū)。

import matplotlib.pyplot as plt
import numpy as np
#將畫布分為區(qū)域,將圖畫到畫布的指定區(qū)域
x=np.linspace(1,10,100)
#將畫布分為 2 行 2 列,將圖畫到畫布的 1 區(qū)域
plt.subplot(2,2,1)
plt.plot(x,np.sin(x))
plt.subplot(2,2,3)
plt.plot(x,np.cos(x))
plt.show()

3 繪制散點圖

使用 scatter 函數(shù)可以繪制隨機點,該函數(shù)需要接收 x坐標和 y 坐標的序列。

【示例 8】使用 matplotlib 繪制 sin()函數(shù)的散點圖

import matplotlib.pyplot as plt
import numpy as np
#畫散點圖
x=np.linspace(0,10,100)
#生成 0 到 10 中 100 個等差數(shù)
plt.scatter(x,np.sin(x))
plt.show()

【示例 9】繪制 10 種大小 100 種顏色的散點圖

import matplotlib.pyplot as plt
import numpy as np
#  畫 10 種大小, 100 種顏色的散點圖
np.random.seed(0) 
x=np.random.rand(100) 
y=np.random.rand(100) 
colors=np.random.rand(100) 
size=np.random.rand(100)*1000
plt.scatter(x,y,c=colors,s=size,alpha=0.7)
plt.show()

作為線性圖的替代,可以通過向 plot() 函數(shù)添加格式字符串來顯示離散值。 可以使用如表 2-2 格式化字符。

顏色的縮寫如下:

【示例 10】繪制不同種類不同顏色的線

import matplotlib.pyplot as plt 
import numpy as np
#不同種類不同顏色的線
x=np.linspace(0,10,100) 
plt.plot(x,x+0,'-g')	#實線  綠色
plt.plot(x,x+1,'--c')	#虛線 淺藍色
plt.plot(x,x+2,'-.k')	#點劃線 黑色
plt.plot(x,x+3,'-r')	#實線  紅色
plt.plot(x,x+4,'o')	#點   默認是藍色
plt.plot(x,x+5,'x')	#叉叉  默認是藍色
plt.plot(x,x+6,'d')	#磚石  紅色
plt.show()

【示例 11】添加圖例

#不同種類不同顏色的線并添加圖例
x=np.linspace(0,10,100)
plt.plot(x,x+0,'-g',label='-g')	#實線  綠色
plt.plot(x,x+1,'--c',label='--c')	#虛線 淺藍色
plt.plot(x,x+2,'-.k',label='-.k')	#點劃線 黑色
plt.plot(x,x+3,'-r',label='-r')	#實線  紅色
plt.plot(x,x+4,'o',label='o')	#點   默認是藍色
plt.plot(x,x+5,'x',label='x')	#叉叉  默認是藍色
plt.plot(x,x+6,'dr',label='dr')	#磚石  紅色
#添加圖例右下角 lower right	左上角 upper left  邊框  透明度  陰影  邊框?qū)挾?
plt.legend(loc='lower right',fancybox=True,framealpha=1,shadow=True,borderpad=1) 
plt.show()

4 繪制柱狀圖

使用 bar 函數(shù)可以繪制柱狀圖。柱狀圖需要水平的x 坐標值,以及每一個 x 坐標值對應(yīng)的 y 坐標值,從而形成柱狀的圖。柱狀圖主要用來縱向?qū)Ρ群蜋M向?qū)Ρ鹊?。例如,根?jù)年份對銷售收據(jù)進行縱向?qū)Ρ龋瑇 坐標值就表示年份,y 坐標值表示銷售數(shù)據(jù)。

【示例 12】使用 bar()繪制柱狀圖,并設(shè)置柱的寬度

import matplotlib.pyplot as plt 
import numpy as np 
x=[1980,1985,1990,1995]
x_labels=['1980 年','1985 年','1990 年','1995 年']
y=[1000,3000,4000,5000]
plt.bar(x,y,width=3)
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽
plt.xticks(x,x_labels) 
plt.xlabel('年份') 
plt.ylabel('銷量')
plt.title('根據(jù)年份銷量對比圖')
plt.show()

需要注意的是 bar 函數(shù)的寬度并不是像素寬度。bar 函數(shù)會根據(jù)二維坐標系的尺寸,以及 x 坐標值的多少,自動確定每一個柱的寬度,而 width 指定的寬度就是這個標準柱寬度的倍數(shù)。該參數(shù)值可以是浮點數(shù),如 0.5,表示柱的寬度是標準寬度的 0.5 倍。

【示例 13】使用 bar()和 barh()函數(shù)繪制柱狀圖

import matplotlib.pyplot as plt 
import numpy as np 
np.random.seed(0) 
x=np.arange(5) 
y=np.random.randint(-5,5,5) 
print(x,y)
# 將畫布分隔成一行兩列
plt.subplot(1,2,1) 
#在第一列中畫圖
v_bar=plt.bar(x,y)
#在第一列的畫布中 0 位置畫一條藍線
plt.axhline(0,color='blue',linewidth=2) 
plt.subplot(1,2,2)
#barh 將 y 和 x 軸對換 豎著方向為 x 軸
h_bar=plt.barh(x,y,color='red')
#在第二列的畫布中 0 位置處畫藍色的線
plt.axvline(0,color='red',linewidth=2) 
plt.show()

【示例 14】對柱狀圖的部分柱狀設(shè)置顏色

import matplotlib.pyplot as plt 
import numpy as np 
np.random.seed(0) 
x=np.arange(5) 
y=np.random.randint(-5,5,5)
v_bar=plt.bar(x,y,color='lightblue')
for bar,height in zip(v_bar,y):
    if height<0:
        bar.set(edgecolor='darkred',color='lightgreen',linewidth=3)
plt.show()

【示例 15】使用 bar()繪制三天中三部電影的票房變化

import matplotlib.pyplot as plt 
import numpy as np
#三天中三部電影的票房變化
real_names=['千與千尋','玩具總動員 4','黑衣人:全球追緝']
real_num1=[5453,7548,6543] 
real_num2=[1840,4013,3421] 
real_num3=[1080,1673,2342]
#生成 x	第 1 天   第 2 天   第 3 天
x=np.arange(len(real_names))
x_label=['第{}天'.format(i+1) for i in range(len(real_names))]
#繪制柱狀圖#設(shè)置柱的寬度
width=0.3
plt.bar(x,real_num1,color='g',width=width,label=real_names[0])
plt.bar([i+width for i in x],real_num2,color='b',width=width,label=real_names[1]) 
plt.bar([i+2*width for i in x],real_num3,color='r',width=width,label=real_names[2]) 
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽
#修改 x 坐標
plt.xticks([i+width for i in x],x_label)
#添加圖例plt.legend() #添加標題
plt.title('3 天的票房數(shù)')
plt.show()

5 繪制餅狀圖

pie 函數(shù)可以繪制餅狀圖,餅圖主要是用來呈現(xiàn)比例的。只要傳入比例數(shù)據(jù)即可。

【示例 16】繪制餅狀圖

#導(dǎo)入模塊
import matplotlib.pyplot as plt 
import numpy as np
#準備男、女的人數(shù)及比例
man=71351
woman=68187 
man_perc=man/(woman+man) 
woman_perc=woman/(woman+man) #添加名稱
labels=['男','女'] #添加顏色
colors=['blue','red'] #繪制餅狀圖  pie
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽
# labels  名稱 colors:顏色,explode=分裂  autopct 顯示百分比
paches,texts,autotexts=plt.pie([man_perc,woman_perc],labels=labels,colors=colors,explode=(0,0.05),autopct='%0.1f%%')
#設(shè)置餅狀圖中的字體顏色
for text in autotexts:
	text.set_color('white')
#設(shè)置字體大小
for text in texts+autotexts:
	text.set_fontsize(20)
plt.show()

6 繪制直方圖

直方圖與柱狀圖的分格類似,都是由若干個柱組成,但直方圖和柱狀圖的含義卻有很大的差異。直方圖

是用來觀察分布狀態(tài)的,而柱狀圖是用來看每一個 X 坐標對應(yīng)的 Y 的值的。也就是說,直方圖關(guān)注的是分布,并不關(guān)心具體的某個值,而柱狀圖關(guān)心的是具體的某個值。使用 hist函數(shù)繪制直方圖。

【示例 17】繪制直方圖

import numpy as np
import matplotlib.pyplot as plt
#頻次直方圖,均勻分布
#正太分布
x=np.random.randn(1000) 
#畫正太分布圖
# plt.hist(x)
plt.hist(x,bins=100) #裝箱的操作,將 10 個柱裝到一起及修改柱的寬度
plt.show()

【示例 18】同一畫布繪制三個直方圖

import numpy as np
import matplotlib.pyplot as plt
#幾個直方圖畫到一個畫布中,第一個參數(shù)期望  第二個均值
x1=np.random.normal(0,0.8,1000) 
x2=np.random.normal(-2,1,1000) 
x3=np.random.normal(3,2,1000)
#參數(shù)分別是 bins:裝箱,alpha:透明度
kwargs=dict(bins=100,alpha=0.4) 
plt.hist(x1,**kwargs)
plt.hist(x2,**kwargs) 
plt.hist(x3,**kwargs) 
plt.show()

7 繪制等高線圖

【 示例 19 】使用matplotlib 繪制等高線圖

#導(dǎo)入模塊
import matplotlib.pyplot as plt 
import numpy as np
x=np.linspace(-10,10,100)
y=np.linspace(-10,10,100)
#計算 x 和 y 的相交點 a
X,Y=np.meshgrid(x,y)
# 計算 Z 的坐標
Z=np.sqrt(X**2+Y**2) 
plt.contourf(X,Y,Z) 
plt.contour(X,Y,Z)
# 顏色越深表示值越小,中間的黑色表示 z=0.
plt.show()

8 繪制三維圖

使用 pyplot 包和 Matplotlib 繪制三維圖。

【示例 20】使用 Matplotlib 繪制三維圖

import matplotlib.pyplot as plt
#導(dǎo)入 3D 包
from mpl_toolkits.mplot3d import Axes3D
#創(chuàng)建 X、Y、Z 坐標
X=[1,1,2,2] 
Y=[3,4,4,3] 
Z=[1,100,1,1]
fig = plt.figure()
#  創(chuàng)建了一個 Axes3D 的子圖放到 figure 畫布里面
ax = Axes3D(fig) 
ax.plot_trisurf(X, Y, Z)
plt.show()

總結(jié)

以上就是我對數(shù)據(jù)可視化模塊 Matplotlib知識點的詳細介紹。

到此這篇關(guān)于Python Matplotlib數(shù)據(jù)可視化模塊使用詳解的文章就介紹到這了,更多相關(guān)Python Matplotlib內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas 讀取各種格式文件的方法

    pandas 讀取各種格式文件的方法

    今天小編就為大家分享一篇pandas 讀取各種格式文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python學(xué)習(xí)筆記之For循環(huán)用法詳解

    Python學(xué)習(xí)筆記之For循環(huán)用法詳解

    這篇文章主要介紹了Python學(xué)習(xí)筆記之For循環(huán)用法,結(jié)合實例形式詳細分析了Python for循環(huán)的功能、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-08-08
  • python入門之井字棋小游戲

    python入門之井字棋小游戲

    這篇文章主要為大家詳細介紹了python入門學(xué)習(xí)之井字棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 如何在python中用os模塊實現(xiàn)批量移動文件

    如何在python中用os模塊實現(xiàn)批量移動文件

    在工作中難免會遇到需要批量整理文件的情況,當(dāng)需要從一堆文件中將部分文件批量地轉(zhuǎn)移時,如果手工一一轉(zhuǎn)移難免浪費時間,這篇文章主要給大家介紹了關(guān)于如何在python中用os模塊實現(xiàn)批量移動文件的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑

    淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑

    最近的項目需要根據(jù)用戶所屬時區(qū)制定一些特定策略,學(xué)習(xí)、應(yīng)用了若干python3的時區(qū)轉(zhuǎn)換相關(guān)知識,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 如何基于python3和Vue實現(xiàn)AES數(shù)據(jù)加密

    如何基于python3和Vue實現(xiàn)AES數(shù)據(jù)加密

    這篇文章主要介紹了如何基于python3和Vue實現(xiàn)AES數(shù)據(jù)加密,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Pandas中GroupBy具體用法詳解

    Pandas中GroupBy具體用法詳解

    pandas中的DF數(shù)據(jù)類型可以像數(shù)據(jù)庫表格一樣進行g(shù)roupby操作。通常來說groupby操作可以分為三部分:分割數(shù)據(jù),應(yīng)用變換和和合并數(shù)據(jù)。本文就詳細的來介紹一下,感興趣的可以了解一下
    2021-07-07
  • pandas中Timestamp類用法詳解

    pandas中Timestamp類用法詳解

    這篇文章主要為大家詳細介紹了pandas中Timestamp類用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python實現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法

    python實現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法

    這篇文章主要介紹了python實現(xiàn)將pvr格式轉(zhuǎn)換成pvr.ccz的方法,涉及Python實現(xiàn)格式轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • PyTorch CUDA環(huán)境配置及安裝的步驟(圖文教程)

    PyTorch CUDA環(huán)境配置及安裝的步驟(圖文教程)

    這篇文章主要介紹了PyTorch CUDA環(huán)境配置及安裝的步驟(圖文教程),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論