亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python?Matplotlib繪制扇形圖標(biāo)簽重疊問(wèn)題解決過(guò)程

 更新時(shí)間:2022年08月03日 08:49:29   作者:老Amy  
在使用Matplotlib畫(huà)圖時(shí),常會(huì)遇到標(biāo)簽重疊問(wèn)題的時(shí)候,所以下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib繪制扇形圖標(biāo)簽重疊問(wèn)題的解決過(guò)程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

問(wèn)題如下

當(dāng)我使用Matplotlib繪制圖形時(shí),經(jīng)常會(huì)遇到一些比例太小導(dǎo)致 百分比標(biāo)簽 以及 文本標(biāo)簽 重疊問(wèn)題。這樣的話非常影響美觀,效果在BOSS心中的大打折扣。

代碼如下:

from matplotlib import pyplot as plt

frac = [0,0,18/50,16/50,9/50,6/50,2/50]
label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]']
plt.pie(frac,labels=label,autopct="%.2f%%",textprops={"size":10},shadow=True)
plt.show()

解決

老Amy不甘示弱,遇到問(wèn)題就是肝!首先,我們解決的思路是,使得重疊標(biāo)簽中,一個(gè)進(jìn)行向上挪動(dòng)一丟丟即可。

那問(wèn)題是代碼怎么來(lái)實(shí)現(xiàn)呢?

首先,我們需要了解到,plt.pie()有多個(gè)返回值,參考官網(wǎng)如下:

oh no,那有的朋友會(huì)說(shuō)全英文的誰(shuí)知道在巴巴啥,于是翻譯過(guò)來(lái)如下:

  • patches 繪制餅圖每一塊的對(duì)象
  • texts 文本的列表
  • autotexts 百分比的文本列表

或者打印出來(lái)如下:

這樣我們就明白了。所以第二步,我們需要考慮的是:如何取出我們需要的 文本對(duì)象百分比對(duì)象 去設(shè)置距離。

了解到每個(gè)返回的數(shù)據(jù)類(lèi)型實(shí)際上是 list 列表,而列表里面的每個(gè)元素就是圖形中每個(gè)文本的對(duì)象。

所以,此時(shí)我們通過(guò)循環(huán)將重疊的元素取出來(lái),而又因?yàn)闃?gòu)建繪圖數(shù)據(jù)中,是索引為0索引為1兩個(gè)元素為0導(dǎo)致重疊。所以我們獲取其中一個(gè)即可。

代碼如下:

from matplotlib import pyplot as plt

frac = [0,0,18/50,16/50,9/50,6/50,2/50]
label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]']

patches,texts,autotexts = plt.pie(frac,labels=label,autopct="%.2f%%",textprops={"size":10},shadow=True)

for i in range(len(autotexts)):
    if i == 0:
        print(texts[i])
        print(autotexts[i])

plt.show()

那問(wèn)題是,我們?cè)趺慈ピO(shè)置它的位置呢?因?yàn)?code>matplotlib關(guān)于設(shè)置的方法非常多,而我們并不主張記憶,更加主張時(shí)用時(shí)查。所以這個(gè)時(shí)候就需要借助我們的官網(wǎng)了。

查官網(wǎng)的第一步是需要知道,該數(shù)據(jù)是什么類(lèi)型的對(duì)象,則使用type()輸出其類(lèi)型。

print(type(texts[i]))
print(type(autotexts[i]))

然后我們就去官網(wǎng)搜索matplotlib.text.Text,定位:

ohohoh,至于這些英文就需要大家自己去看了,你懂的吧!所以接下來(lái),我們來(lái)寫(xiě)代碼解決我們的問(wèn)題:

from matplotlib import pyplot as plt

frac = [0,0,18/50,16/50,9/50,6/50,2/50]
label = ['[3,4]','(4,5]','(5,6]','(6,7]','(7,8]','(8,9]','(9,10]']

patches,texts,autotexts = plt.pie(frac,labels=label,autopct="%.2f%%",textprops={"size":10},shadow=True)

for i in range(len(autotexts)):
    if i == 0:
        print(texts[i].set_y(0.1))
        print(autotexts[i].set_y(0.1))

plt.show()

總結(jié) 

到此這篇關(guān)于Python Matplotlib繪制扇形圖標(biāo)簽重疊問(wèn)題解決的文章就介紹到這了,更多相關(guān)Matplotlib繪制扇形圖標(biāo)簽重疊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論