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

使用Python實(shí)現(xiàn)嵌套繪圖并為條形圖添加自定義標(biāo)注

 更新時(shí)間:2024年02月27日 08:36:06   作者:geoli91  
論文繪圖時(shí)經(jīng)常需要多圖嵌套,正好最近繪圖用到了,所以這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)嵌套繪圖并為條形圖添加自定義標(biāo)注,感興趣的可以了解下

論文繪圖時(shí)經(jīng)常需要多圖嵌套,正好最近繪圖用到了,記錄一下使用Python實(shí)現(xiàn)多圖嵌套的過(guò)程。

首先,實(shí)現(xiàn) Seaborn 分別繪制折線圖和柱狀圖。

'''繪制折線圖'''
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore", "use_inf_as_na")
 
# 獲取繪圖數(shù)據(jù)
df_fmri=sns.load_dataset("fmri")
# 繪制折線圖
sns.lineplot(data=df_fmri, x="timepoint", y="signal", hue="event")
 
# 創(chuàng)建繪圖數(shù)據(jù)
df_bar=df_fmri[['subject','signal']].groupby('subject',observed=True).agg('max').reset_index()
# 繪制條形圖
ax_bar=sns.barplot(
    data=df_bar,
    x="subject", y="signal",
    palette='Set2',
)

接下來(lái)實(shí)現(xiàn)條形圖與折線圖的嵌套,核心是使用 inset_axes 函數(shù)創(chuàng)建一個(gè)新的軸,然后再繪制第二個(gè)圖時(shí)指定繪圖的軸為剛才新建的軸。

from mpl_toolkits.axes_grid1.inset_locator import inset_axes
import matplotlib.pyplot as plt
 
# 獲取繪圖數(shù)據(jù)
df_fmri = sns.load_dataset("fmri")
df_bar=df_fmri[['subject','signal']].groupby('subject',observed=True).agg('max').reset_index()
 
# 繪制折線圖
ax=sns.lineplot(data=df_fmri, x="timepoint", y="signal", hue="event")
plt.legend(loc='upper left')
 
# 使用 inset_axes 函數(shù)添加一個(gè)軸,用來(lái)顯示條形圖
ax_bar = inset_axes(
    ax, # 父軸
    width='40%', height='50%', # 新軸相對(duì)于父軸的長(zhǎng)寬比例
    loc='lower left', # 新軸的錨點(diǎn)相對(duì)于父軸的位置
    bbox_to_anchor=(0.55,0.45,1,1), # 新軸的bbox
    bbox_transform=ax.transAxes # bbox_to_anchor 的坐標(biāo)基準(zhǔn)
    )
# 繪制條形圖
ax_bar=sns.barplot(
    data=df_bar,
    x="subject", y="signal", 
    palette='Set2',
    ax=ax_bar
)

可以看到,右上角的條形圖顯得很擁擠,x軸標(biāo)注相互重疊比較嚴(yán)重,因此,考慮將條形圖由縱向變?yōu)闄M向,在 Seaborn 繪圖時(shí)交換 x 軸和 y 軸就能實(shí)現(xiàn)。此外,bar上方的空間也比較大,考慮將x軸的標(biāo)注標(biāo)注到bar上方,以進(jìn)一步節(jié)約空間。bar的標(biāo)注可以通過(guò) ax.bar_label() 函數(shù)實(shí)現(xiàn),該函數(shù)不僅可以直接標(biāo)注每個(gè)bar的數(shù)值,也可以自定義要標(biāo)注的內(nèi)容和格式。修改后的代碼和結(jié)果圖如下:

from mpl_toolkits.axes_grid1.inset_locator import inset_axes
import matplotlib.pyplot as plt
 
# 準(zhǔn)備數(shù)據(jù)
df_fmri = sns.load_dataset("fmri")
df_bar=df_fmri[['subject','signal']].groupby('subject',observed=True).agg('max').reset_index()
 
# 繪制折線圖
ax=sns.lineplot(data=df_fmri, x="timepoint", y="signal", hue="event")
plt.legend(loc='upper left')
 
# 使用 inset_axes 函數(shù)添加一個(gè)軸,用來(lái)顯示條形圖
ax_bar = inset_axes(
    ax, # 父軸
    width='47%', height='52%', # 新軸相對(duì)于父軸的長(zhǎng)寬比例
    loc='lower left', # 新軸的錨點(diǎn)相對(duì)于父軸的位置
    bbox_to_anchor=(0.5,0.44,1,1), # 新軸的bbox
    bbox_transform=ax.transAxes # bbox_to_anchor 的坐標(biāo)基準(zhǔn)
    )
