Python可视化库matplotlib(基础整理)
https://blog.csdn.net/weixin_39777626/article/details/78598346
繪制基本曲線使用plot函數繪制函數曲線,可以調整plot函數參數配置曲線樣式、粗細、顏色、標記等
設置坐標軸(1.)spines移動坐標軸(2.)xlim方法設置坐標軸刻度取值范圍(3.)xticks,yticks方法設置x,y軸的刻度標簽值(4.)title方法設置標題,xlabel,ylabel方法設置坐標軸描述設置圖片上的描述(1.)text方法設置圖片上的文字描述和注解(2.)annotate方法對圖片上某個點加注解(3.)legend方法設置圖像圖例可使用如下兩種方式:?1: 在 plt.plot 函數中添加 label 參數后,使用 plt.legend(loc=’up right’)?2: 不使用參數 label, 直接使用如下命令:
網格線開關plt.grid(True)圖像顯示plt.show()圖像保存savefig(‘../ / .png’)常用圖形(1)曲線圖:描繪波動,2個維度matplotlib.pyplot.plot(data)?(2)灰度圖:直方圖,1個維度matplotlib.pyplot.hist(data)?(3)散點圖:2個維度數據的關聯程度matplotlib.pyplot.scatter(data)?(4)箱式圖:設定上下限,除數據噪聲matplotlib.pyplot.boxplot(data)?(5)餅狀圖:各類別占比matplotlib.pyplot.pie(data)
本文下述各個代碼片段都是獨立運行的,其文章里其余代碼片段無關。
一幅數據圖基本上包括如下結構:?Data: 數據區,包括數據點\描繪形狀?Axis: 坐標軸,包括X軸\Y軸及其標簽、刻度尺及其標簽?Title: 標題,數據圖的描述?Legend: 圖例,區分圖中包含的多種曲線或不同分類的數據?其他的還有圖形文本 (Text)\注解 (Annotate)等其他描述
繪制基本曲線使用plot函數繪制函數曲線,可以調整plot函數參數配置曲線樣式、粗細、顏色、標記等
%matplotlib inline??#圖嵌入web窗口jupyter notebook中
import numpy as npimport matplotlib.pyplot as pltfrom pylab import *
#準備數據x=np.arange(0.,10,0.2)y1=np.cos(x)y2=np.sin(x)y3=np.sqrt(x)
plt.rcParams['figure.figsize']=(12,8)? ?#reParams設置圖片尺寸plt.plot(x,y1,color='blue',linewidth=1.5,linestyle='-',marker='.',label=r'$y=cos{x}$')plt.plot(x,y2,color='green',linewidth=1.5,linestyle='-',marker='*',label=r'$y=sin{x}$')plt.plot(x,y3,color='m',linewidth=1.5,linestyle='-',marker='x',label=r'$y=\sqrt{x}$')
#color參數設定線顏色#linewidth參數設定虛線、點化虛線、粗虛線、實線#marker參數設定在曲線上標記的特殊符號,以區分不同的線段#label參數和圖的legend標號有關12345678910111213141516171819202122
設置坐標軸(1.)spines移動坐標軸%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *
ax=plt.subplot(111)? #設置一個空圖ax.spines['right'].set_color('none')? #set_color設置右邊軸線為透明色ax.spines['top'].set_color('none')
#移動下邊邊框線,相當于移動x軸ax.xaxis.set_ticks_position('bottom')? #設置水平軸上的坐標軸刻度ax.spines['bottom'].set_position(('data',0))? #set_position設置軸位置:'center' -> ('axes',0.5);'zero' -> ('data', 0.0;('data',anyvalue)
ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0.1))123456789101112131415?
(2.)xlim方法設置坐標軸刻度取值范圍%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(0.,10,0.2)plt.xlim(x.min()*1.1,x.max()*1.1)plt.ylim(-1.5,4.0)1234567
(3.)xticks,yticks方法設置x,y軸的刻度標簽值%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(0.,10,0.2)plt.xlim(x.min()*1.1,x.max()*1.1)plt.ylim(-1.5,4.0)plt.xticks([2,4,6,8,10],[r'two',r'four',r'six',r'8',r'10'])plt.yticks([-1.0,0.0,1.0,2.0,3.0,4.0],[r'bottom',r'0.0',r'1.0',r'2.0',r'3.0',r'4.0'])123456789
(4.)title方法設置標題,xlabel,ylabel方法設置坐標軸描述%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(0.,10,0.2)plt.xlim(x.min()*1.1,x.max()*1.1)plt.ylim(-1.5,4.0)plt.xticks([2,4,6,8,10],[r'two',r'four',r'six',r'8',r'10'])plt.yticks([-1.0,0.0,1.0,2.0,3.0,4.0],[r'bottom',r'0.0',r'1.0',r'2.0',r'3.0',r'4.0'])plt.title(r'$the \ function \ figure \ of \ cos(), \ sin() \ and \ sqrt()$',fontsize=19)? #fontsize參數設置字體大小#'\'號兩側必須各有一個空格字符,否則無法解析plt.xlabel(r'$the \ input \ value \ of \ x$',fontsize=18,labelpad=18.8)? #labelpad參數設置描述距離軸遠近plt.ylabel(r'$y=f(x)$',fontsize=18,labelpad=12.5)12345678910111213
設置圖片上的描述(1.)text方法設置圖片上的文字描述和注解%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(0.,1,0.02)plt.xlim(x.min()*1.1,x.max()*1.1)plt.ylim(-1.5,4.0)plt.text(0.8,2.9,r'$x \in [0.0, \ 10.0]$',color='k',fontsize=10)plt.text(0.8,0.8,r'$y \in [-1.0, \ 4.0]$',color='k',fontsize=10)123456789
(2.)annotate方法對圖片上某個點加注解%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(0.,10,0.2)plt.xlim(x.min()*1.1,x.max()*1.1)plt.ylim(-1.5,4.0)plt.scatter([8,],[np.sqrt(8),],50,color='m')? #使用散點圖放大當前點plt.annotate(r'$2\sqrt{2}$',xy=(8,np.sqrt(8)),xytext=(8.5,2.2),fontsize=16,color='#090909',\? ? ? ? ? ? ?arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=0.1',color='#090909'))#xy參數設置'被注解點'的坐標,xytext參數設置'注解文字'的位置,arrowprops參數設置注解文字與被注解點的連接方式1234567891011
(3.)legend方法設置圖像圖例可使用如下兩種方式:?1: 在 plt.plot 函數中添加 label 參數后,使用 plt.legend(loc=’up right’)
%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(0.,10,0.2)y1=np.cos(x)y2=np.sin(x)y3=np.sqrt(x)plt.rcParams['figure.figsize']=(10,6)? ?#reParams設置圖片尺寸plt.plot(x,y1,color='blue',linewidth=1.5,linestyle='-',marker='.',label=r'$y=cos{x}$')plt.plot(x,y2,color='green',linewidth=1.5,linestyle='-',marker='*',label=r'$y=sin{x}$')plt.plot(x,y3,color='m',linewidth=1.5,linestyle='-',marker='x',label=r'$y=\sqrt{x}$')plt.legend(loc='upper right')? #loc參數設置圖例在圖片中的位置12345678910111213
2: 不使用參數 label, 直接使用如下命令:
%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(0.,10,0.2)y1=np.cos(x)y2=np.sin(x)y3=np.sqrt(x)plt.rcParams['figure.figsize']=(10,6)? ?#reParams設置圖片尺寸plt.plot(x,y1,color='blue',linewidth=1.5,linestyle='-',marker='.')plt.plot(x,y2,color='green',linewidth=1.5,linestyle='-',marker='*')plt.plot(x,y3,color='m',linewidth=1.5,linestyle='-',marker='x')plt.legend(['cos(x)','sin(x)','sqrt(x)'],loc='upper right')? #對好順序12345678910111213
網格線開關plt.grid(True)plt.grid(True)1圖像顯示plt.show()plt.show()1圖像保存savefig(‘../ / .png’)savefig('../imagetest/picname.png',dpi=48)1常用圖形(1)曲線圖:描繪波動,2個維度matplotlib.pyplot.plot(data)
%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(-5,5,0.1)y=x**2plt.plot(x,y)plt.grid(True)plt.show()123456789
(2)灰度圖:直方圖,1個維度matplotlib.pyplot.hist(data)
%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.random.normal(size=1000)plt.hist(x,bins=10)? #bins參數設置分桶數目123456
(3)散點圖:2個維度數據的關聯程度matplotlib.pyplot.scatter(data)
%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *plt.rcParams['figure.figsize']=(8,8)x=np.random.normal(size=1000)y=np.random.normal(size=1000)plt.scatter(x,y)12345678
(4)箱式圖:設定上下限,除數據噪聲matplotlib.pyplot.boxplot(data)?箱式圖(箱線圖)科普:?上邊緣(Q3+1.5IQR)、下邊緣(Q1-1.5IQR)、IQR=Q3-Q1?上四分位數(Q3)、下四分位數(Q1)?中位數?異常值?處理異常值時與3σσ標準的異同:統計邊界是否受異常值影響、容忍度的大小
%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *x=np.arange(-5,5,0.1)plt.boxplot(x)123456
(5)餅狀圖:各類別占比matplotlib.pyplot.pie(data)
%matplotlib inline??import numpy as npimport matplotlib.pyplot as pltfrom pylab import *sort=['Foxes','Cats','Dogs','Pigs']sizes=[13,30,30,37]color=['m','b','g','r']explode=(0,0.1,0,0)? ?#分離第2類,數值表示分離遠近plt.pie(sizes,explode=explode,labels=sort,colors=color,autopct='%1.1f%%',shadow=True)? #autopct參數加百分比123456789
---------------------?作者:Young_618?來源:CSDN?原文:https://blog.csdn.net/cymy001/article/details/78344316?版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
轉載于:https://www.cnblogs.com/longbaobao326/p/10878891.html
總結
以上是生活随笔為你收集整理的Python可视化库matplotlib(基础整理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swift 4.2 - 根据字符串 pu
- 下一篇: iOS开发造轮子 | 通用占位图