一、堆積圖
1、堆積柱狀圖
如果將函數bar()中的參數bottom的取值設定為列表y、列表y1代表另一個數,函數bar(x,y1,bottom=y,color="r")就會輸出堆積柱狀圖
代碼示例:
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [6,10,4,5,1]
y1 = [2,6,3,8,5]
plt.bar(x,y,align="center",color="#66c2a5",tick_label=["A","B","C","D","E"],label="title_A")
plt.bar(x,y1,align="center",color="#8da0cb",tick_label=["A","B","C","D","E"],label="title_B")
plt.legend()
plt.show()
圖像輸出:
2、堆積條狀圖
如果將函數barh()中的參數left的取值設定為列表y,列表y1代表另一數據,函數bar(x,y1,left=y,color="r")
代碼示例:
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [6,10,4,5,1]
y1 = [2,6,3,8,5]
plt.barh(x,y,align="center",color="#66c2a5",tick_label=["A","B","C","D","E"],label="title_A")
plt.barh(x,y1,align="center",left=y,color="#8da0cb",tick_label=["A","B","C","D","E"],label="title_B")
plt.legend()
plt.show()
圖像輸出:
二、分塊圖
1、多數據並列柱狀圖
代碼示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y = [6,10,4,5,1]
y1 = [2,6,3,8,5]
bar_width = 0.35
tick_label = ["A","B","C","D","E"]
plt.bar(x,y,align="center",color="c",width=bar_width,label="title_A",alpha=0.5)
plt.bar(x+bar_width,y1,align="center",color="b",width=bar_width,label="title_B",alpha=0.5)
plt.xticks(x+bar_width/2,tick_label)
plt.legend()
plt.show()
輸出圖像:
2、多數據平行條狀圖
代碼示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y = [6,10,4,5,1]
y1 = [2,6,3,8,5]
bar_width = 0.35
tick_label = ["A","B","C","D","E"]
plt.barh(x,y,bar_width,align="center",color="c",label="title_A",alpha=0.5)
plt.barh(x+bar_width,y1,bar_width,align="center",color="b",label="title_B",alpha=0.5)
plt.yticks(x+bar_width/2,tick_label)
plt.legend()
plt.show()
輸出圖像:
三、堆積折線圖、間斷條形圖和階梯圖
1、函數stackplot() —— 繪制堆積折線圖
代碼示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,5,1)
y = [0,4,3,5,6]
y1 = [1,3,4,2,7]
y2 = [3,4,1,6,5]
labels = ["Blue","Brown","Green"]
colors = ["#8da0cb","#fc8d62","#66c2a5"]
plt.stackplot(x,y,y1,y2,labels=labels,colors=colors)
plt.legend(loc="upper left")
plt.show()
圖像輸出:
2、函數broken_barh() —— 繪制間斷條形圖
代碼示例:
import matplotlib.pyplot as plt
import numpy as np
plt.broken_barh([(30,100),(180,50),(260,70)],(20,8),facecolors="#1f78b4")
plt.broken_barh([(60,90),(190,520),(230,30),(280,60)],(10,8),facecolors=("#7fc97f","#beaed4","#fdc086","#ffff99"))
plt.xlim(0,360)
plt.ylim(5,35)
plt.xticks(np.arange(0,361,60))
plt.yticks([15,25],["A","B"])
plt.grid(ls="-",lw=1,color="gray")
plt.show()
圖像輸出:
3、函數step() —— 繪制階梯圖
參數說明:
where:默認參數為“pre”,
參數值“pre”表示x軸上的每個數據點對應y軸上的數值向左側繪制水平線直到x軸上的此數據點的左側相鄰數據點為止,
也就是說,x軸上的相鄰數據點的取值是按照左開右閉區間進行選取的。
除了可以取“pre”,還可以取“post”,“post”指的是x軸上的相鄰數據點的取值按照左閉右開的數據點選取,
然后用對應的y軸上的數據向右繪制水平線直到x軸上的數據點右側相鄰數據點為止。
代碼示例:
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)
plt.xlim(0,11)
plt.xticks(np.arange(1,11,1))
plt.ylim(-1.2,1.2)
plt.show()
圖像輸出:
四、直方圖
1、hist()
hist(x,bins=bins,color="b",histtype="bar",label="score",rwidth=10)
參數說明:
x:連續型數據的輸入值
bins:用於確定柱體的個數或是柱體邊緣的范圍
color:柱體的顏色
histtype:柱體類型
label:圖例內容
rwidth:柱體寬度
2、堆積直方圖
代碼實例:
import matplotlib.pyplot as plt
import numpy as np
x1 = np.random.randint(0,100,100)
x2 = np.random.randint(0,100,100)
x = [x1,x2]
colors = ["#8dd3c7","#bebada"]
labels = ["A","B"]
bins = range(0,101,10)
plt.hist(x,bins=bins,color=colors,histtype="bar",rwidth=10,stacked=True,label=labels,edgecolor = 'k')
plt.legend(loc="upper left")
plt.show()
堆積圖像輸出:
對比:不堆積並列(即:stacked=False)效果圖輸出 :
3、直方圖與階梯圖結合對比
代碼實例:
import matplotlib.pyplot as plt
import numpy as np
x1 = np.random.randint(0,100,100)
x2 = np.random.randint(0,100,100)
x = [x1,x2]
colors = ["#8dd3c7","#bebada"]
labels = ["A","B"]
bins = range(0,101,10)
plt.hist(x,bins=bins,color=colors,histtype="stepfilled",rwidth=10,stacked=True,label=labels,edgecolor = 'k')
plt.legend(loc="upper right")
plt.show()
圖像輸出:
五、餅圖
1、分列式餅圖
代碼實現:
import matplotlib.pyplot as plt
labels = ["A","B","C","D"]
nums = [0.35,0.15,0.2,0.3]
colors = ["#377eb8","#4daf4a","#984ea3","#ff7f00"]
explode = (0.1,0.1,0.1,0.1)
plt.pie(nums,explode=explode,labels=labels,autopct="%3.1f%%",startangle=45,shadow=True,colors=colors)
plt.show()
圖像輸出:
2、非分裂式餅圖
代碼示例:
import matplotlib.pyplot as plt
labels = ["A","B","C","D"]
nums = [0.35,0.15,0.2,0.3]
colors = ["#377eb8","#4daf4a","#984ea3","#ff7f00"]
plt.pie(nums,labels=labels,autopct="%3.1f%%",startangle=45,colors=colors,pctdistance=0.7)
plt.show()
圖像輸出:
3、內嵌環形餅圖
代碼示例:
import matplotlib.pyplot as plt
labels = ["A","B","C","D","E"]
nums1 = [40,15,20,10,15]
nums2 = [30,25,15,20,10]
colors = ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"]
w1, t1, a1 = plt.pie(nums1,autopct="%3.1f%%",radius=1,pctdistance=0.85,colors=colors,textprops=dict(color="w"),wedgeprops=dict(width=0.3,edgecolor="w"))
w2, t2, a2 = plt.pie(nums2,autopct="%3.1f%%",radius=0.7,pctdistance=0.75,colors=colors,textprops=dict(color="w"),wedgeprops=dict(width=0.3,edgecolor="w"))
plt.legend(nums1,labels,fontsize=12,bbox_to_anchor=(0.91,0,0.3,1))
plt.setp(a1,size=15,weight="bold")
plt.setp(a2,size=15,weight="bold")
plt.setp(t1,size=12)
plt.show()
圖像輸出:
六、箱線圖
plt.boxplot(testList,whis=whis,widths=width,sym="o",labels=labels,patch_artist=True)
參數說明:
testList:繪制箱線圖的輸入數據
whis:四分位間距的倍數,用來確定箱須包含數據的范圍大小
widths:設置箱體的寬度
sym:離群值的標記樣式
labels:繪制每一個數據集的刻度標簽
patch_artist:是否給箱體添加顏色
代碼實例:
import matplotlib.pyplot as plt
import numpy as np
t1 = np.random.randn(5000)
t2 = np.random.randn(5000)
testList = [t1,t2]
labels = ["A","B"]
colors = ["#1b9e77","#d95f02"]
whis = 1.6
width = 0.35
bplot = plt.boxplot(testList,whis=whis,widths=width,sym="o",labels=labels,patch_artist=True)
for patch,color in zip(bplot["boxes"],colors):
patch.set_facecolor(color)
plt.grid(axis="y",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
圖像輸出:
2、水平方向箱線圖
代碼示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.boxplot(x,vert=False)
plt.grid(axis="x",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
圖像輸出:
3、沒有離群值的水平箱線圖
代碼示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.boxplot(x,vert=False,showfliers=False)
plt.grid(axis="x",ls=":",lw=1,color="gray",alpha=0.4)
plt.show()
圖像輸出:
七、誤差棒圖
1、定量數據的誤差范圍
代碼示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.1,0.6,10)
y = np.exp(x)
err = 0.05 + 0.15 * x
low_err = err
upp_err = err * 0.3
err_lim = [low_err,upp_err]
plt.errorbar(x,y,yerr=err_lim,fmt=":o",ecolor="y",elinewidth=4,ms=5,mfc='r',capthick=1,capsize=2)
plt.xlim(0,0.7)
plt.show()
圖像輸出:
參數說明:
x,y : 數據點的位置
yerr:單一數值的非對稱形式誤差范圍 //誤差范圍非對稱形式,而且數據點下方的誤差范圍大於數據點上方的誤差范圍,xerr類似
fmt:數據點標記樣式和數據點標記的連接線樣式
ecolor:誤差棒的線條顏色
elinewidth:誤差棒的線條粗細
ms:數據點的大小
mfc:數據點的標記顏色
mec:數據點的標記邊沿顏色
capthick:誤差棒邊界橫杠的厚度
capsize:誤差棒邊界橫杠的大小
2、帶誤差棒的柱狀圖
代碼實例:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y = [100,68,79,91,82]
err = [7,2,6,10,5]
err_att = dict(elinewidth=2,ecolor="black",casize=3)
plt.bar(x,y,color="c",width=0.6,align="center",yerr=err,error_kw=err_att,tick_label=["A","B","C","D","E"])
plt.grid(True,axis="y",ls=":",color="gray",alpha=0.2)
plt.show()
圖像輸出:
3、帶誤差棒的條形圖
代碼實例:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y = [1200,2400,1800,2200,1600]
err = [150,100,180,130,100]
bar_width = 0.6
colors = ["#377eb8","#4daf4a","#984ea3","#ff7f00","#e41a1c"]
plt.barh(x,y,bar_width,color=colors,align="center",xerr=err,tick_label=["A","B","C","D","E"])
plt.grid(True,axis="x",ls=":",color="gray",alpha=0.2)
plt.show()
圖像輸出:
4、帶誤差棒的多數據並列柱狀圖
代碼實例:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y1 = [100,68,79,91,82]
y2 = [120,75,70,78,85]
err1 = [7,2,6,10,5]
err2 = [5,1,4,8,9]
err_att = dict(elinewidth=2,ecolor="black",capize=3)
bar_width = 0.4
tick_label=["A","B","C","D","E"]
plt.bar(x,y1,bar_width,color="#87ceeb",align="center",yerr=err1,error_kw=err_att,label="NO.1")
plt.bar(x+bar_width,y2,bar_width,color="#cd5c5c",align="center",yerr=err2,error_kw=err_att,label="NO.2")
plt.xticks(x+bar_width/2,tick_label)
plt.grid(True,axis="y",ls=":",color="gray",alpha=0.2)
plt.legend()
plt.show()
圖像輸出:
5、帶誤差棒的堆積柱狀圖
代碼實例:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y1 = [1200,2400,1800,2200,1600]
y2 = [1050,2100,1300,1600,1340]
err1 = [150,100,180,130,80]
err2 = [120,110,170,150,120]
err_att = dict(elinewidth=2,ecolor="black",capize=0)
bar_width = 0.6
tick_label=["A","B","C","D","E"]
plt.bar(x,y1,bar_width,color="#6495ed",align="center",yerr=err1,error_kw=err_att,label="NO.1")
plt.bar(x,y2,bar_width,color="#ffa500",align="center",yerr=err2,error_kw=err_att,label="NO.2")
plt.xticks(x,tick_label)
plt.grid(True,axis="y",ls=":",color="gray",alpha=0.2)
plt.legend()
plt.show()
圖像輸出: