中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
Matplotlib畫圖如此簡單
編程我最懂 2019-12-28 15:21:07

jupyter入門之Matplotlib

一. Matplotlib基礎(chǔ)知識

  • Matplotlib中的基本圖表包括的元素
  • x軸和y軸 axis 水平和垂直的軸線
  • 軸標(biāo)簽 axisLabel 水平和垂直的軸標(biāo)簽
  • x軸和y軸刻度 tick 刻度標(biāo)示坐標(biāo)軸的分隔,包括最小刻度和最大刻度
  • x軸和y軸刻度標(biāo)簽 tick label 表示特定坐標(biāo)軸的值
  • 繪圖區(qū)域(坐標(biāo)系) axes 實(shí)際繪圖的區(qū)域
  • 畫布 figure 呈現(xiàn)所有的坐標(biāo)系

可以用下圖來概括

1.子畫布

依賴導(dǎo)入

import numpy as npimport pandas as pdfrom pandas import Series,DataFrameimport matplotlib.pyplot as plt%matplotlib inline

只含單一曲線的圖

1、可以使用多個plot函數(shù)(推薦),在一個圖中繪制多個曲線

2、也可以在一個plot函數(shù)中傳入多對X,Y值,在一個圖中繪制多個曲線

x = np.arange(0,10,step=1)s1 = Series(x,index=list('abcdefghij'))s2 = Series(x**2,index=s1.index)# 索引和值一起設(shè)置plt.plot(x,x*2,x,x*3,x,x)

設(shè)置子畫布

axes = plt.subplot()

# 221的含義是將畫布分為兩行兩列,# axes1在第一個位置axes1 = plt.subplot(2,2,1)axes1.plot(x,x**2)# axes2在第四個位置axes2 = plt.subplot(2,2,4)axes2.plot(x,x**3)
# 子畫布可以按照不同的比例進(jìn)行拆分,可以在一個版面內(nèi)共存,# 但是,如果兩個子畫布有重疊部分,后繪制的畫布會覆蓋先繪制的畫布axes2 = plt.subplot(2,2,1)axes2.plot(x,x**2)axes1 = plt.subplot(3,3,1)axes1.plot(x,x*2)

網(wǎng)格線

2. 繪制正弦余弦

x = np.linspace(0,2*np.pi,100)y1 = np.sin(x)y2 = np.cos(x)# 自動選擇最近的畫布進(jìn)行開啟plt.grid(True)plt.plot(x,y1,x,y2)
axes1 = plt.subplot(221)# True 開啟網(wǎng)格線# linewidth設(shè)置網(wǎng)格線的粗細(xì)axes1.grid(True,linewidth=2)axes2 = plt.subplot(222)# alpha設(shè)置透明度 0-1之間的數(shù)axes2.grid(True,alpha=0.5)axes3 = plt.subplot(223)axes3.grid(True,color='green')axes4 = plt.subplot(224)# 設(shè)置網(wǎng)格線方向# linestyle/ls設(shè)置虛線axes4.grid(True,axis='x')

使用plt.grid方法可以開啟網(wǎng)格線,使用plt面向?qū)ο蟮姆椒?,?chuàng)建多個子圖顯示不同網(wǎng)格線

  • lw代表linewidth,線的粗細(xì)
  • alpha表示線的明暗程度
  • color代表顏色
  • axis顯示軸向

坐標(biāo)軸界限

plt.axis([xmin,xmax,ymin,ymax])

plt.plot(x,y1)# 注意:必須x,y軸同時設(shè)置界限plt.axis([-1,7.2,-2,2])
# 畫圓x = np.linspace(-1,1,100)f = lambda x:(1-x**2)**0.5plt.plot(x,f(x),x,-f(x))# 使用axis函數(shù)設(shè)置坐標(biāo)軸的顯示風(fēng)格plt.axis('equal')
axes = plt.subplot(111)axes.plot(x,f(x),x,-f(x))axes.axis('equal')

xlim方法和ylim方法

除了plt.axis方法,還可以通過xlim,ylim方法設(shè)置坐標(biāo)軸范圍

# 分別設(shè)置x軸和y軸界限plt.plot(x,y2)plt.xlim(-2,20)plt.ylim(-2,2)

面向?qū)ο箫L(fēng)格設(shè)置畫布樣式

axes = plt.subplot(111)axes.plot(x,y2)# 使用面向?qū)ο箫L(fēng)格設(shè)置畫布樣式,如果屬性找不到,就使用set_XX函數(shù)設(shè)置# .+Tab鍵,快捷查看對象屬性和方法axes.set_xlim(-5,5)axes.set_ylim(-5,5)

