Matplotlib基礎知識
一、Matplotlib基礎知識
- Matplotlib中的基本圖表包括的元素
- x軸和y軸 axis
水平和垂直的軸線 - x軸和y軸刻度 tick
刻度標示坐標軸的分隔,包括最小刻度和最大刻度 - x軸和y軸刻度標簽 tick label
表示特定坐標軸的值 - 繪圖區域(坐標系) axes
實際繪圖的區域 - 坐標系標題 title
實際繪圖的區域 - 軸標簽 xlabel ylabel
實際繪圖的區域
- x軸和y軸 axis
# 使用包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import Series,DataFrame
# matplotlib 中 使用中文
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默認字體
mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題
包含單條曲線的圖
- 注意:y,x軸的值必須為數字
x=[1,2,3,4,5]
y=[2,4,6,8,10]
# 顯示 圖片
plt.plot(x,y)
# 繪制拋物線
x = np.linspace(-np.pi,np.pi,num=10)
y = x**2
plt.plot(x,y)
# 繪制正弦曲線圖
x = x
# 正弦
y = np.sin(x)
plt.plot(x,y)
包含多個曲線的圖
- 連續調用多次plot函數
plt.plot(x,y)
plt.plot(x-2,y-2)
plt.plot(x,y,x+2,y+3)
多個曲線圖繪制在一個table區域中:對象形式創建表圖
- a=plt.subplot(row,col,loc) 創建曲線圖
- a.plot(x,y) 繪制曲線圖
ax1 = plt.subplot(2,2,1)
ax1.plot(x,y)
ax2 = plt.subplot(2,2,2)
ax2.plot(x,y)
ax3 = plt.subplot(2,2,3)
ax3.plot(x,y)
ax4 = plt.subplot(2,2,4)
ax4.plot(x,y)
-
設置畫布比例:plt.figure(figsize=(a,b)) a:x刻度比例 b:y刻度比例 (2:1)表示x刻度顯示為y刻度顯示的2倍
plt.figure(figsize=(8,8)) plt.plot(x,y)
坐標軸標簽
-
s 標簽內容
-
color 標簽顏色
-
fontsize 字體大小
-
rotation 旋轉角度
-
plt的xlabel方法和ylabel方法 title方法
plt.plot(x,y) # x 軸 plt.xlabel('xxx') # y 軸 plt.ylabel('yyy') # 圖片標題 plt.title('ttt')
圖例
legend方法
兩種傳參方法:
- 分別在plot函數中增加label參數,再調用plt.legend()方法顯示
- 直接在legend方法中傳入字符串列表!
plt.plot(x,y,label='temp')
plt.plot(x+4,y-3,label='dist')
plt.legend()
legend的參數
- loc參數
- loc參數用於設置圖例標簽的位置,一般在legend函數內
- matplotlib已經預定義好幾種數字表示的位置
plt.plot(x,y,label='temp')
plt.plot(x+4,y-3,label='dist')
plt.legend(loc=0,ncol=2)
- ncol參數
- ncol控制圖例中有幾列,在legend中設置ncol
二. 保存圖片
-
使用figure對象的savefig函數來保存圖片
fig = plt.figure()---必須放置在繪圖操作之前
figure.savefig的參數選項
- filename
含有文件路徑的字符串或Python的文件型對象。圖像格式由文件擴展名推斷得出,例如,.pdf推斷出PDF,.png推斷出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……) - dpi
圖像分辨率(每英寸點數),默認為100 - facecolor ,打開保存圖片查看 圖像的背景色,默認為“w”(白色)
fig = plt.figure() plt.plot(x,y,label='temp') plt.plot(x+4,y-3,label='dist') plt.legend(loc=0,ncol=2) # dpi 像素 fig.savefig('./fig.jpg',dpi=200)
設置plot的風格和樣式
plot語句中支持除X,Y以外的參數,以字符串形式存在,來控制顏色、線型、點型等要素,語法形式為:
plt.plot(X, Y, 'format', ...) - filename
顏色
參數color或c
plt.plot(x,y,c='yellow',alpha=0.5)
顏色值的方式
-
別名
- color='r'
-
合法的HTML顏色名
- color = 'red'
顏色 | 別名 | HTML顏色名 | 顏色 | 別名 | HTML顏色名 |
---|---|---|---|---|---|
藍色 | b | blue | 綠色 | g | green |
紅色 | r | red | 黃色 | y | yellow |
青色 | c | cyan | 黑色 | k | black |
洋紅色 | m | magenta | 白色 | w | white |
-
HTML十六進制字符串
- color = '#eeefff'
-
歸一化到[0, 1]的RGB元組
- color = (0.3, 0.3, 0.4)
透明度
alpha參數
線型
參數linestyle或ls
線條風格 | 描述 | 線條風格 | 描述 |
---|---|---|---|
'-' | 實線 | ':' | 虛線 |
'--' | 破折線 | 'steps' | 階梯線 |
'-.' | 點划線 | 'None' / ',' | 什么都不畫 |
plt.plot(x,y,ls='steps',lw=3)
[<matplotlib.lines.Line2D at 0x15ddae8ea90>]
線寬
linewidth或lw參數
點型
- marker 設置點形
- markersize 設置點形大小
標記 | 描述 | 標記 | 描述 |
---|---|---|---|
's' | 正方形 | 'p' | 五邊形 |
'h' | 六邊形1 | 'H' | 六邊形2 |
'8' | 八邊形 |
標記 | 描述 | 標記 | 描述 |
---|---|---|---|
'.' | 點 | 'x' | X |
'*' | 星號 | '+' | 加號 |
',' | 像素 |
標記 | 描述 | 標記 | 描述 |
---|---|---|---|
'o' | 圓圈 | 'D' | 菱形 |
'd' | 小菱形 | '','None',' ',None | 無 |
標記 | 描述 | 標記 | 描述 |
---|---|---|---|
'1' | 一角朝下的三腳架 | '3' | 一角朝左的三腳架 |
'2' | 一角朝上的三腳架 | '4' | 一角朝右的三腳架 |
plt.plot(x,y,marker='d')
# 繪制線 plt.plot(x1,y1,x2,y2)
# 網格線 plt.grid(True) axes.grid(color,ls,lw,alpha)
# 獲取坐標系 plt.subplot(n1,n2,n3)
# 坐標軸標簽 plt.xlabel() plt.ylabel()
# 坐標系標題 plt.title()
# 圖例 plt.legend([names],ncol=2,loc=1) plt.plot(label='name')
# 線風格 -- -. : None step
# 圖片保存 figure.savefig()
# 點的設置 marker markersize markerfacecolor markeredgecolor\width
# 坐標軸刻度 plt.xticks(刻度列表,刻度標簽列表) plt.yticks()
# axes.set_xticks(刻度列表) axes.set_xticklabels(刻度標簽列表)
三. 2D圖形
直方圖
- 是一個特殊的柱狀圖,又叫做密度圖。
【直方圖的參數只有一個x!!!不像條形圖需要傳入x,y】
plt.hist()的參數
- bins
直方圖的柱數,可選項,默認為10 - color
指定直方圖的顏色。可以是單一顏色值或顏色的序列。如果指定了多個數據集合,例如DataFrame對象,顏色序列將會設置為相同的順序。如果未指定,將會使用一個默認的線條顏色 - orientation
通過設置orientation為horizontal創建水平直方圖。默認值為vertical
data = [1,2,3,3,4,2,5]
plt.hist(data)
-
返回值 :
1: 直方圖向量,是否歸一化由參數normed設定
2: 返回各個bin的區間范圍
3: 返回每個bin里面包含的數據,是一個list
條形圖:plt.bar()
-
參數:第一個參數是索引。第二個參數是數據值。第三個參數是條形的寬度
-【條形圖有兩個參數x,y】
- width 縱向設置條形寬度
- height 橫向設置條形高度
bar()、barh()
x = [1,2,3]
y = [2,3,4]
plt.barh(x,y)
餅圖
【餅圖也只有一個參數x】
pie()
餅圖適合展示各部分占總體的比例,條形圖適合比較各部分的大小
-
餅圖陰影、分裂等屬性設置
#labels參數設置每一塊的標簽;
#labeldistance參數設置標簽距離圓心的距離(比例值)
#autopct參數設置比例值小數保留位(%.3f%%);
#pctdistance參數設置比例值文字距離圓心的距離
#explode參數設置每一塊頂點距圓心的長度(比例值,列表);
#colors參數設置每一塊的顏色(列表);
#shadow參數為布爾值,設置是否繪制陰影
#startangle參數設置餅圖起始角度
a = [0.3,0.2] plt.pie(a) arr=[11,22,31,15] plt.pie(arr,labels=['a','b','c','d']) #labeldistance參數設置標簽距離圓心的距離(比例值) arr=[11,22,31,15] plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3) #autopct參數設置比例值小數保留位(%.3f%%); arr=[11,22,31,15] plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3,autopct='%.6f%%') ##explode參數設置每一塊頂點距圓心的長度(比例值,列表); arr=[11,22,31,15] plt.pie(arr,labels=['a','b','c','d'],labeldistance=0.3,shadow=True,explode=[0.2,0.3,0.2,0.4])
散點圖:因變量隨自變量而變化的大致趨勢
【散點圖需要兩個參數x,y,但此時x不是表示x軸的刻度,而是每個點的橫坐標!】
scatter()
x = [1,2,3,4,5]
y = [2,4,6,8,10]
plt.scatter(x,y)
# plt.scatter(x,y,marker='d',c="rbgy") 設置不同的散點顏色
temp = np.random.randint(10,40,size=(30,))
dist = np.random.randint(70,100,size=(30,))
# 顯示顏色 rbyg = red, blue yellow green 隨機
plt.scatter(temp,dist,c='rbyg')