字符 | 代表顏色 |
---|---|
r | 紅色 |
b | 藍(lán)色 |
g | 綠色 |
w | 白色 |
c | 青色 |
m | 洋紅 |
y | 黃色 |
k | 黑色 |
風(fēng)格字符(linestyle)
字符 | 代表風(fēng)格 |
---|---|
- (一個(gè)連字符) | 實(shí)線(xiàn) |
– (兩個(gè)連字符) | 虛線(xiàn) |
-. | 點(diǎn)劃線(xiàn) |
: | 點(diǎn)虛線(xiàn) |
' ' | 留空,空格 |
loc 參數(shù)(以matplotlib添加圖例為例說(shuō)明位置)
loc string | loc code | 位置 |
---|---|---|
"best" | 0 | 右上角(默認(rèn)) |
“upper right” | 1 | 右上角 |
“upper left” | 2 | 左上角 |
“l(fā)ower left” | 3 | 左下角 |
“l(fā)ower right” | 4 | 右下角 |
"right" | 5 | 中右側(cè) |
“center left” | 6 | 中左側(cè) |
“center right” | 7 | 中右側(cè) |
“l(fā)ow center” | 8 | 中下方 |
“upper center” | 9 | 中上方 |
“center” | 10 | 中間 |
4.1 數(shù)學(xué)函數(shù)圖
import matplotlib.pyplot as plt #加載基本繪圖包 plt.rcParams['font.sans-serif']=['SimHei']; #SimHei黑體 plt.rcParams['axes.unicode_minus']=False; #正常顯示圖中負(fù)號(hào) import numpy as np #加載軟件包numpy import math #加載軟件包math x=np.linspace(0,2*math.pi);x #生成[0,2*pi]序列 ,作為橫坐標(biāo)取值 plt.plot(x,np.sin(x)) #y=sinx 正弦函數(shù) plt.plot(x,np.cos(x)) #y=cosx 余弦函數(shù) plt.plot(x,np.log(x)) #y=lnx #對(duì)數(shù)函數(shù) plt.plot(x,np.exp(x)) #y=e^x 指數(shù)函數(shù)
數(shù)學(xué)函數(shù)也可以用pandas庫(kù)繪制,可詳見(jiàn)我的另一篇博客:文章鏈接
#極坐標(biāo)圖 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['支出']) #在散點(diǎn)圖的基礎(chǔ)上加上點(diǎn)的大小,例子中s=df['支出']就是將指各樣本點(diǎn)支出越多,點(diǎn)面積就越大
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) #該圖像就是表示函數(shù)z=x^2+y^2
1.1 箱線(xiàn)圖
import seaborn as sns #加載軟件包seaborn #箱線(xiàn)圖 sns.boxplot(x=df['身高']) #豎著放的箱線(xiàn)圖,也就是將 x 換成 y sns.boxplot(y=df['身高']) #分組繪制箱線(xiàn)圖 sns.boxplot(x='性別', y='身高',data=df) #將身高按性別分組后繪制
1.2 小提琴圖
sns.violinplot(x='性別', y='支出', data=df) #箱線(xiàn)圖的變種,可以加第三個(gè)類(lèi)別參數(shù)hue
1.3 點(diǎn)圖
sns.stripplot(x='性別', y='身高', data=df, jitter=True) #分組的數(shù)據(jù)(定性+定量)畫(huà)的點(diǎn)圖,jitter參數(shù)為T(mén)rue表示將點(diǎn)分散開(kāi)來(lái),默認(rèn)為false
1.4 條圖與計(jì)數(shù)圖
#條圖,即柱形圖 sns.barplot(x='性別', y='身高', data=df, ci=0, palette="Blues_d") #palette用于設(shè)置顏色 #計(jì)數(shù)圖 sns.countplot(x='性別', hue="開(kāi)設(shè)", data=df) #都是分類(lèi)變量
1.5 分組圖
#按性別、開(kāi)設(shè)依次分組后計(jì)數(shù),aspect指比例大小 sns.factorplot(x='性別', col="開(kāi)設(shè)", col_wrap=3, data=df, kind="count", size=2.5, aspect=.8)
1.6 概率分布圖
#displot:直方圖+密度函數(shù),bins表示分的組數(shù),kde=False表示不畫(huà)出密度曲線(xiàn),rug表示有數(shù)據(jù)的地方就標(biāo)注出來(lái) sns.distplot(df['身高'], kde=True, bins=20, rug=True) #自定義漸進(jìn)正態(tài)函數(shù)圖像 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]上均勻隨機(jī)數(shù)均值 sns.distplot(xbar,bins=50) print(pd.DataFrame(xbar).describe().T) norm_sim2(N=100000,n=50)
sns.jointplot(x='身高', y='體重', data=df)#畫(huà)的散點(diǎn)圖+單個(gè)變量的直方圖
#針對(duì)多個(gè)變量,兩兩配對(duì),畫(huà)在一起 sns.pairplot(df[['身高','體重','支出']]) #將各變量間關(guān)系共放一張圖上,在多元統(tǒng)計(jì)分析中很有用
ggplot庫(kù)是采用的繪畫(huà)中圖層的思想,即一層一層往上疊加,先畫(huà)好坐標(biāo),再添線(xiàn),再增加其他操作,最后用 + 號(hào)連接起來(lái),操作起來(lái)更有邏輯章法,語(yǔ)句簡(jiǎn)潔。ggplot新包是plotnine,與R語(yǔ)言的ggplot2對(duì)應(yīng),使用起來(lái)更方便,故直接import plotnine即可,里面的函數(shù)使用與ggplot是基本一樣的
繪制直角坐標(biāo)系和字體
GP=ggplot(aes(x='身高',y='體重'),data=df)
在此基礎(chǔ)上增加線(xiàn)圖
GP + geom_line()+ theme_grey(base_family = 'SimHei')#還可以再往上疊加,+geom_point()就是在折線(xiàn)圖基礎(chǔ)上加上散點(diǎn)圖
改為有三個(gè)變量的點(diǎn)圖,不同類(lèi)型畫(huà)不同記號(hào)(shape)/顏色(color)
ggplot(df,aes(x='身高',y='體重',color='性別'))+geom_point()+ theme_grey(base_family = 'SimHei')
改為分面圖:
用pandas繪制分組統(tǒng)計(jì)圖還需要先groupby,ggplot一步到位更加簡(jiǎn)便
ggplot(df,aes(x='身高',y='體重'))+geom_point()+facet_wrap('性別') + theme_grey(base_family = 'SimHei') #facet_wrap('性別')表示按性別分成兩組畫(huà)分面圖
此外,+theme_bw()等可以設(shè)置圖片背景、主題
ggplot也可以像pandas一樣,在qplot函數(shù)中設(shè)置參數(shù)geom的取值而直接改變圖像類(lèi)型
#快速繪制直方圖 qplot(x='身高',data=df, geom='histogram')+ theme_grey(base_family = 'SimHei') #快速繪制柱形圖 qplot('開(kāi)設(shè)',data=df, geom='bar')+ theme_grey(base_family = 'SimHei') #默認(rèn)散點(diǎn)圖 qplot('身高', '體重', data=df, color='性別') + theme_grey(base_family = 'SimHei')
以上是基于《python數(shù)據(jù)分析基礎(chǔ)教程 王斌會(huì)》整理的學(xué)習(xí)筆記,還有許多參數(shù)設(shè)置沒(méi)有寫(xiě)明,以及pyecharts 動(dòng)態(tài)圖神器,日后學(xué)習(xí)了再一點(diǎn)點(diǎn)補(bǔ)充吧~
到此這篇關(guān)于python可視化分析的實(shí)現(xiàn)(matplotlib、seaborn、ggplot2)的文章就介紹到這了,更多相關(guān)python 可視化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:漢中 重慶 河池 長(zhǎng)春 廊坊 德宏 東莞 臨汾
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python可視化分析的實(shí)現(xiàn)(matplotlib、seaborn、ggplot2)》,本文關(guān)鍵詞 python,可視化,分析,的,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。