matplotlib可视化之饼图plt.pie()与plt.legend()中bbox_to_anchor参数的理解
- 函數(shù)功能:表示離散變量各占比情況
- 調(diào)用方法:plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False)
- 參數(shù)說明:
- x:指定繪圖的數(shù)據(jù)
- explode:指定餅圖某些部分的突出顯示,即呈現(xiàn)爆炸式
- labels:為餅圖添加標簽說明,類似于圖例說明
- colors:指定餅圖的填充色
- autopct:自動添加百分比顯示,可以采用格式化的方法顯示
- pctdistance:設置百分比標簽與圓心的距離
- shadow:是否添加餅圖的陰影效果
- labeldistance:設置各扇形標簽(圖例)與圓心的距離;
- startangle:設置餅圖的初始擺放角度;
- radius:設置餅圖的半徑大小;
- counterclock:是否讓餅圖按逆時針順序呈現(xiàn);
- wedgeprops:設置餅圖內(nèi)外邊界的屬性,如邊界線的粗細、顏色等;
- textprops:設置餅圖中文本的屬性,如字體大小、顏色等;
- center:指定餅圖的中心點位置,默認為原點
- frame:是否要顯示餅圖背后的圖框,如果設置為True的話,需要同時控制圖框x軸、y軸的范圍和餅圖的中心位置;
一、繪制簡單餅圖:
二、環(huán)形圖:通過參數(shù)wedgecolor = {'width':0.5}繪制,自定義數(shù)值0.5表示環(huán)形圖的寬度
?三、使用多個參數(shù)繪制復雜餅圖:
#構(gòu)造數(shù)據(jù):某城鎮(zhèn)受教育程度 education = [9823, 5601, 3759, 1400, 450] labels = ['小學', '初中', '高中', '大學', '研究生及以上']explode = [0,0,0,0.2,0.3] # 用于突出顯示特定人群 # 自定義顏色,更多顏色參考顏色網(wǎng)站:https://xkcd.com/color/rgb/ colors=['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555'] # 將橫、縱坐標軸標準化處理,保證餅圖是一個正圓,否則可能為橢圓 plt.axes(aspect='equal')# 繪制餅圖 plt.pie(x = education, # 繪圖數(shù)據(jù) explode=explode, # 突出顯示特定人群labels=labels, # 添加教育水平標簽colors=colors, # 設置餅圖的自定義填充色autopct='%.1f%%', # 設置百分比的格式,這里保留一位小數(shù)pctdistance=0.7, # 設置百分比標簽與圓心的距離labeldistance = 1.15, # 設置教育水平標簽與圓心的距離startangle = 180, # 設置餅圖的初始角度radius = 1.5, # 設置餅圖的半徑counterclock = False, # 是否逆時針,這里設置為順時針方向# 設置餅圖內(nèi)外邊界的屬性值:linewidth表示餅圖內(nèi)外邊框線寬度;width表示餅圖內(nèi)外寬度,可控制生成環(huán)形圖;edgecolor表示邊框線的顏色 wedgeprops = {'linewidth': 1.5,'width':0.5, 'edgecolor':'green'}, textprops = {'fontsize':12, 'color':'k'}, # 設置文本標簽的屬性值center = (0,0), # 設置餅圖的原點frame = 0) # 是否顯示餅圖的圖框,這里設置不顯示# 顯示圖形 plt.show()四、內(nèi)嵌環(huán)形圖:用來分析兩組具有同類別的數(shù)據(jù)對比
通過半徑radius跟環(huán)形圖的寬度設置wedgeprops={'width':num}來繪制
例如:分析兩種草莓蛋糕的配料占比情況
# 自定義顏色圖列表 colormaplist = ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"] elements =['面粉','糖','奶油','草莓','堅果'] weight1 = [40,15,20,10,15] weight2 = [30,25,15,20,10]plt.pie(weight1,autopct="%3.1f%%", # 百分比顯示格式radius=1, # 半徑pctdistance=0.85, # 百分比文本距離圓心距離colors=colormaplist, # 顏色textprops=dict(color= "w"), # 文本設置 labels = elements, # 各類別標簽wedgeprops=dict(width=0.3, edgecolor = 'w')) # 餅圖內(nèi)外邊格式設置plt.pie(weight2,autopct="%3.1f%%",radius=0.7,pctdistance=0.75,colors=colormaplist, #內(nèi)環(huán)形圖也使用相同的顏色圖,否則會出現(xiàn)同類別的兩個數(shù)據(jù)顏色不對應,不利于觀測分析textprops=dict(color= "w"),wedgeprops=dict(width=0.3, edgecolor = 'w'))# 通過legend函數(shù)中的loc和bbox_to_anchor參數(shù)控制圖例位置 # bbox_to_anchor = (x,y,width,height)具體四個參數(shù)含義在后面解釋 plt.legend( loc = 'center right',bbox_to_anchor = (1.15,0,0.3,1),fontsize = 15) plt.title('兩種草莓蛋糕中配料的比例對比圖',fontsize = 17)plt.show()五、plt.legend()中的bbox_to_anchor = (x,y,width,height)中四個參數(shù)的理解
?1)bbox_to_anchor?參數(shù)用來更好的控制以及調(diào)整圖例框的位置
?2)x,y表示圖例框的某個點的坐標位置,而至于那個點是哪里,取決于plt.legend中的參數(shù)loc決定,例如:loc = 'center'則x,y表示圖例框中心點的位置;
3)width表示將由x,y表示的原圖例框的初始位置水平移動多少距離(距離原圖例框的寬度);
??height表示將由x,y表示的原圖例框的初始位置豎直移動多少距離(距離原圖例框的高度);
下面用作圖來理解:
fig,ax = plt.subplots(2,1,figsize = (8,5))ax[0].scatter(0.5,0.5,label = '(0.5,0.5,0,0)') ax[0].legend(loc = 'upper right',bbox_to_anchor = (0.5,0.5,0,0),prop={'size':20}) ax[0].set_xlim(0,1) ax[0].set_ylim(0,1)ax[1].scatter(0.5,0.5,label = '(0.5,0.5,0.5,0.5)') ax[1].legend(loc = 'upper right',bbox_to_anchor = (0.5,0.5,0.5,0.5),prop={'size':20}) ax[1].set_xlim(0,1) ax[1].set_ylim(0,1)plt.subplots_adjust(hspace=0.2) plt.show()?由上圖第一個子圖可知:圖例框的右上頂點('upper right')對應點(0.5,0.5);由第二個子圖可知:當width,height設置0.5時,表示新的圖例框距離原圖例框位置水平跟垂直距離0.5的位置,此時新圖例框右上頂點的位置為(1,1)。
?
總結(jié)
以上是生活随笔為你收集整理的matplotlib可视化之饼图plt.pie()与plt.legend()中bbox_to_anchor参数的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6基本的语法(十七) lterato
- 下一篇: hdu1856_