坐標(biāo)軸標(biāo)簽

xlabel方法和ylabel方法
plt.ylabel(‘y = x^2 + 5’,rotation = 60)旋轉(zhuǎn)

  • color 標(biāo)簽顏色
  • fontsize 字體大小
  • rotation 旋轉(zhuǎn)角度
plt.plot(x,y1)plt.xlabel('x_label',fontsize=35)plt.ylabel('y-label',color='pink',fontsize=40)
axes = plt.subplot(111)axes.plot(x,y1)# HTML支持的字體設(shè)置,在這里都可以使用color fontsize linestyle linewidth# fontsize 字體大小# color 字體顏色# rotation 旋轉(zhuǎn)角度axes.set_ylabel('y_label',fontsize=30,color='red',rotation=90)# 使用字典設(shè)置字體axes.set_xlabel('x_label',fontdict={    'fontsize':40,    'color':'blue'})

標(biāo)題

plt.title()方法

  • loc {left,center,right}
  • color 標(biāo)簽顏色
  • fontsize 字體大小
  • rotation 旋轉(zhuǎn)角度
plt.plot(x,y1)# loc設(shè)置標(biāo)題顯示位置(left,right,center)plt.title('SIN(X)',fontsize=60,color='purple',rotation=45,loc='left')

注:matplotlib顯示中文如何處理?

Windows:

from pylab import mpl# 指定默認(rèn)字體mpl.rcParams['font.sans-serif'] = ['FangSong'] # 解決保存圖像是負(fù)號'-'顯示為方塊的問題mpl.rcParams['axes.unicode_minus'] = False 

Mac:

import numpy as npimport matplotlibimport matplotlib.pyplot as pltfrom matplotlib.font_manager import FontProperties# 導(dǎo)入本地字體文件font = FontProperties(fname='/Library/Fonts/Songti.ttc')# Fixing random state for reproducibilitynp.random.seed(19680801)# 設(shè)置為FALSE 解決負(fù)號顯示為框的問題matplotlib.rcParams['axes.unicode_minus'] = Falsefig, ax = plt.subplots()ax.plot(10*np.random.randn(100), 10*np.random.randn(100), 'o')# 用fontproperties參數(shù)設(shè)置字體為自定義字體ax.set_title(u'散點(diǎn)圖',fontproperties=font,fontsize=30)plt.show()

3.圖例

原始方法

# 相關(guān)依賴導(dǎo)入...df = DataFrame(data=np.random.randint(0,100,size=(5,3)),columns=list('abc'))df.plot()

legend方法

兩種傳參方法:

  • 分別在plot函數(shù)中增加label參數(shù),再調(diào)用legend()方法顯示
  • 直接在legend方法中傳入字符串列表
x = np.arange(0,10,step=1)plt.plot(x,x,x,x*2,x,x/2)# 傳入一個列表參數(shù),參數(shù)內(nèi)容就是每一個data的說明plt.legend(['fast','normal','slow'])

第二種傳參

plt.plot(x,x,label='normal')plt.plot(x,x*2,label='fast')plt.plot(x,x/2,label='slow')plt.legend(loc=10)

loc參數(shù)

loc參數(shù)用于設(shè)置圖例標(biāo)簽的位置,一般在legend函數(shù)內(nèi)

matplotlib已經(jīng)預(yù)定義好幾種數(shù)字表示的位置

loc參數(shù)可以是2元素的元組,表示圖例左下角的坐標(biāo)

[0,0] 左下

[0,1] 左上

[1,0] 右下

[1,1] 右上

圖例也可以超過圖的界限loc = (-0.1,0.9)

plt.plot(x,x,label='normal')plt.plot(x,x*2,label='fast')plt.plot(x,x/2,label='slow')plt.legend(loc=[0.4,1.1],ncol=3)

ncol參數(shù)

ncol控制圖例中有幾列,在legend中設(shè)置ncol,需要設(shè)置loc

linestyle、color、marker

修改線條樣式

4.保存圖片

使用figure對象的savefig的函數(shù)

filename

含有文件路徑的字符串或Python的文件型對象。圖像格式由文件擴(kuò)展名推斷得出,例如,.pdf推斷出PDF,.png推斷出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)

dpi

圖像分辨率(每英寸點(diǎn)數(shù)),默認(rèn)為100

facecolor

圖像的背景色,默認(rèn)為“w”(白色)

