首頁>技術>

一、matplotlib庫1、基本繪圖命令

import matplotlib.pyplot as plt

plt.figure(figsize=(5,4)) #設定圖形大小

plt.rcParams['axes.unicode_minus']=False #正常顯示負號

plt.rcParams['font.sans-self']=['Kai Ti'] #設定字型,這裡是楷體,SimHei表示黑體

#基本統計圖

plt.bar(x,y);plt.pie(y,labels=x);plt.plot(x,y);

plt.hist(df.身高) #若引數density=True則是頻率直方圖

3、圖形引數設定

顏色: plt.plot(x,y,c=‘red') #引數c控制顏色橫縱座標軸範圍: plt.xlim(0,100),plt.ylim(0,8)橫縱座標軸名稱: plt.xlabel(),plt.ylabel()橫縱座標軸刻度: plt.xticks(range(len(x)),x)線形和符號: plt.plot(x,y,linestyle='–',marker=‘o') #實線:'-' ;虛線:'–'; '.'指點線附加參考線: plt.axvline(x=1);plt.axhline(y=4)文字標註: plt.text(3,5,‘peak point') #引數表示:座標+文字圖例: plt.plot(x,y,label=‘折線');plt.legend()分面繪圖:

#一行兩圖

plt.subplot(121)

plt.bar(x,y)

plt.subplot(122)

plt.plot(x,y)

#一頁多圖

fig,ax=plt.subplots(2,2,figsize=(15,12)) # 2行2列放4個圖,figsize控制大小

ax[0,0].bar(x,y);ax[0,1].plot(x,y);

ax[1,0].pie(x,y);ax[1,1].plot(y,'.',linewidth=3)

具體的引數color、linestyle、圖例位置設定

顏色字元(color)

風格字元(linestyle)

loc 引數(以matplotlib新增圖例為例說明位置)

4、特殊統計圖的繪製

4.1 數學函式圖

import matplotlib.pyplot as plt #載入基本繪圖包

plt.rcParams['font.sans-serif']=['SimHei']; #SimHei黑體

plt.rcParams['axes.unicode_minus']=False; #正常顯示圖中負號

import numpy as np #載入軟體包numpy

import math #載入軟體包math

x=np.linspace(0,2*math.pi);x #生成[0,2*pi]序列 ,作為橫座標取值

plt.plot(x,np.sin(x)) #y=sinx 正弦函式

plt.plot(x,np.cos(x)) #y=cosx 餘弦函式

plt.plot(x,np.log(x)) #y=lnx #對數函式

plt.plot(x,np.exp(x)) #y=e^x 指數函式

數學函式也可以用pandas庫繪製,可詳見我的另一篇部落格:文章連結

#極座標圖

t=np.linspace(0,2*math.pi)

x=3*np.sin(t);

y=5*np.cos(t)

plt.plot(x,y);

plt.text(0,0,r'$\frac{x^2}{3^2}+\frac{y^2}{5^2}=1$',fontsize=20) #python借鑑的LATEX的格式,可以直接在圖中新增公式

4.2 氣泡圖

import pandas as pd

df=pd.read_excel('data.xlsx')

plt.scatter(df['身高'], df['體重'], s=df['支出']) #在散點圖的基礎上加上點的大小,例子中s=df['支出']就是將指各樣本點支出越多,點面積就越大

4.3 三維曲面圖

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()

ax = Axes3D(fig)

X = np.arange(-4, 4, 0.5)

Y = np.arange(-4, 4, 0.5)

X, Y = np.meshgrid(X, Y)

Z = (X**2+ Y**2)

ax.plot_surface(X, Y, Z) #該影象就是表示函式z=x^2+y^2

二、seaborn庫1、常用統計圖

1.1 箱線圖

import seaborn as sns #載入軟體包seaborn

#箱線圖

sns.boxplot(x=df['身高'])

#豎著放的箱線圖,也就是將 x 換成 y

sns.boxplot(y=df['身高'])

