1.箱型圖
箱型圖是由一個(gè)箱體和一對(duì)箱須所組成的統(tǒng)計(jì)圖形。箱體由第一四分位數(shù)搂抒、中位數(shù)(第二四分位數(shù))和第三四分位數(shù)所組成的艇搀。在箱須的末端之外的數(shù)值可以理解成離群值,因此求晶,箱須是對(duì)一組數(shù)據(jù)范圍的大致直觀描述焰雕。
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
testA = np.random.randn(5000)
testB = np.random.randn(5000)
testList = [testA,testB]#繪制箱線圖輸入數(shù)據(jù)
labels = ["隨機(jī)數(shù)生成器AlphaRM","隨機(jī)數(shù)生成器BetaRM"]
colors = ["#1b9e77","#d95f02"]
whis = 1.6
width = 0.35
bplot = plt.boxplot(testList,
whis=whis,#四分位間距的倍數(shù),用來確定箱須包含數(shù)據(jù)的范圍大小
widths=width,#設(shè)置箱體的寬度
sym="o",#離群值的標(biāo)記樣式
labels=labels,#繪制每一個(gè)數(shù)據(jù)集的刻度標(biāo)簽
patch_artist=True)#是否給箱體添加顏色
for patch,color in zip(bplot["boxes"],colors):
patch.set_facecolor(color)
plt.ylabel("隨機(jī)數(shù)值")
plt.title("生成器抗干擾能力的穩(wěn)定性比較")
plt.grid(axis="y",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
我們將關(guān)鍵字參數(shù)notch的參數(shù)值設(shè)置為True芳杏,其他語句不變矩屁,那么箱體就會(huì)變成有“V”型凹痕的箱體了辟宗。
水平方向的箱型圖
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.random.randn(1000)
plt.boxplot(x,vert=False)
plt.xlabel("隨機(jī)數(shù)值")
plt.yticks([1],["隨機(jī)數(shù)生成器AlphaRM"],rotation=90)
plt.title("隨機(jī)數(shù)生成器抗干擾能力的穩(wěn)定性")
plt.grid(axis="x",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
不繪制離群值的水平放置的箱型圖,修改下面語句即可:
plt.boxplot(x,vert=False,showfliers=False)
2.誤差棒圖
在很多科協(xié)實(shí)驗(yàn)中都存在測(cè)量誤差或是試驗(yàn)誤差吝秕,這是無法控制的客觀因素泊脐。在可視化試驗(yàn)結(jié)果的時(shí)候,最好可以給試驗(yàn)結(jié)果增加觀測(cè)結(jié)果的誤差以表示客觀存在的測(cè)量偏差烁峭。誤差棒圖就是運(yùn)用在這一場(chǎng)景中的很理想的統(tǒng)計(jì)圖形容客。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.1,0.6,10)
y = np.exp(x)
error = 0.05+0.15*x
lower_error = error
upper_error = 0.3*error
error_limit = [lower_error,upper_error]
plt.errorbar(x,y,yerr=error_limit,fmt=":o",
ecolor="y",elinewidth=4,
ms=5,mfc="c",mec="r",
capthick=1,capsize=2)
# yerr單一數(shù)值的非對(duì)稱形式誤差范圍;fmt數(shù)據(jù)點(diǎn)的標(biāo)記樣式和數(shù)據(jù)點(diǎn)標(biāo)記的連接線樣式
# ecolor誤差棒的顏色線條顏色约郁;elinewidth誤差棒的線條粗細(xì)缩挑;ms數(shù)據(jù)點(diǎn)的大小鬓梅;mfc數(shù)據(jù)點(diǎn)的標(biāo)記顏色
# mec數(shù)據(jù)點(diǎn)的標(biāo)記邊緣顏色供置;capthick誤差棒邊緣橫杠的厚度;capsize誤差棒邊緣橫杠的大小
plt.xlim(0,0.7)
plt.show()
帶誤差棒的柱狀圖
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.arange(5)
y = [100,68,79,91,82]
std_err = [7,2,6,10,5]
error_attri = dict(elinewidth=2,ecolor="black",capsize=3)
plt.bar(x,y,
color="c",
width=0.6,
align="center",
yerr=std_err,
error_kw=error_attri,
tick_label=["園區(qū)1","園區(qū)2","園區(qū)3","園區(qū)4","園區(qū)5"])
plt.xlabel("芒果種植區(qū)")
plt.ylabel("收割量")
plt.title("不同芒果種植區(qū)的單次收割量")
plt.grid(True,axis="y",ls=":",color="gray",alpha=0.2)
plt.show()
帶誤差棒的堆積柱狀圖
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.arange(5)
y1 = [1200,2400,1800,2200,1600]
y2 = [1050,2100,1300,1600,1340]
std_err1 = [150,100,180,130,80]
std_err2 = [120,110,170,150,120]
bar_width = 0.6
tick_label=["家庭","小說","心理","科技","兒童"]
error_attri = dict(ecolor="black",elinewidth=2,capsize=0)
plt.bar(x,y1,
bar_width,
color="#87ceeb",
align="center",
yerr=std_err1,
error_kw=error_attri,
label="地區(qū)1")
plt.bar(x,y2,
bar_width,
bottom=y1,
color="#CD5C5C",
align="center",
yerr=std_err2,
error_kw=error_attri,
label="地區(qū)2")
plt.ylabel("訂購數(shù)量")
plt.xlabel("圖書種類")
plt.title("大型圖書展銷會(huì)的不同圖書種類的采購情況")
plt.grid(True,axis="x",ls=":",color="gray",alpha=0.2)
plt.xticks(x,tick_label)
plt.legend()
plt.show()
3.堆積折線圖
通過繪制不同數(shù)據(jù)集的折線圖而生成的绽快。堆積折線圖是按照垂直方向上彼此堆疊且又不相互覆蓋的排列順序芥丧,繪制若干條折線圖而形成的組合圖形。
用函數(shù)stackplot()繪制堆積折線圖
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,6,1)
y=[0,4,3,5,6]
y1=[1,3,4,2,7]
y2=[3,4,1,6,5]
labels=["BluePlanet","BrownPlanet","GreenPlanet"]
colors=["#8da0cb","#fc8d62","#66c2a5"]
plt.stackplot(x,y,y1,y2,labels=labels,colors=colors)
plt.legend(loc="upper left")
plt.show()
4.間斷條形圖
間斷條形圖是在條形圖的基礎(chǔ)上繪制而成的谎僻,主要用來可視化定性數(shù)據(jù)的相同指標(biāo)在時(shí)間維度上的指標(biāo)值的變化情況娄柳,實(shí)現(xiàn)定性數(shù)據(jù)的相同指標(biāo)的變化情況的有效直觀比較。
用函數(shù)broken_bath()繪制間斷條形圖
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
plt.broken_barh([(30,100),(180,50),(260,70)],(20,8),facecolors="#1f78b4")
plt.broken_barh([(60,90),(190,20),(230,30),(280,60)],(10,8),facecolors=("#7fc97f","#beaed4","#fdc086","#ffff99"))
plt.xlim(0,360)
plt.ylim(5,35)
plt.xlabel("演出時(shí)間")
plt.xticks(np.arange(0,361,60))
plt.yticks([15,25],["歌劇院A","歌劇院B"])
plt.grid(ls="-",lw=1,color="gray")
plt.title("不同地區(qū)的歌劇院的演出時(shí)間比較")
plt.show()
5.階梯圖
階梯圖是反映數(shù)據(jù)的趨勢(shì)變化或是周期規(guī)律的艘绍。經(jīng)常使用在時(shí)間序列數(shù)據(jù)的可視化任務(wù)中赤拒,凸顯時(shí)序數(shù)據(jù)的波動(dòng)周期和規(guī)律。
用函數(shù)step()繪制階梯圖
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(1,10,10)
y=np.sin(x)
plt.step(x,y,color="#8dd3c7",where="pre",lw=2)
#關(guān)鍵字參數(shù)where取pre左開右閉诱鞠,取post左閉右開
plt.xlim(0,11)
plt.xticks(np.arange(1,11,1))
plt.ylim(-1.2,1.2)
plt.show()