# 獲取figure對象(畫布對象)# 設(shè)置畫布的背景色figure = plt.figure(facecolor='cyan')# 設(shè)置坐標(biāo)系的背景色axes = plt.subplot(111,facecolor='blue')# 設(shè)置線條的顏色axes.plot(x,x,x,x*2,color='yellow')# dpi設(shè)置像素大小figure.savefig('18011.png',dpi=50)

二. 設(shè)置plot的風(fēng)格和樣式

plot語句中支持除X,Y以外的參數(shù),以字符串形式存在,來控制顏色、線型、點(diǎn)型等要素,語法形式為: plt.plot(X, Y, ‘format’, …)

1.點(diǎn)和線的樣式

顏色

參數(shù)color或c

plt.plot(x,x,color='c')

常用色彩名與別名

透明度

alpha

plt.plot(x,x,alpha=0.3,color='r')

背景色

設(shè)置背景色,通過plt.subplot()方法傳入facecolor參數(shù),來設(shè)置坐標(biāo)系的背景色

# 設(shè)置坐標(biāo)系的背景plt.subplot(facecolor='red')plt.plot(x,np.sin(x))

線型

參數(shù)linestyle或ls

plt.plot(x,x,ls=':')plt.plot(x,x*2,ls='steps')plt.plot(x,x/2,ls='None')

常用線型

線寬

linewidth或lw參數(shù)

不同寬度的破折線

dashes參數(shù) eg.dashes = [20,50,5,2,10,5]

設(shè)置破折號序列各段的寬度

# dashes自定義破折線的樣式plt.plot(x,x,dashes=[10,2,3,5])

點(diǎn)型

  • marker 設(shè)置點(diǎn)形
  • markersize 設(shè)置點(diǎn)形大小
x = np.random.randint(0,10,size=6)plt.plot(x,marker='s',markersize=60)

常用點(diǎn)型參數(shù)設(shè)置

plt.plot(x,marker='4',markersize=30)plt.plot(x,x*2,marker='3',markersize=40)
plt.plot(np.random.randint(0,10,size=10),marker='h',markersize=20,label='六邊形1',)plt.plot(np.random.randint(0,10,size=10),marker='H',markersize=20,label='六邊形2')plt.plot(np.random.randint(0,10,size=10),marker='8',markersize=20,label='八邊形')plt.plot(np.random.randint(0,10,size=10),marker='p',markersize=20,label='五邊形')plt.legend()

標(biāo)記參數(shù)

2.多參數(shù)連用

顏色、點(diǎn)型、線型,可以把幾種參數(shù)寫在一個字符串內(nèi)進(jìn)行設(shè)置 ‘r-.o’

# 參數(shù)連用需要對不同的線進(jìn)行分別設(shè)置plt.plot(x,x,'r:v',x,x*2,'b--h')