#分組繪製箱線圖

sns.boxplot(x='性別', y='身高',data=df) #將身高按性別分組後繪製

1.2 小提琴圖

sns.violinplot(x='性別', y='支出', data=df) #箱線圖的變種,可以加第三個類別引數hue

1.3 點圖

sns.stripplot(x='性別', y='身高', data=df, jitter=True) #分組的資料(定性+定量)畫的點圖,jitter引數為True表示將點分散開來,預設為false

1.4 條圖與計數圖

#條圖,即柱形圖

sns.barplot(x='性別', y='身高', data=df, ci=0, palette="Blues_d") #palette用於設定顏色

#計數圖

sns.countplot(x='性別', hue="開設", data=df) #都是分類變數

1.5 分組圖

#按性別、開設依次分組後計數,aspect指比例大小

sns.factorplot(x='性別', col="開設", col_wrap=3, data=df, kind="count", size=2.5, aspect=.8)

1.6 機率分佈圖

#displot:直方圖+密度函式,bins表示分的組數,kde=False表示不畫出密度曲線,rug表示有資料的地方就標註出來

sns.distplot(df['身高'], kde=True, bins=20, rug=True)

#自定義漸進正態函式影象

def norm_sim2(N=1000,n=10):

xbar=np.zeros(N)

for i in range(N):

xbar[i]=np.random.uniform(0,1,n).mean()#[0,1]上均勻隨機數均值

sns.distplot(xbar,bins=50)

print(pd.DataFrame(xbar).describe().T)

norm_sim2(N=100000,n=50)

2、聯合圖

sns.jointplot(x='身高', y='體重', data=df)#畫的散點圖+單個變數的直方圖

3、配對圖

#針對多個變數,兩兩配對,畫在一起

sns.pairplot(df[['身高','體重','支出']]) #將各變數間關係共放一張圖上,在多元統計分析中很有用

三、ggplot庫

ggplot庫是採用的繪畫中圖層的思想,即一層一層往上疊加,先畫好座標,再添線,再增加其他操作,最後用 + 號連線起來,操作起來更有邏輯章法,語句簡潔。ggplot新包是plotnine,與R語言的ggplot2對應,使用起來更方便,故直接import plotnine即可,裡面的函式使用與ggplot是基本一樣的

1、圖層畫法+常用圖形

繪製直角座標系和字型

GP=ggplot(aes(x='身高',y='體重'),data=df)

在此基礎上增加線圖

GP + geom_line()+ theme_grey(base_family = 'SimHei')#還可以再往上疊加,+geom_point()就是在折線圖基礎上加上散點圖

改為有三個變數的點圖,不同型別畫不同記號(shape)/顏色(color)

ggplot(df,aes(x='身高',y='體重',color='性別'))+geom_point()+ theme_grey(base_family = 'SimHei')

改為分面圖:用pandas繪製分組統計圖還需要先groupby,ggplot一步到位更加簡便

ggplot(df,aes(x='身高',y='體重'))+geom_point()+facet_wrap('性別') +

theme_grey(base_family = 'SimHei') #facet_wrap('性別')表示按性別分成兩組畫分面圖

此外,+theme_bw()等可以設定圖片背景、主題

2、快速繪圖

ggplot也可以像pandas一樣,在qplot函式中設定引數geom的取值而直接改變影象型別

#快速繪製直方圖

qplot(x='身高',data=df, geom='histogram')+ theme_grey(base_family = 'SimHei')

#快速繪製柱形圖

qplot('開設',data=df, geom='bar')+ theme_grey(base_family = 'SimHei')

#預設散點圖

qplot('身高', '體重', data=df, color='性別') + theme_grey(base_family = 'SimHei')

以上是基於《python資料分析基礎教程 王斌會》整理的學習筆記,還有許多引數設定沒有寫明,以及pyecharts 動態圖神器,日後學習了再一點點補充吧~

21
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 如何系統性地學習NLP 自然語言處理?