matplotlib中的黑魔法:constrained和tight layout

2021-03-02 生信修煉手冊

歡迎關注」生信修煉手冊」!

在畫圖時,經常會遇到文字等圖形元素超過了圖片邊框,顯示不全的問題,比如以下代碼

>>> 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等常見圖形元素時可以。對於複雜圖形的布局問題,還是需要自己來精確控制圖形元素的位置。

原創不易,歡迎收藏,點讚,轉發!生信知識浩瀚如海,在生信學習的道路上,讓我們一起並肩作戰!本公眾號深耕耘生信領域多年,具有豐富的數據分析經驗,致力於提供真正有價值的數據分析服務,擅長個性化分析,歡迎有需要的老師和同學前來諮詢。

轉發本文至朋友圈,後臺私信截圖即可加入生信交流群,和小夥伴一起學習交流。

掃描下方二維碼,關注我們,解鎖更多精彩內容!

相關焦點

  • 關於matplotlib,你要的餅圖在這裡
    , 官方提供的餅圖Demo,功能比較比較簡單,在實際應用過程中,往往會有許多個性化的繪製需求,在這裡跟大家一起了解下餅圖(pie chart)的一些特色的功能的實現。from matplotlib import font_manager as fmimport matplotlib as mplimport pandas as pdimport numpy as npimport matplotlib.pyplot as plt% matplotlib inline
  • Python-matplotlib 多子圖共用colorbar
    在繪製多子圖共用colorbar時,最重要的就是對顏色映射進行設置,這裡使用了matplotlib.color.Normalize()進行顏色和數值對應設置。先看一下使用默認設置的結果,每個子圖對應一個colorbar。
  • SCI論文配色-matplotlib分類柱狀圖繪製
    但抱怨歸抱怨,接下來還是使用python-matplotlib 對上圖進行仿製。python-matplotlib 繪製分類柱狀圖的步驟相對比較簡單,即ax.bar()的靈活使用即可,下面為沒有任何定製化繪製的默認繪製代碼:import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.family'] = "Times New Roman"
  • python數據分析【三】matplotlib常用圖案例
    import numpy as npimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltsns.set_style('whitegrid')%matplotlib inline%config InlineBackend.figure_format
  • Python Matplotlib 入門教程:如何控制Matplotlib樣式
    來自:https://www.linuxmi.com/matplotlib-yangshi.html在本篇Python Matplotlib
  • Matplotlib的安裝與繪圖
    一般屬於數據的預處理和清洗完成之後,多會把數據按照橫坐標縱坐標進行繪圖,利用人工檢查數據的使用情況 Matplotlib
  • matplotlib[03]python 繪製動畫animation
    import sysimport numpy as npimport pylab as pltfrom matplotlib.animation import FuncAnimationfrom matplotlib import animationfig, ax = plt.subplots
  • PyCharm安裝matplotlib教程——安裝好matplotlib但是import報錯
    輸入python -m pip install -U pip setuptools2.輸入python -m pip install matplotlib3.檢查是否已經安裝成功默認安裝在D:\Python\Lib\site-packages方式二:通過下載matplotlib進行安裝。進入matplotlib官網。
  • Matplotlib--上帝打翻了調色板
    同樣在圖形中,我們也可以運用matplotlib工具包,繪製斑斕的圖像。此次本文將從matplotlib的繪圖樣式和色彩設置兩個方面來對圖像的形式講解,重點在於色彩的應用。# 查找matplotlibrc文件的路徑mpl.matplotlib_fname()找到路徑後,就可以直接編輯樣式文件了,打開後看到的文件格式大致是這樣的,文件中列舉了所有的樣式參數,找到想要修改的參數,比如lines.linewidth: 8,並將前面的注釋符號去掉,此時再繪圖發現樣式以及生效了。
  • matplotlib繪圖的核心原理講解
    對比到matplotlib中,就相當於初始化了一張figure(畫布),我們畫的任何圖形,都是在這張figure(畫布)上操作的。接著,張三需要給figure(畫布)分配不同的區域,指定哪一塊兒究竟該畫什麼。對比到matplotlib中,就是需要指定axes(坐標系),每一個axes(坐標系)相當於一張畫布上的一塊區域。
  • Python-matplotlib 繪圖配色設計
    2.1 默認圖表這裡首先設置一組數據,使用matplotlib的默認繪製方法進行圖表繪製,具體數據如下:array([10, 25, 12, 15, 28, 13, 20, 26, 23, 40, 39, 35, 42, 31, 29, 16, 27], dtype=int64)
  • python使用matplotlib畫動態圖
    matplotlib是python的核心繪圖庫,是python的一個開源項目,旨在為python提供一個繪圖庫。matplotlib與numpy組合是一種可行的matlab替代方案。在可視化中matplotlib是最常使用的工具,是對數據整體判斷、效果預測不可或缺的重要模塊。下面我們就來聊一聊如何使用matplotlib繪製一個二維動態圖。
  • matplotlib中文顯示之圖表大全
    全局支持中文顯示以及指定局部中文顯示https://aistudio.baidu.com/aistudio/projectdetail/390895使用中還有問題可以在論壇中提出(你的問題可能大家已經討論過了)https://ai.baidu.com/forum/topic/show/958873考慮到部分同學對matplotlib本身不是太熟悉
  • 創造生動有趣的動畫,Matplotlib庫大顯身手
    在描述像過去幾年的股票價格、過去十年的氣候變化、季節性和趨勢等時間序列數據時,與靜態圖相比,動畫更能說明問題。因為,從動畫中,我們可以看到特定參數是如何隨時間而變化的。上圖是模擬雨的圖像。此圖由Matplotlib繪圖庫繪製而成,該繪圖庫常常被認為是python可視化數據包的原始數據組。Matplotlib通過50個分散點的比例和不透明度來模擬雨滴落在平面上的情景。
  • Python中matplotlib的顏色及線條參數控制示例
    Python畫圖的時候選色選點都可以直接參考這裡的內容,matplotlib中有哪些命名顏色可供用於繪圖?
  • Python-matplotlib雙Y軸可視化繪製
    這裡我就直接給出Python-matplotlib繪製方法和R-ggplot2的繪製方法,主要的知識點如下:Matplotlib-Axes.twinx()方法添加副軸Matplotlib-Axes.twinx()方法添加副軸這裡我們直接就給出數據預覽和可視化設計的代碼,圖中部分代碼我們再做詳細解釋,數據預覽如下
  • 一本書掌握Python強大的繪圖庫Matplotlib
    在這個圖景中,Matplotlib 有著非常特別的地方。本書章節四個部分第一部分 Matplotlib 庫的基本原理。這包括回顧構成圖形的不同部分、不同的坐標系、可用的比例和投影,我們還將介紹一些與排版和顏色相關的概念。第二部分 圖形涉及實踐。在介紹了一些生成更好圖形的簡單規則之後,我們將繼續解釋 Matplotlib 默認值和樣式系統,然後再深入研究圖形布局組織。然後我們將探索可用的不同類型的情節,看看如何用不同的元素裝飾一個人物。
  • Matplotlib圖鑑|基礎餅圖
    首先導入相關庫並查看版本import matplotlibprint(matplotlib.__version__) #查看Matplotlib版本import pandas as pdprint(pd.