99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀matplotlib的環(huán)形圖,你真了解嗎?
matplotlib的環(huán)形圖,你真了解嗎?
2020-06-01
收藏

matplotlib環(huán)形圖是餅圖衍生出來的統(tǒng)計圖形,可以看作是兩個以上餅圖的疊合。環(huán)形圖與餅圖類似,其實是有差別的。餅圖是用圓形及圓內扇形的面積來表示數(shù)值大小的圖形,主要用于表示總體中各組成部分所占的比例。與之對比,環(huán)形圖中間留有空白,可以用多個環(huán)展示多個樣本,既可以表示每個樣本中各部分的占比,又可以對多個樣本的結構同時進行對比。

文字表達永遠沒有圖片來的直觀,從網(wǎng)上隨便搜了一個環(huán)形圖先簡單感受下:

繪制簡單環(huán)形圖

上邊的環(huán)形圖只有一個環(huán),實際上可以根據(jù)需要繪制多個環(huán)嵌套在一起的環(huán)形圖,并且也可以加上每一段弧形所占的比例,我們先從簡單的開始,繪制一個簡單的環(huán)形圖。

先看下數(shù)據(jù)源長什么樣子,依然是繪制餅圖時用到的數(shù)據(jù):

所謂環(huán)形圖,其實用到的依然是繪制餅圖的函數(shù),只是對其中的參數(shù)進行設置后形成環(huán)形圖,我們先來繪制一個簡單的第一小學成績環(huán)形圖:

plt.figure(figsize=(8,8)) #新建畫布,畫布大小為8*8

plt.pie(data2.iloc[0,1:] #截取第一小學的成績
        ,radius=1 # 設置半徑為1
        ,labels=['語文','數(shù)學','英語'] #設置各個角的標簽
        ,autopct='%.2f%%' #設置精度為小數(shù)點后兩位
        ,textprops={'fontsize': 14, 'color': 'k'} #設置標簽字體和顏色
        ,wedgeprops=dict(width=0.4, edgecolor='w')); #設置餅弧寬度和邊框顏色

和之前繪制餅圖不同的是多設置了三個參數(shù),一個是設置半徑,一個是設置字體和顏色(介紹餅圖的文章中餅圖中字體有點小,顏色是默認的黑色,其實字體大小和顏色都是可以設置的),最后一個是設置弧度寬度和邊框顏色,所謂弧度的寬度其實就是環(huán)形的寬度。

來看下效果:

像這種簡單的環(huán)形圖,作用和餅圖差不多,只能反映一個小學的成績情況,如果想要查看兩個學校對比的情況需要繪制兩個圖,當然環(huán)形圖可以解決這個問題,下邊我們來看下升級版的環(huán)形圖!

繪制升級版環(huán)形圖

以繪制兩個環(huán)形為例:

plt.figure(figsize=(8,8)) #新建畫布,畫布大小為8*8

plt.pie(data2.iloc[0,1:] #截取第一小學的成績
        ,radius=1 # 設置半徑為1
        ,labels=['語文','數(shù)學','英語'] #設置各個角的標簽
        ,autopct='%.2f%%' #設置精度為小數(shù)點后兩位
        ,textprops={'fontsize': 14, 'color': 'k'} #設置標簽字體和顏色
        ,wedgeprops=dict(width=0.4, edgecolor='w')) #設置餅弧寬度和邊框顏色

plt.pie(data2.iloc[1,1:] #截取第二小學的成績
        ,radius=0.6 # 設置半徑為0.6
        ,autopct='%.2f%%'#設置精度為小數(shù)點后兩位
        ,textprops={'fontsize': 12, 'color': 'w'}#設置標簽字體和顏色
        ,wedgeprops=dict(width=0.4, edgecolor='w'));#設置餅弧寬度和邊框顏色

以前的文章提到過,可以在同一塊畫布上重復繪圖,在繪制堆積條形圖的時候用到的就是這個知識點,繪制多個環(huán)的環(huán)形圖也是相同的道理。

在同一塊畫布上繪制兩個環(huán),一個大環(huán)一個小環(huán),需要注意的是要先繪制大環(huán),后繪制小環(huán),因為后繪制的圖會覆蓋先繪制的圖,所以我們設置第一個環(huán)的半徑是1,后邊繪制的環(huán)半徑是0.6,來看下效果:

喏,就是這個效果了,這個圖還缺少一個標題,相信大家都知道如何添加圖形標題了。

當然這個環(huán)形圖中的兩個環(huán)挨在一起了,平時我們看到的環(huán)形圖每個環(huán)之間會有一點間隙,能夠很明顯的看出是兩個分離的環(huán),其實這個也不難!仔細觀察上邊的代碼,兩個環(huán)之間的半徑差是0.4,而我們對弧形寬度也設置的是0.4,所以兩個環(huán)之間一點縫隙都沒有,通過對這兩個參數(shù)的設置就可以控制兩個環(huán)之間的距離了。

plt.figure(figsize=(8,8))

plt.pie(data2.iloc[0,1:]
        ,radius=1
        ,labels=['語文','數(shù)學','英語']
        ,autopct='%.2f%%'
        ,textprops={'fontsize': 14, 'color': 'k'}
        ,wedgeprops=dict(width=0.3, edgecolor='w'))

plt.pie(data2.iloc[1,1:] 
        ,radius=0.6 
        ,autopct='%.2f%%'
        ,textprops={'fontsize': 14, 'color': 'k'}
        ,wedgeprops=dict(width=0.3, edgecolor='w'))

plt.title("第一小學(外環(huán))和第二小學(內環(huán))成績圖");

兩個環(huán)形的半徑差沒有變,依然是0.4,我們把弧形寬度改成了0.3,來看下效果:

這樣是不是就變成大家心目中環(huán)形圖的樣子了(我又偷偷的加上標題了)?這是兩個學校的成績環(huán)形圖,如果想要多畫幾個環(huán),記得把半徑差設置大一點,弧形寬度設置小一點,能夠容納多個環(huán)形就可以啦!

你學會了嗎?matplotlib是不是很強大的趕腳!

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師考試動態(tài)
數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }