歡迎關注」生信修煉手冊」!
在畫圖時,經常會遇到文字等圖形元素超過了圖片邊框,顯示不全的問題,比如以下代碼
>>> plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.randn(10))
>>> plt.title('title', fontsize = 60)
>>> plt.xlabel('xlabel', fontsize = 30)
>>> plt.ylabel('ylabel', fontsize = 30)
>>> plt.show()
輸出結果如下
遇到這種問題,我們肯定想著說調節對應元素的屬性,使其適合圖片的大小,在這裡例子中,我們通過調節字體大小fontsize可以來達到目的。這種方法要求我們對圖形元素的屬性進行精確控制,具體到一個確定的數值。
當然,我們可以不斷調整屬性的值,直到效果滿意為止,但是在matplotlib中,為我們提供了更好的解決方法,通過constrained和tight layout兩種布局,可以使得圖形元素進行一定程度的自適應
1. constrained layout
用法如下
>>> plt.subplots(constrained_layout=True)
>>> plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.randn(10))
>>> plt.title('title', fontsize = 60)
>>> plt.xlabel('xlabel', fontsize = 30)
>>> plt.ylabel('ylabel', fontsize = 30)
>>> plt.show()
輸出結果如下
2. tight layout
用法如下
>>> plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.randn(10))
>>> plt.title('title', fontsize = 60)
>>> plt.xlabel('xlabel', fontsize = 30)
>>> plt.ylabel('ylabel', fontsize = 30)
>>> plt.tight_layout()
>>> plt.show()
輸出結果如下
只需要簡單的應用這兩種布局,matplotlib就會自動調整圖形元素,使其恰當的顯示,需要注意的是,這種黑魔法並不是任何情況下都可以奏效,只有當調整標題,圖例,colorbar等常見圖形元素時可以。對於複雜圖形的布局問題,還是需要自己來精確控制圖形元素的位置。
原創不易,歡迎收藏,點讚,轉發!生信知識浩瀚如海,在生信學習的道路上,讓我們一起並肩作戰!本公眾號深耕耘生信領域多年,具有豐富的數據分析經驗,致力於提供真正有價值的數據分析服務,擅長個性化分析,歡迎有需要的老師和同學前來諮詢。轉發本文至朋友圈,後臺私信截圖即可加入生信交流群,和小夥伴一起學習交流。
掃描下方二維碼,關注我們,解鎖更多精彩內容!