網(wǎng)站首頁 編程語言 正文
問題如下
當我使用Matplotlib繪制圖形時,經(jīng)常會遇到一些比例太小導(dǎo)致 百分比標簽 以及 文本標簽 重疊問題。這樣的話非常影響美觀,效果在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不甘示弱,遇到問題就是肝!首先,我們解決的思路是,使得重疊標簽中,一個進行向上挪動一丟丟即可。
那問題是代碼怎么來實現(xiàn)呢?
首先,我們需要了解到,plt.pie()
有多個返回值,參考官網(wǎng)如下:
oh no,那有的朋友會說全英文的誰知道在巴巴啥,于是翻譯過來如下:
- patches 繪制餅圖每一塊的對象
- texts 文本的列表
- autotexts 百分比的文本列表
或者打印出來如下:
這樣我們就明白了。所以第二步,我們需要考慮的是:如何取出我們需要的 文本對象 與 百分比對象 去設(shè)置距離。
了解到每個返回的數(shù)據(jù)類型實際上是 list
列表,而列表里面的每個元素就是圖形中每個文本的對象。
所以,此時我們通過循環(huán)將重疊的元素取出來,而又因為構(gòu)建繪圖數(shù)據(jù)中,是索引為0與索引為1兩個元素為0導(dǎo)致重疊。所以我們獲取其中一個即可。
代碼如下:
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()
那問題是,我們怎么去設(shè)置它的位置呢?因為matplotlib
關(guān)于設(shè)置的方法非常多,而我們并不主張記憶,更加主張時用時查。所以這個時候就需要借助我們的官網(wǎng)了。
查官網(wǎng)的第一步是需要知道,該數(shù)據(jù)是什么類型的對象,則使用type()
輸出其類型。
print(type(texts[i])) print(type(autotexts[i]))
然后我們就去官網(wǎng)搜索matplotlib.text.Text
,定位:
ohohoh,至于這些英文就需要大家自己去看了,你懂的吧!所以接下來,我們來寫代碼解決我們的問題:
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é)?
原文鏈接:https://blog.csdn.net/weixin_44352981/article/details/116947159
相關(guān)推薦
- 2023-07-15 es6中export和export default的區(qū)別
- 2022-12-29 React中事件的類型定義方式_React
- 2023-01-07 基于Go語言實現(xiàn)選擇排序算法及優(yōu)化_Golang
- 2022-11-19 Golang?cron?定時器和定時任務(wù)的使用場景_Golang
- 2022-05-17 SQL?Server實現(xiàn)分頁方法介紹_MsSql
- 2023-06-16 pytest中的fixture基本用法_python
- 2022-04-18 python字符串格式化(%格式符和format方式)_python
- 2023-10-10 Promise同時獲取n個接口數(shù)據(jù)的幾種方式
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支