更多點(diǎn)和線的設(shè)置

  • markeredgecolor = ‘green’,
  • markeredgewidth = 2,
  • markerfacecolor = ‘purple’
  • 多個曲線同一設(shè)置

    屬性名聲明,不可以多參數(shù)連用

    plt.plot(x1, y1, x2, y2, fmt, …)

    x = np.arange(0,10,1)# 統(tǒng)一設(shè)置plt.plot(x,x,x,x*2,x,x/2,linewidth=3,color='blue')# 分別設(shè)置plt.plot(x,x,'r-.s',x,x*2,'b--h')

    多曲線不同設(shè)置

    多個都進(jìn)行設(shè)置時,多參數(shù)連用 plt.plot(x1, y1, fmt1, x2, y2, fmt2, …)

    三種設(shè)置方式

    1.向方法傳入關(guān)鍵字參數(shù)

    1. import matplotlib as mpl

    2.對實(shí)例使用一系列的setter方法

    plt.plot()方法返回一個包含所有線的列表,設(shè)置每一個線需要獲取該線對象

    1. eg: lines = plt.plot(); line = lines[0]
    2. line.set_linewith()
    3. line.set_linestyle()
    4. line.set_color()

    3.對坐標(biāo)系使用一系列的setter方法

    axes = plt.subplot()獲取坐標(biāo)系

    • set_title()
    • set_facecolor()
    • set_xticks、set_yticks 設(shè)置刻度值
    • set_xticklabels、set_yticklabels 設(shè)置刻度名稱

    例:

    lines = plt.plot(x,x,x,x*2,x,x/2)# 根據(jù)line對象設(shè)置line的屬性lines[0].set_linewidth(3)lines[1].set_color('cyan')lines[2].set_linestyle('--')

    X、Y軸坐標(biāo)刻度

    plt.xticks()和plt.yticks()方法

    • 需指定刻度值和刻度名稱 plt.xticks([刻度列表],[名稱列表])
    • 支持fontsize、rotation、color等參數(shù)設(shè)置
    x = np.linspace(0,2*np.pi,100)plt.plot(x,np.sin(x))# xticks函數(shù)設(shè)置坐標(biāo)軸刻度和標(biāo)簽plt.xticks([0,np.pi/2,np.pi,3*np.pi/2,2*np.pi],['0','π/2','π','3π/2','2π'])
    axes = plt.subplot(111)axes.plot(x,np.sin(x))# 使用畫布對象設(shè)置坐標(biāo)軸刻度和坐標(biāo)軸刻度標(biāo)簽axes.set_xticks([0,np.pi/2,np.pi,3*np.pi/2,2*np.pi])axes.set_xticklabels(['0','$\pi$/2','π','3π/2','2π'],fontsize=20)axes.set_yticks([-1,0,1])axes.set_yticklabels(['min',0,'max'],fontsize=20)

    三、2D圖形

    1.直方圖

    【直方圖的參數(shù)只有一個x?。?!不像條形圖需要傳入x,y】

    hist()的參數(shù)

    bins

    可以是一個bin數(shù)量的整數(shù)值,也可以是表示bin的一個序列。默認(rèn)值為10

    normed

    如果值為True,直方圖的值將進(jìn)行歸一化處理,形成概率密度,默認(rèn)值為False

    color

    指定直方圖的顏色??梢允菃我活伾祷蝾伾男蛄小H绻付硕鄠€數(shù)據(jù)集合,顏色序列將會設(shè)置為相同的順序。如果未指定,將會使用一個默認(rèn)的線條顏色

    orientation

    通過設(shè)置orientation為horizontal創(chuàng)建水平直方圖。默認(rèn)值為vertical

    x = np.random.randint(0,100,size=100)plt.hist(x,bins=5)

    2. 條形圖

    【條形圖有兩個參數(shù)x,y】

    width 縱向設(shè)置條形寬度

    height 橫向設(shè)置條形高度

    bar()、barh()

    x = np.array([2,5,7,9,4,3,8])# x 就是底軸刻度標(biāo)簽# height 就是柱形圖的柱高# width 表示柱寬 (0-1取值)plt.bar(x=list('abcdefg'),height=x,width=1)# y 就是底軸刻度標(biāo)簽# width 就是柱形圖的柱高# height 表示柱寬plt.barh(y=list('abcdefg'),width=x,height=1)

    3. 餅圖

    【餅圖也只有一個參數(shù)x!】

    pie()
    餅圖適合展示各部分占總體的比例,條形圖適合比較各部分的大小

    普通部分占滿餅圖

    x = [45,6]plt.pie(x)

    普通未占滿餅圖

    x = [0.4,0.3]plt.pie(x)
    餅圖陰影、分裂等屬性設(shè)置labels參數(shù)設(shè)置每一塊的標(biāo)簽;labeldistance參數(shù)設(shè)置標(biāo)簽距離圓心的距離(比例值,只能設(shè)置一個浮點(diǎn)小數(shù))autopct參數(shù)設(shè)置比例值的顯示格式(%1.1f%%);pctdistance參數(shù)設(shè)置比例值文字距離圓心的距離explode參數(shù)設(shè)置每一塊頂點(diǎn)距圓形的長度(比例值,列表);colors參數(shù)設(shè)置每一塊的顏色(列表);shadow參數(shù)為布爾值,設(shè)置是否繪制陰影startangle參數(shù)設(shè)置餅圖起始角度
    # labeldistance只能設(shè)置一個小數(shù)plt.pie(x,labels=['男','女'],labeldistance=0.3,        autopct="%1.2f%%",pctdistance=0.8,       explode=[0.1,0.0],       colors=['blue','yellow'],       startangle=90,       shadow=True)

    4. 散點(diǎn)圖

    【 散點(diǎn)圖需要兩個參數(shù)x,y,但此時x不是表示x軸的刻度,而是每個點(diǎn)的橫坐標(biāo)!】

    scatter()

    x = np.random.normal(size=1000)y = np.random.normal(size=1000)# 生成1000個隨機(jī)顏色colors = np.random.random(size=(1000,3))# 使用c參數(shù)來設(shè)置顏色plt.scatter(x,y,marker='d',c=colors)

    四.3D圖

    曲面圖

    導(dǎo)包

    from mpl_toolkits.mplot3d.axes3d import Axes3D

    使用mershgrid函數(shù)切割x,y軸

    X,Y = np.meshgrid(x, y)

    創(chuàng)建3d坐標(biāo)系

    axes = plt.subplot(projection=’3d’)

    繪制3d圖形

    p = axes.plot_surface(X,Y,Z,color=’red’,cmap=’summer’,rstride=5,cstride=5)

    添加colorbar

    plt.colorbar(p,shrink=0.5)

    例:

    def createZ(x,y):    return np.sin(x) + np.cos(y)*2 - np.pi/5from mpl_toolkits.mplot3d.axes3d import Axes3Daxes = plt.subplot(projection='3d')x = np.linspace(-np.pi,np.pi,100)y = np.linspace(-np.pi,np.pi,100)# 使用x,y生成一組網(wǎng)格X,Y = np.meshgrid(x,y)Z = createZ(X,Y)p = axes.plot_surface(X,Y,Z,cmap='summer',rstride=5,cstride=5)plt.colorbar(p,shrink=0.5)

    五.玫瑰圖/極坐標(biāo)條形圖

    創(chuàng)建極坐標(biāo),設(shè)置polar屬性plt.axes(polar = True)繪制極坐標(biāo)條形圖index = np.arange(-np.pi,np.pi,2*np.pi/6)plt.bar(x=index ,height = [1,2,3,4,5,6] ,width = 2*np.pi/6)
    # 玫瑰圖x = np.array([2,5,7,9,4,3,8])plt.axes(polar = True)plt.bar(x=list('abcdefg'),height=x)

    六.圖形內(nèi)的文字、注釋、箭頭

    1.控制文字屬性的方法

    Prop

    所有的方法會返回一個matplotlib.text.Text對象

    # 畫布figure = plt.figure()# figure.text(x=1,y=1,s='這是figure對象的注釋')figure.suptitle('figure  title')# 等差數(shù)列x = np.linspace(-np.pi,np.pi,100)axes1 = plt.subplot(221)axes1.plot(x,np.sin(x))# x,y是以坐標(biāo)軸刻度為準(zhǔn)的一組數(shù)據(jù),描述了注釋信息的注釋位置axes1.text(x=0.5,y=0.5,s='這是一段注釋')axes2 = plt.subplot(222)axes2.plot(x,np.cos(x),color='red')

    2.圖形內(nèi)的文字

    text()

    3. 注釋

    annotate()

    xy參數(shù)設(shè)置箭頭指示的位置xytext參數(shù)設(shè)置注釋文字的位置arrowprops參數(shù)以字典的形式設(shè)置箭頭的樣式width參數(shù)設(shè)置箭頭長方形部分的寬度headlength參數(shù)設(shè)置箭頭尖端的長度,headwidth參數(shù)設(shè)置箭頭尖端底部的寬度shrink參數(shù)設(shè)置箭頭頂點(diǎn)、尾部與指示點(diǎn)、注釋文字的距離(比例值),可以理解為控制箭頭的長度
    figure = plt.figure(figsize=(8,6))axes = plt.subplot(111)axes.plot(x,np.sin(x))# s 注釋的文字# xy  箭頭指向的位置# xytext 注釋文字放置的位置# arrowprops沒有arrowstyle鍵的設(shè)置方式axes.annotate(s='this is a annotate',xy=(0.5,0.5),xytext=(0.8,0.8),             arrowprops = {                 'width':10,                 'headlength':12,                 'headwidth':15,                 'shrink':0.2             })# 使用arrowstyle設(shè)置箭頭樣式axes.annotate(s='this is a good text',xy=(-0.2,-0.2),xytext=(-0.4,-0.6),             arrowprops = {                'arrowstyle': 'fancy'             })
    本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
    打開APP,閱讀全文并永久保存 查看更多類似文章
    猜你喜歡
    類似文章
    純干貨:手把手教你用Python做數(shù)據(jù)可視化(附代碼)
    帶你十分鐘快速入門畫圖神器 Matplotlib
    Matplotlib數(shù)據(jù)可視化:文本與坐標(biāo)軸
    Python繪圖
    matplotlib繪圖入門詳解
    matplotlib繪圖基礎(chǔ)
    更多類似文章 >>
    生活服務(wù)
    熱點(diǎn)新聞
    分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
    綁定賬號成功
    后續(xù)可登錄賬號暢享VIP特權(quán)!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服