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

熱線電話:13121318867

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

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

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

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

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

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

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

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

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

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

來看下效果:

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

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

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

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

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

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

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

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

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

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

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

plt.pie(data2.iloc[0,1:]
        ,radius=1
        ,labels=['語文','數(shù)學(xué)','英語']
        ,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("第一小學(xué)(外環(huán))和第二小學(xué)(內(nèi)環(huán))成績圖");

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

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

你學(xué)會了嗎?matplotlib是不是很強(qiáng)大的趕腳!

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

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

數(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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) 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); }