@TOC
顯示中文和負號
- matplotlib預設使用英文字型檔,漢字會亂碼,要指定中文字型檔
matplotlib.rcParams['font.family']='simHei' #黑體
matplotlib.pyplot.rcParams['axes.unicode_minus'] = False # 顯示負號
1.各種繪圖函式
1.1 matplotlib.pyplot.plot
def plot(*args, scalex=True, scaley=True, data=None, **kwargs):...
常用引數:
引數 | 含義 |
---|---|
args1 | 橫座標陣列(list,numpy陣列,pandas電子表格) |
args2 | 縱座標陣列(list,numpy陣列,pandas電子表格) |
label | 圖例名字,給一個字串即可 |
color | 顏色 |
linestyle | 線型 |
marker | 附加點的樣式 |
引數說明:
- 若輸入兩個陣列作為args,那麼第一個引數和第二個引數的陣列長度必須相同,它們是一一對應關係
- 若只輸入一個陣列作為args,那麼matplolib會自動根據陣列長度進行橫座標的索引
- 顏色、線性、點樣式會在第2節中詳細介紹
1.2 matplotlib.pyplot.scatter
def scatter(
x, y, s=None, c=None, marker=None, cmap=None, norm=None,
vmin=None, vmax=None, alpha=None, linewidths=None, *,
edgecolors=None, plotnonfinite=False, data=None, **kwargs):...
常用引數:
引數 | 含義 |
---|---|
x | 橫座標陣列(list,numpy陣列,pandas電子表格) |
y | 縱座標陣列(list,numpy陣列,pandas電子表格) |
s | 點的大小 |
marker | 點的樣式 |
label | 圖例名字,給一個字串即可 |
color | 顏色 |
引數說明:
- x引數和y引數的陣列長度必須相同,一一對應
- s表示點的大小,預設 20,也可以是個陣列,陣列每個引數為對應點的大小
- 顏色、線性、點樣式會在第2節中詳細介紹
1.3 matplotlib.pyplot.bar
def bar(
x, height, width=0.8, bottom=None, *, align='center',
data=None, **kwargs):...
常用引數:
引數 | 含義 |
---|---|
x | 陣列,柱形圖的 x 軸資料 |
height | 陣列,柱形圖的 y 軸資料 |
width | 柱形圖的寬度 |
bottom | height 座標的偏移量,預設 0 |
align | 柱形圖與 x 座標的對齊方式 |
color | 顏色 |
label | 圖例名字,給一個字串即可 |
tick_label | 用來替代 x 軸資料的字串或字串陣列 |
引數說明:
- x引數和height引數的陣列長度必須相同,一一對應
- width 表示柱的寬度,也可以是個陣列,對應每條柱的橫向寬度
- bottom表示height座標的偏移量,也可以是個陣列,對應每條柱的y偏移量
- align可選引數:中心對齊"center",左對齊"edge"
- tick_label可以替代x軸的數字,也可以是個陣列,對應每條柱的x軸位置
- 顏色會在第2節中詳細介紹
下面是一個在一張圖上畫出兩幅柱狀圖的例子:
import numpy as np
import matplotlib.pyplot as plt
# 資料
x = np.arange(4)
Bj = [52, 55, 63, 53]
Sh = [44, 66, 55, 41]
bar_width = 0.3
# 繪圖 x 表示 從那裡開始
plt.bar(x, Bj, bar_width)
plt.bar(x+bar_width, Sh, bar_width, align="center")
# 展示圖片
plt.show()
1.4 matplotlib.pyplot.pie
def pie(
x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1,
startangle=0, radius=1, counterclock=True, wedgeprops=None,
textprops=None, center=(0, 0), frame=False,
rotatelabels=False, *, normalize=True, hatch=None, data=None):
常用引數:
引數 | 含義 |
---|---|
x | 陣列,用於繪製餅圖的資料,表示每個扇形的面積 |
explode | 陣列,表示各個扇形之間的間隔 |
labels | 列表,各個扇形的標籤 |
colors | 陣列,表示各個扇形的顏色 |
autopct | 字串,設定餅圖內各個扇形百分比顯示格式 |
radius | 設定餅圖的半徑 |
引數說明:
- x引數,labels引數,colors引數的陣列長度必須相同,一一對應
- explode決定圖形顯示的方式
- autopct舉例:%d%% 整數百分比,%0.1f 一位小數, %0.1f%% 一位小數百分比, %0.2f%% 兩位小數百分比
1.5 matplotlib.pyplot.hist
def hist(
x, bins=None, range=None, density=False, weights=None,
cumulative=False, bottom=None, histtype='bar', align='mid',
orientation='vertical', rwidth=None, log=False, color=None,
label=None, stacked=False, *, data=None, **kwargs):...
常用引數:
引數 | 含義 |
---|---|
x | 陣列,表示要繪製直方圖的資料 |
bins | 直方圖的箱數 |
colors | 顏色 |
label | 圖例 |
引數說明:
- bins舉例說明:如果 bins 引數為 30,這意味著將資料範圍分成 30 個等寬的區間,然後統計每個區間內資料的頻數。
- 圖例、顏色等,會在第2節中詳細介紹
2.繪圖樣式
2.1 軸標籤和標題
軸標籤(matplotlib.pyplot.xlabel與matplotlib.pyplot.ylabel)
def xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs):...
def ylabel(ylabel, fontdict=None, labelpad=None, *, loc=None, **kwargs):...
- loc引數只有
"left"
,"center"
,"right "
可選
標題
def title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs):
- loc引數只有
"left"
,"center"
,"right "
可選
2.2 圖例位置(matplotlib.pyplot.legend)
- 在繪圖時指定好label圖例後,如果不使用matplotlib.pyplot.legend函式指定圖例位置,圖例是不會顯示的
def legend(*args, **kwargs):...
- loc引數如下:
可選引數 |
---|
'upper right' |
'upper left' |
'lower left' |
'lower right' |
'right' |
'center left' |
'center right' |
'lower center' |
'upper center' |
'center' |
2.3 可選顏色(color)
常用顏色如下:
顏色標記 | 描述 |
---|---|
'r' |
紅色 |
'g' |
綠色 |
'b' |
藍色 |
'c' |
青色 |
'm' |
品紅 |
'y' |
黃色 |
'k' |
黑色 |
'w' |
白色 |
2.4 線型(linestyle)
常用線型如下:
線型標記 | 描述 |
---|---|
'-' |
實線 |
':' |
點虛線 |
'--' |
破折線 |
'-.' |
點劃線 |
2.5 點的樣式(marker)
常用樣式如下:
常用顏色如下:
可選markder | 樣式 | 描述 |
---|---|---|
"." |
點 | |
"," |
畫素點 | |
"o" |
實心圓 | |
"v" |
下三角 | |
"^" |
上三角 | |
"<" |
左三角 | |
">" |
右三角 | |
"1" |
下三叉 | |
"2" |
上三叉 | |
"3" |
左三叉 | |
"4" |
右三叉 | |
"8" |
八角形 | |
"s" |
正方形 | |
"p" |
五邊形 | |
"P" |
填充的加號 | |
"*" |
星號 | |
"h" |
六邊形1 | |
"H" |
六邊形2 | |
"+" |
加號 | |
"x" |
乘號 | |
"X" |
填充的乘號 | |
"D" |
菱形 | |
"d" |
瘦菱形 | |
"|" |
豎線 | |
"_" |
橫線 | |
4 |
左箭頭 | |
5 |
右箭頭 | |
6 |
上箭頭 | |
7 |
下箭頭 |
3.畫布管理與多圖
3.1 subplots
建立一張畫布上的多圖
def subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True,
width_ratios=None, height_ratios=None,
subplot_kw=None, gridspec_kw=None, **fig_kw):...
引數說明:
- nrows表示子圖的行數,ncols表示子圖的列數
返回值說明:
- 返回一個有2個元素的元組,分別為fig和ax。
- fig為這張畫布
- ax為子圖列表,想在第一張圖上畫折線圖:呼叫ax[0].plot
3.2 subplot
建立一張畫布上的多圖
def subplot(*args, **kwargs):
使用說明
- 輸入
plt.subplot(2,2,1)
後,表明此時選定2行2列的一共4張子圖中的第1張子圖 - 此時呼叫
plt.plt
,就可以在第1張子圖上繪圖 - 切換子圖時,輸入
plt.subplot(2,2,2)
後,表明切換到第2張子圖
3.3 清理
- 清理一張圖上所有內容:
plt.cla()
- 清理一張畫布上的所有圖:
plt.clf()
3.4 畫布尺寸設定
fig = plt.figure(figsize=(16, 6),dpi=100)
以上設定了一張寬度16英寸,高度6英寸的畫布,且每英寸的畫素個數為100,也就是說此圖片的寬高是1600x600。大家可以自行修改想要的數值。
fig.tight_layout()
以上這行指令用於在所有子圖都繪製完畢後自動調整子圖之間的位置,防止子圖的軸標籤被遮擋。
動態圖
- 先開啟互動模式,然後提前展示畫布
plt.ion()
plt.show()
- 在每輪繪製前先進行清理,然後停留
plt.cla()
plt.plot(...)
plt.pause(0.001)
本文由部落格一文多發平臺 OpenWrite 釋出!