柚子快報(bào)邀請(qǐng)碼778899分享:Matplotlib數(shù)據(jù)可視化
柚子快報(bào)邀請(qǐng)碼778899分享:Matplotlib數(shù)據(jù)可視化
Matplotlib數(shù)據(jù)可視化
第一部分 介紹
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple 官網(wǎng):https://matplotlib.org/ 在數(shù)據(jù)分析與機(jī)器學(xué)習(xí)中,我們經(jīng)常要用到大量的可視化操作。一張制作精美的數(shù)據(jù)圖片,可以展示大量的信息,一圖頂千言 而在可視化中,Matplotlib算得上是最常用的工具。Matplotlib 是 python 最著名的繪圖庫(kù),它提供了一整套 API,十分適合繪制圖表,或修改圖表的一些屬性,如字體、標(biāo)簽、范圍等 Matplotlib 是一個(gè) Python 的 2D 繪圖庫(kù),它交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形。通過(guò) Matplotlib這個(gè)標(biāo)準(zhǔn)類庫(kù),開發(fā)者只需要幾行代碼就可以實(shí)現(xiàn)生成繪圖,折線圖、散點(diǎn)圖、柱狀圖、餅圖、直方圖、組合圖等數(shù)據(jù)分析可視化圖表。
第二部分 基礎(chǔ)知識(shí)
第一節(jié) 圖形繪制
import numpy as np
import matplotlib.pyplot as plt
# 1、圖形繪制
x = np.linspace(0,2*np.pi) # x軸
y = np.sin(x) # 正弦 y軸
# 繪制線形圖
# 調(diào)整尺寸
plt.figure(figsize=(9,6))
plt.plot(x,y)
# 繼續(xù)調(diào)用plot繪制多條線形圖
# 2、設(shè)置網(wǎng)格線
plt.grid(linestyle = '--',# 樣式
color = 'green',# 顏色
alpha = 0.75) # 透明度
# 3、設(shè)置坐標(biāo)軸范圍
plt.axis([-1,10,-1.5,1.5])
plt.xlim([-1,10])
plt.ylim([-1.5,1.5])
第二節(jié) 坐標(biāo)軸刻度、標(biāo)簽、標(biāo)題
import numpy as np
import matplotlib.pyplot as plt
# 1、圖形繪制
x = np.linspace(0,2*np.pi) # x軸
# y軸
y = np.sin(x) # 正弦
plt.plot(x,y)
plt.title("sin(x)", fontsize=18, color='red', pad = 20)
# 2、設(shè)置x軸y軸刻度
plt.xticks(np.arange(0,7,np.pi/2))
plt.yticks([-1,0,1])
# 3、設(shè)置x軸y軸刻度標(biāo)簽
_ = plt.yticks(ticks = [-1,0,1],labels=['min',' 0 ','max'],
fontsize = 20,ha= 'right')
font={
'family':'serif','style':'italic','weight':'normal','color':'red','size':16}
_ = plt.xticks(ticks = np.arange(0,7,np.pi/2),
# LaTex語(yǔ)法,輸入格式為:r'$\sigma$' #其中的sigma對(duì)應(yīng)于希臘字母的σ
labels = ['0',r'$\frac{\pi}{2}$',r'$\pi$',r'$\frac{3\pi}{2}$',r'$2\pi$'], #r表示需要轉(zhuǎn)義
fontsize = 20,
fontweight = 'normal',
color = 'red')
# 4、坐標(biāo)軸標(biāo)簽,標(biāo)題
plt.ylabel('y = sin(x)',rotation = 0,horizontalalignment = 'right',
fontstyle = 'normal',fontsize = 20)
# 獲取電腦上的字體庫(kù)
from matplotlib.font_manager import FontManager
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
# print(mat_fonts)
plt.rcParams['font.sans-serif'] = 'Songti SC' # 設(shè)置宋體,顯示中文
plt.title('正弦波')
第三節(jié) 圖例
import numpy as np
import matplotlib.pyplot as plt
# 1、圖形繪制
x = np.linspace(0,2*np.pi) # x軸
# y軸
y = np.sin(x) # 正弦
# 繪制線形圖
# 調(diào)整尺寸
plt.figure(figsize=(9,6))
plt.plot(x,y)
# 2、圖例
y1 = np.cos(x)
plt.plot(x, y1) # 余弦波
plt.plot(x, y + y1)
plt.legend(['Sin','Cos', 'S'],fontsize = 18,
loc = 'center',ncol = 3,
bbox_to_anchor =[0,1.05,1,0.2]) # x=0,y=1.05,width=1,height=0.2
第四節(jié) 脊柱移動(dòng)
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi,np.pi,50)
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(9,6))
#同時(shí)繪制兩個(gè)圖像 x-y成對(duì)出現(xiàn)
plt.plot(x,np.sin(x), x,np.cos(x))
ax = plt.gca() # 獲取當(dāng)前視圖
# 右邊和上面脊柱消失
ax.spines['right'].set_color('white') #同set_alpha(0)
ax.spines['top'].set_color('#FFFFFF') #白色
# 設(shè)置下面左邊脊柱位置,data表示數(shù)據(jù),axes表示相對(duì)位置0~1
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.yticks([-1,0,1],labels=['-1','0','1'],fontsize = 18)
_ = plt.xticks([-np.pi,-np.pi/2,np.pi/2,np.pi],
labels=[r'$-\pi$',r'$-\frac{\pi}{2}$',r'$\frac{\pi}{2}$',r'$\pi$'],
fontsize = 18)
第五節(jié) 圖片保存
import numpy as np
import matplotlib.pyplot as plt
# 1、圖形繪制
x = np.linspace(0,2*np.pi) # x軸
# y軸
y = np.sin(x) # 正弦波
plt.figure(linewidth = 4, facecolor='blue')
plt.plot(x,y,color = 'red')
plt.plot(x,np.cos(x),color = 'k') # 余弦波
ax = plt.gca() # 獲取視圖
ax.set_facecolor('lightgreen') # 設(shè)置視圖背景顏色
# 2、圖例
plt.legend(['Sin','Cos'],fontsize = 18,loc = 'center',ncol = 2,
bbox_to_anchor =[0,1.05,1,0.2])
# plt.tight_layout() # 自動(dòng)調(diào)整布局空間,就不會(huì)出現(xiàn)圖片保存不完整
plt.savefig('./基礎(chǔ)5.png', # 文件名:png、jpg、pdf
dpi = 100, # 保存圖片像素密度,默認(rèn)100
facecolor = 'violet', # 視圖與邊界之間顏色設(shè)置
edgecolor = 'lightgreen', # 視圖邊界顏色設(shè)置
bbox_inches = 'tight')# 保存圖片完整
第三部分 風(fēng)格和樣式
第一節(jié) 顏色、線形、點(diǎn)形、線寬、透明度
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,2*np.pi,20)
y1 = np.sin(x)
y2 = np.cos(x)
# 設(shè)置顏色,線型,點(diǎn)型
plt.plot(x,y1,color = 'indigo',ls = '-.',marker = 'p') #marker表示特定形狀的點(diǎn)
plt.plot(x,y2,color = '#FF00EE',ls = '--',marker = 'o') #rgb 十六進(jìn)制表示0~255
plt.plot(x,y1 + y2,color = (0.2,0.7,0.2),marker = '*',ls = ':')
plt.plot(x,y1 + 2*y2,linewidth = 3,alpha = 0.7,color = 'orange') # 線寬、透明度
plt.plot(x,2*y1 - y2,'bo--') # 參數(shù)連用 b帶blue o表示marker --表示ls
第二節(jié) 更多屬性設(shè)置
import numpy as np
import pandas as pd
def f(x):
return np.exp(-x) * np.cos(2*np.pi*x)
x = np.linspace(0,5,50)
plt.figure(figsize=(9,6))
plt.plot(x,f(x),color = 'purple',
marker = 'o', #點(diǎn)的形狀
ls = '--', #點(diǎn)連接的線樣式
lw = 2, #線寬
alpha = 0.6, #透明度
markerfacecolor = 'red',# 點(diǎn)顏色
markersize = 10,# 點(diǎn)大小
markeredgecolor = 'green',#點(diǎn)邊緣顏色
markeredgewidth = 3)#點(diǎn)邊緣寬度
plt.xticks(size = 18) # 設(shè)置刻度大小
_=plt.yticks(size = 18) #變量接收則不會(huì)打印其他東西
第四部分 多圖布局
第一節(jié) 子視圖
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 50) #50個(gè)點(diǎn)
y = np.sin(x)
# 子視圖1
plt.figure(figsize=(9,6))
ax = plt.subplot(221) # 兩行兩列 第一個(gè)子視圖
ax.plot(x,y,color = 'red') #通過(guò)子視圖ax畫圖
ax.set_facecolor('green') # 調(diào)用子視圖設(shè)置方法,設(shè)置子視圖整體屬性
# 子視圖2
ax = plt.subplot(2,2,2) # 兩行兩列第二個(gè)子視圖
line, = ax.plot(x,-y) # 返回繪制對(duì)象 #逗號(hào)不能刪 line,相當(dāng)于line[0],列表中只有一個(gè)數(shù)據(jù)的時(shí)候,line是一個(gè)列表
line.set_marker('*') # 調(diào)用對(duì)象設(shè)置方法,設(shè)置屬性
line.set_markerfacecolor('red')
line.set_markeredgecolor('green')
line.set_markersize(10)
# 子視圖3
ax = plt.subplot(2,1,2) # 兩行一列 第二行視圖
plt.sca(ax) # 設(shè)置當(dāng)前視圖為ax子視圖
x = np.linspace(-np.pi,np.pi,200)
plt.plot(x,np.sin(x*x),color = 'red') #畫到子視圖ax中
#批量創(chuàng)建子視圖
fig,axes = plt.subplots(2,2) #四個(gè)視圖
axes[0,0].plot(x, np.sin(x), color = 'red')
axes[0,1].plot(x, np.sin(x), color = 'green')
axes[1,0].plot(x, np.cos(x), color = 'purple')
axes[1,1].plot(x, np.cos(x), color = 'pink')
第二節(jié) 嵌套
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi,np.pi,25)
y = np.sin(x)
fig = plt.figure(figsize=(9,6)) # 創(chuàng)建視圖
plt.plot(x,y)
# 嵌套方式一,axes軸域(橫縱坐標(biāo)范圍),子視圖
ax = plt.axes([0.2,0.55,0.3,0.3]) # 參數(shù)含義[left, bottom, width, height]
ax.plot(x,y,color = 'g')
# 嵌套方式二
ax = fig.add_axes([0.55,0.2,0.3,0.3]) # 使用視圖對(duì)象添加子視圖
ax.plot(x,y,color = 'r')
第三節(jié) 多圖布局分格顯示
3.3.1 均勻布局
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,2*np.pi)
# sharex:所有小圖共享x軸 sharey:表示所有小圖共享y軸 坐標(biāo)軸以所有小圖中范圍最大的進(jìn)行顯示
fig,
柚子快報(bào)邀請(qǐng)碼778899分享:Matplotlib數(shù)據(jù)可視化
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。