plt.rcParams['font.sans-serif']="SimHei"
plt.rcParams['axes.unicode_minus']=False
構建出一張空白畫布,並可以選擇是否將整個畫布劃分為多個部分,方便在同一幅畫上繪製多個圖形的情況。
函數名稱 | 函數作用 |
---|---|
plt.figure | 建立一個空白畫布,可以指定畫布的大小、畫素 |
figure.add_subplot | 建立並選中子圖,可以指定子圖的行數,列數,與選中圖片的編號 |
第二部分是繪圖的主體部分。其中新增標題、座標軸名稱、繪製圖形等步驟是並列的,沒有先後順序,可以先繪製圖形,也可以先新增各種標籤。
函數名稱 | 函數作用 |
---|---|
plt.title | 在當前圖形中新增標題,可以指定標題的名稱、位置、顏色、字型等引數 |
plt.xlable | 在當前圖形中新增x軸的名字,可以指定位置、顏色、字型等引數 |
plt.ylable | 在當前圖形中新增y軸的名字,可以指定位置、顏色、字型等引數 |
plt.xlim | 指定當前x軸的範圍,只能確定一個數值區間,而無法使用字串標識 |
plt.ylim | 指定當前y軸的範圍,只能確定一個數值區間,而無法使用字串標識 |
plt.xticks | 指定x軸刻度的數目和取值 |
plt.yticks | 指定y軸刻度的數目和取值 |
plt.legend | 指定當前圖形的圖例,可以指定當前圖例的大小、位置和標籤 |
pyplot使用rc組態檔來自定義圖形的各種預設屬性,被稱為rc設定或rc引數,在pyplot中幾乎所有的預設屬性均可以控制,例如檢視視窗的大小、線條寬度、顏色、樣式,座標軸、網格屬性、文字、字型等。
rc引數名稱 | 解釋 | 取值 |
---|---|---|
lines.linewidth | 線條寬度 | 取0-10之間的取值,預設為1.5 |
lines.linestyle | 線條樣式 | 可取"-"、"–"、"."、":「四種,預設為」-" |
lines.marker | 線條上點的形狀 | 可取"o"、「D」、「h」、"."、","、「S」等20多種,預設為None |
lines.markersize | 點的大小 | 取0-10之間的數值,預設為1 |
linestyle取值 | 意義 | linestyle取值 | 意義 |
---|---|---|---|
- | 實線 | -. | 點線 |
– | 長虛線 | : | 短虛線 |
散點圖又稱散點分佈圖,是以一個特徵為橫座標,另一個特徵為縱座標,利用座標點的分佈形態反映特徵間統計關係的一種圖形。
值是由點在圖表中的不同位置表示,類別是由圖表中的不同標記表示,通常用來比較跨類別的資料。
引數名稱 | 說明 |
---|---|
x,y | 接收array,表示x軸和y軸的對應資料。無預設。 |
s | 接收數值或一維的array,指定點的大小,若傳入一維array則表示每個點的大小,預設為None |
c | 接收數值或一維的array,指定點的顏色,若傳入一維array則表示每個點的顏色,預設為None |
marker | 接收特定string,表示繪製的點的型別,預設為None |
alpha | 接收0-1的小時,表示點的透明度,預設為None |
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']="SimHei"
plt.rcParams['axes.unicode_minus']=False
data1 = pd.DataFrame({"姓名":["韓梅梅","李雷","Lucy","Lily","Jim","小明","Amy"],
"身高":[160,170,163,165,178,182,168],
"體重":[48,55,52,50,60,58,49]})
#繪製散點圖檢視身高和體重之間的關係
figure = plt.figure(figsize=(6,5))
plt.scatter(data1["身高"],data1["體重"],color="b",marker="s")
plt.xlabel("height(cm)")
plt.ylabel("weight(kg)")
plt.title("身高體重關係圖")
折線圖是一種將資料點按照順序連線起來的圖形,可以看作是將散點圖,按照x軸座標順序連線起來的圖形,折線圖的主要功能是檢視因變數y隨著自變數x改變的趨勢,最適合用於隨時間(根據常用比例設定)而變化的連續資料。同時還可以看出數量的差異,增長趨勢的變化。
引數名稱 | 說明 |
---|---|
x、y | 接收array。表示x軸和y軸對應的資料。無預設 |
color | 接收特定string。指定線條的顏色。預設為None |
linestyle | 接收特定string。指定線條型別,預設為「-」 |
marker | 接收特定string。表示繪製的點的型別。預設為None |
alpha | 接收0-1的小數。表示點的透明度。預設為None。 |
data_x = list(range(1,1000))
data_y = [10]
for i in range(998):
data_y.append(data_y[i]+np.random.randint(-1,2))
plt.plot(data_x,data_y)
直方圖是統計報告圖的一種,一般用於表示連續型資料的分佈情況,一般用橫軸表示資料分組,縱軸表示屬於該組取值範圍的樣本數量或者佔比。
用直方圖可以比較直觀的看出產品品質特性的分佈狀態,便於判斷其總體品質分佈情況。直方圖可以發現分佈表無法發現的資料模式、樣本的頻率分佈和總體的分佈。
#正態分佈資料
import random
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']="SimHei"
plt.rcParams['axes.unicode_minus']=False
mu,sigma = 100,15
x = mu+sigma*np.random.randn(10000)
#the histgram of data
n,bins,pathces = plt.hist(x,50,density=0,facecolor="g",alpha=0.75)
plt.title("Histogram of IQ")
plt.xlabel("Smart")
plt.ylabel("頻數")
plt.text(60,500,r"$\mu=100,\ \sigma=15$")
plt.axis=([40,160,0,600])
plt.grid(True)
注意:plt.hist()函數中的density引數是布林型別,預設為None,當其值為False時,y軸表示頻數,當其值為True時,y軸表示頻率
條形圖是統計報告圖的一種,由一系列高低不等的縱向條紋或線段表示類別型資料分佈情況,一般用橫軸表類別,縱軸表示該樣本數量或佔比。
用條形圖可以比較直觀的看出產品品質特性的分佈狀態,便於判斷其總體品質情況,
引數名稱 | 說明 |
---|---|
left | 接收array,表示x軸資料,無預設 |
height | 接收array,表示x軸所代表資料的數量。無預設 |
width | 接收0-1之間的float,指定條形圖的寬度,預設為0.8 |
color | 接收特定string或者包含顏色字串的array,表示條形圖的顏色,預設為None |
grades = ["高一","高二","高三"]
values = [879,517,725]
plt.bar(grades,values,color="b",width=.4)
plt.title("全校人數")
- 組合圖範例:
year = ["2017","2018","2019","2020"]
sales = np.random.rand(4)*1000000
conv = np.random.rand(4)
fig,ax = plt.subplots(figsize=(12,8))
ax1 = ax.twinx()#建立次座標軸
ax.bar(year,sales,color="skyblue")
ax1.plot(year,conv,"-o",color = "y")
餅圖是將各項的大小與各項的比例顯示在一張圖中,以每一部分的大小來確定每一項的佔比。
餅圖可以比較清楚的反映出部分與部分、部分與整體之間的比例關係,易於顯示每組資料相對於整體資料的大小,且比較直觀。
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, …)
# 頻次或頻率
data = [1, 2, 3, 4, 5] # 各類別佔比
# 各類別標籤
label = ['貓', '狗', '牛', '羊', '馬']
# 每個類別要繪製的顏色
color = ['lightblue', 'lightgreen', 'lightyellow', 'pink', 'orange'] # 各類別顏色
explode = (0, 0, 0, 0, 0.1) # 各類別的偏移半徑
plt.pie(data,colors = color,labels=label,shadow=True,autopct="%.2f%%",explode=explode)
箱形圖,能夠提供有關資料位置和分散情況的關鍵資訊,尤其是在比較常用的統計量,能提供有關資料位置和分散情況的關鍵性心,尤其是在表不同特徵時,更加可以表現其分散程度的差異。
箱形圖使用的5個統計量,分別是:最小值、下四分位數、中位數、上四分位數和最大值,它可以粗略的看出資料時候具有對稱性、分佈的分散程度等資訊,特別可以用於對幾個樣本的比較。
matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None,meanline=None, labels=None, …)
常用引數:
雷達圖適用於顯示三個或更多的維度的變數,雷達圖是以在同一點開始的軸上顯示三個或者更多個變數的而為圖表的形式來顯示多後設資料的方法,其中軸的相對位置和角度通常是無意義的。
雷達圖對於檢視哪些變數具有相似的值、變數之間是否有異常值都很用。雷達圖也可以用於檢視哪些變數在資料集內得分較高或較低,因此非常適合顯示效能相關資料,常用於排名、評估、評論等資料的展示。
fig = plt.figure(figsize=(10,5))
# 玩家資料(0-10分)
data4 = np.array([[3.2, 1.7, 1.9, 2.5, 8.0],
[8.2, 6.9, 5.4, 1.7, 3.6],
[5.2, 4.2, 8.7, 0.5, 1.7],
[7.4, 5.4, 4.1, 3.5, 6.2]])
n,k = data4.shape#獲取陣列的行列資訊
# 各維度名稱
names = ['打錢速度', '擊殺助攻', '輸出能力', '控制時長', '吸收傷害']
ax = fig.add_subplot(111,polar=True)#設定極座標
angles = np.linspace(0,2*np.pi,k,endpoint=False)#建立等差數列繪製周長
angles = np.concatenate((angles,[angles[0]]))#使周長閉合,即在數列的最後增加一個數位,該數位為數列開始的數位
Linestyle = ['bo-', 'ro:', 'gD--', 'yv-.'] # 點線形狀
Fillcolor = ['b', 'r', 'g', 'y'] # 填充顏色\點線顏色
for i in range(n):
data = np.concatenate((data4[i],[data4[i][0]]))#每一組資料都讓其閉合,形成一個封閉的圖形
data = data4[i]
ax.plot(angles,data,Linestyle[i],linewidth = 2)
ax.fill(angles,data,facecolor=Fillcolor[i],alpha=0.25)
ax.set_thetagrids(angles[:-1] * 180/np.pi, names) # 顯示類別名字
ax.set_title("玩家能力值對比圖", va='bottom') # 設定標題
ax.set_rlim(0, 11) # 設定各指標的最終範圍
ax.grid(True) # 顯示網格