# 繪制條形圖
ax_bar=sns.barplot(
    data=df_bar,
    # 交換 x 軸和 y 軸列名實(shí)現(xiàn)橫向條形圖
    x="signal", y="subject", 
    palette='Set2',
    ax=ax_bar
)
# 使用 sns 的 bar_label 函數(shù)為條形圖添加標(biāo)注
ax_bar.bar_label(
    ax_bar.containers[0], # 條形圖的 BarContainer 對(duì)象
    labels=df_bar['subject'], # 要標(biāo)注的labels,默認(rèn)為 bar 的數(shù)值,此處傳入自定義的label序列
    label_type='edge', # 標(biāo)注顯示的位置,可選 edge 或 center
    padding=2, # 標(biāo)注與bar之間的距離
    # fmt='%.2f' # 標(biāo)注格式化字符串
    fontsize=10 # 設(shè)置標(biāo)注的字體大小
    )
# 為了避免標(biāo)注超出繪圖范圍,將x軸的繪圖范圍擴(kuò)大
plt.xlim(0,0.62)
# 隱藏左側(cè)y軸
ax_bar.yaxis.set_visible(False)
# 去除多余的軸線
sns.despine()

打完收工!

到此這篇關(guān)于使用Python實(shí)現(xiàn)嵌套繪圖并為條形圖添加自定義標(biāo)注的文章就介紹到這了,更多相關(guān)Python嵌套繪圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 探索Python庫(kù)coconut輕松地編寫函數(shù)式代碼實(shí)例

    探索Python庫(kù)coconut輕松地編寫函數(shù)式代碼實(shí)例

    本文將介紹Python Coconut的基本概念、語(yǔ)法特性和實(shí)際應(yīng)用,同時(shí)提供豐富的示例代碼,以幫助大家更好地理解和應(yīng)用這個(gè)強(qiáng)大的工具
    2024-01-01
  • Python如何檢驗(yàn)樣本是否服從正態(tài)分布

    Python如何檢驗(yàn)樣本是否服從正態(tài)分布

    這篇文章主要介紹了Python如何檢驗(yàn)樣本是否服從正態(tài)分布問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • pandas DataFrame的修改方法(值、列、索引)

    pandas DataFrame的修改方法(值、列、索引)

    這篇文章主要介紹了pandas DataFrame的修改方法(值、列、索引),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用Jest?在?Visual?Studio?Code?中進(jìn)行單元測(cè)試的流程分析

    使用Jest?在?Visual?Studio?Code?中進(jìn)行單元測(cè)試的流程分析

    Jest是一個(gè)流行的JavaScript測(cè)試框架,它提供了簡(jiǎn)潔、靈活和強(qiáng)大的工具來(lái)編寫和運(yùn)行單元測(cè)試,今天通過(guò)本文給大家介紹使用Jest在Visual Studio Code中進(jìn)行單元測(cè)試的流程分析,感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • django中row語(yǔ)法詳解

    django中row語(yǔ)法詳解

    在Django模板中,使用{{ row }}語(yǔ)法可以輸出列表row的所有元素,但是如果你想要輸出列表中的某個(gè)元素,需要使用下標(biāo)來(lái)訪問(wèn)它,這篇文章主要介紹了django中row語(yǔ)法詳解,需要的朋友可以參考下
    2023-06-06
  • Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法

    Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法

    本文主要介紹了Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法,DataFrame數(shù)據(jù)合并主要使用merge()方法和concat()方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • PyCharm Python Console中文輸出亂碼問(wèn)題及解決

    PyCharm Python Console中文輸出亂碼問(wèn)題及解決

    這篇文章主要介紹了PyCharm Python Console中文輸出亂碼問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • python pickle存儲(chǔ)、讀取大數(shù)據(jù)量列表、字典數(shù)據(jù)的方法

    python pickle存儲(chǔ)、讀取大數(shù)據(jù)量列表、字典數(shù)據(jù)的方法

    pickle模塊實(shí)現(xiàn)了用于序列化和反序列化python對(duì)象結(jié)構(gòu)的二進(jìn)制協(xié)議。這篇文章主要介紹了python pickle存儲(chǔ)、讀取大數(shù)據(jù)量列表、字典的數(shù)據(jù),需要的朋友可以參考下
    2019-07-07
  • Python代碼集pathlib應(yīng)用之獲取指定目錄下的所有文件

    Python代碼集pathlib應(yīng)用之獲取指定目錄下的所有文件

    這篇文章主要介紹了Python代碼集pathlib應(yīng)用之獲取指定目錄下的所有文件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • tensorflow圖像裁剪進(jìn)行數(shù)據(jù)增強(qiáng)操作

    tensorflow圖像裁剪進(jìn)行數(shù)據(jù)增強(qiáng)操作

    這篇文章主要介紹了tensorflow圖像裁剪進(jìn)行數(shù)據(jù)增強(qiáng)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06

最新評(píng)論