python中利用matplotlib繪圖可視化知識概括:python
(1)matplotlib圖標正常顯示中文數組
import matplotlib.pyplot as pltdom
plt.rcParams['font.sans-serif']=['simhei'] #用於正常顯示中文標籤函數
plt.rcParams['axes.unicode_minus']=False #用於正常顯示負號字體
(2)統計做圖函數:this
注意:若是向plot()指令提供了一維的數組或者列表,則matplotlib將默認它是一系列的y值,而且自動爲其生成x的值。默認的x向量從0開始而且具備和y一樣的長度。spa
(3)爲項目設置matplotlib參數debug
在代碼執行過程當中,有兩種方式能夠更改參數:code
若是不想每次使用matplotlib時都在代碼部分進行配置,能夠修改matplotlib的文件參數。能夠用matplot.get_config()命令來找到當前用戶的配置文件目錄。對象
配置文件包括如下配置項:
(4)線條相關屬性標記設置
線條形狀設置: linestyle
marker:對座標點標記(線條標記)
(5)顏色設置
調用matplotlib.pyplot.colors()能夠獲得matplotlib支持的全部顏色。
其中,k表示黑色、m表示洋紅色、c表示青色、w表示白色。
背景色:matplotlib.pyplot.axes() 或者 matplotlib.pyplot.subplot()提供一個axisbg參數,能夠指定座標中的顏色。
(6)修改座標範圍
默認狀況下,座標軸的最大值和最小值與輸入數據的最小、最大值一致。
plt.axis(xmin,xmax,ymin,ymax) 給定了座標範圍
xlim(xmin,xmax)和ylim(ymin,ymax)來調整x,y的座標範圍
(7)設置軸標記plt.xticks()/plt.yticks():人爲設置座標軸的刻度顯示的值
實例:
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(8,6), dpi=80) # 建立一個新的 1 * 1 的子圖,接下來的圖樣繪製在其中的第 1 塊(也是惟一的一塊)
plt.subplot(1,1,1)
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=1.0, linestyle="-") # 繪製餘弦曲線,使用藍色的、連續的、寬度爲 1 (像素)的線條
plt.plot(X, S, color="r", lw=4.0, linestyle="-") # 繪製正弦曲線,使用綠色的、連續的、寬度爲 1 (像素)的線條
plt.axis([-4,4,-1.2,1.2]) #給定座標軸的範圍
# 設置軸記號
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$']) #注意:這裏設置記號時,同時設置了記號的標籤。使用了LaTeX
plt.show()
(8)疊加圖:用一條指令畫出多條不一樣格式的線
示例:
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0., 5., 0.2)
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
(9)建立子圖plt.subplot()
首先經過plt.figure()建立一張新的圖,以後用plt.subplot()建立子圖。
其中subplot()指令包含行數、列數和圖像編號,其中圖像編號的範圍是從1到行數 * 列數。
import matplotlib.pyplot as plt
plt.figure(1) # 第一張圖
plt.subplot(211) # 第一張圖中的第一張子圖
plt.plot([1,2,3])
plt.subplot(212) # 第一張圖中的第二張子圖
plt.plot([4,5,6])
plt.figure(2) # 第二張圖
plt.plot([4,5,6]) # 默認建立子圖subplot(111)
plt.figure(1) # 切換到figure 1 ; 子圖subplot(212)仍舊是當前圖
plt.subplot(211) # 令子圖subplot(211)成爲figure1的當前圖
plt.title('Easy as 1,2,3') # 添加subplot 211 的標題
(10)plt.text()添加文字說明
Text語法說明:
text(x,y,string,fontsize=15,verticalalignment="top",horizontalalignment="right")
其中:
x,y:表示座標值上的值
string:表示說明文字
fontsize:表示字體大小
verticalalignment:垂直對齊方式 ,參數:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
horizontalalignment:水平對齊方式 ,參數:[ ‘center’ | ‘right’ | ‘left’ ]
arrowprops #箭頭參數,參數類型爲字典dict 參數:width點箭頭的寬度,headwidth在點的箭頭底座的寬度,headlength點箭頭的長度,shrink 總長度爲分數「縮水」從兩端,facecolor箭頭顏色
bbox給標題增長外框 其中經常使用參數: boxstyle方框外形,facecolor(簡寫fc)背景顏色,edgecolor(簡寫ec)邊框線條顏色,edgewidth邊框線條大小
示例:
import matplotlib.pyplot as plt
plt.text(0.6, 0.5, "test", size=50, rotation=30.,ha="center", va="center",bbox=dict(boxstyle="round",ec=(1., 0.5, 0.5),fc=(1., 0.8, 0.8),))
plt.text(0.5, 0.4, "test", size=50, rotation=-30.,ha="right", va="top",bbox=dict(boxstyle="square",ec=(1., 0.5, 0.5),fc=(1., 0.8, 0.8),))
plt.draw()
plt.show()
(12)文本註釋annotate()
格式:annotate(s=’str’,xy=(x,y),xytext=(i1,i2),;...)
annotate()參數設置箭頭指示的位置,xytext參數設置註釋文字的位置
---arrowprops參數以字典的形式設置箭頭的樣式
---width參數設置箭頭長方形部分的寬度,headlength參數設置箭頭尖端的長度
---headwidth參數設置箭頭尖端底部的寬度,shrink參數設置箭頭頂點、尾部與指示點、註釋文字的距離(比例值)'''
示例以下:
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(6, 6))
x = np.random.randint(0, 10, size=10)
x[5] = 30 # 對x中索引值爲5的從新賦值
plt.plot(x)
plt.ylim([-2, 35])
# plt.annotate(s="this point is important", xy=(5, 30), xytext=(6, 31),arrowprops={"width": 2, "headlength": 5, "headwidth": #5, "shrink": 0.1})
plt.annotate(s="this point is important", xy=(5, 30), xytext=(6, 31),arrowprops={"arrowstyle":"->"}) # 若是arrowprops中有arrowstyle,就不該該有其餘的屬性,xy表明的是箭頭的位置,xytext表明的是箭頭文本的位置。
plt.show()
(13)plt.title()設置圖像標題
title經常使用參數:fontsize設置字體大小、fontweight設置字體粗細、fontstyle設置字體類型、verticalalignment設置水平對齊方式 ,可選數: : 'center' , 'top' , 'bottom' ,'baseline'
horizontalalignment設置垂直對齊方式,可選參數:left,right,center
rotation(旋轉角度)可選參數爲:vertical,horizontal 也能夠爲數字
alpha透明度,參數值0至1之間
backgroundcolor標題背景顏色
(14)Matplotlib中的fill_between()函數總結
l 示例:曲線覆蓋
import numpy as np
import matplotlib.pyplot as plt
x = np.array([i for i in range(30)])
y = np.random.rand(30)
plt.plot(x, y)
plt.fill_between(x, 0, y, facecolor='green', alpha=0.3)
plt.show()
注意:fill_between()函數中的幾個參數:
x:第一個參數表示覆蓋的區域,直接複製爲x,表示整個x都覆蓋
0:表示覆蓋的下限
y: 表示覆蓋的上限是y這個曲線
facecolor:覆蓋區域的顏色
alpha:覆蓋區域的透明度[0,1],其值越大,表示越不透明
部分區域覆蓋:plt.fill_between(x[2:15], 0.2, 0.6, facecolor='green', alpha=0.3)
兩曲線之間的覆蓋:
y1 = np.random.rand(30)
y2 = y1 + 0.3
plt.plot(x, y1,'b',x,y2,'r')
plt.fill_between(x, y1, y2, facecolor='green', alpha=0.3)
示例:想要實現循環填充想要填充的部分,設置填充的上下限的功能
import numpy as np
import matplotlib.pyplot as plt
x = np.array([i for i in range(30)])
print(x)
y = np.random.rand(30)
# 設置想要高亮數據的位置
position = [[1, 6],
[10, 12],
[20, 23],
[26, 28]]
print(position)
# 畫圖
plt.plot(x, y, 'r')
for i in position:
print(i) #輸出結果i爲:[1, 6], [10, 12], [20, 23], [26, 28]
print(x[i[0]:i[1]]) #結果爲:[1 2 3 4 5] [10 11] [20 21 22] [26 27]
plt.fill_between(x[ i[0] : i[1] ], 0, 1, facecolor='green', alpha=0.3)
plt.show()