最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用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)多圖嵌套的過程。

首先,實(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',
)

接下來實(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è)軸,用來顯示條形圖
ax_bar = inset_axes(
    ax, # 父軸
    width='40%', height='50%', # 新軸相對(duì)于父軸的長寬比例
    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)注可以通過 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è)軸,用來顯示條形圖
ax_bar = inset_axes(
    ax, # 父軸
    width='47%', height='52%', # 新軸相對(duì)于父軸的長寬比例
    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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決pyttsx3無法封裝的問題

    解決pyttsx3無法封裝的問題

    今天小編就為大家分享一篇解決pyttsx3無法封裝的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python如何利用%操作符格式化字符串詳解

    Python如何利用%操作符格式化字符串詳解

    %是Python風(fēng)格的字符串格式化操作符,非常類似C語言里的printf()函數(shù)的字符串格式化,下面這篇文章主要給大家介紹了關(guān)于Python如何利用%操作符格式化字符串的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • 利用Python制作百度圖片下載器

    利用Python制作百度圖片下載器

    這篇文章主要介紹了利用Python制作的一個(gè)百度圖片下載器,可以顯示實(shí)時(shí)的下載進(jìn)度,文中的示例代碼講解詳細(xì),感興趣的可以跟隨小編學(xué)習(xí)一下
    2022-01-01
  • Django表單提交后實(shí)現(xiàn)獲取相同name的不同value值

    Django表單提交后實(shí)現(xiàn)獲取相同name的不同value值

    這篇文章主要介紹了Django表單提交后實(shí)現(xiàn)獲取相同name的不同value值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • PyCharm最新激活碼PyCharm2020.2.3有效

    PyCharm最新激活碼PyCharm2020.2.3有效

    這篇文章為大家提供了PyCharm最新激活碼PyCharm2020.2.3有效,需要的朋友可以參考下
    2020-11-11
  • Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖

    Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖

    matplotlib是python的一個(gè)模塊,用于繪制各種圖形,今天介紹一下折線圖的繪制,下面這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)分析之使用matplotlib繪制折線圖、柱狀圖和柱線混合圖的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Matplotlib繪圖基礎(chǔ)之地圖繪制詳解

    Matplotlib繪圖基礎(chǔ)之地圖繪制詳解

    如果分析的數(shù)據(jù)與地域相關(guān),那么,把分析結(jié)果結(jié)合地圖一起展示的話,會(huì)讓可視化的效果得到極大的提升,下面就來講講如何利用Matplotlib一步步通過地圖來展示分析結(jié)果吧
    2023-08-08
  • Django查詢數(shù)據(jù)庫的性能優(yōu)化示例代碼

    Django查詢數(shù)據(jù)庫的性能優(yōu)化示例代碼

    這篇文章主要給大家介紹了關(guān)于Django查詢數(shù)據(jù)庫性能優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • Python實(shí)現(xiàn)拷貝多個(gè)文件到同一目錄的方法

    Python實(shí)現(xiàn)拷貝多個(gè)文件到同一目錄的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)拷貝多個(gè)文件到同一目錄的方法,涉及Python針對(duì)文件與目錄的遍歷、復(fù)制等相關(guān)操作技巧,需要的朋友可以參考下
    2016-09-09
  • python獲取文件后綴名及批量更新目錄下文件后綴名的方法

    python獲取文件后綴名及批量更新目錄下文件后綴名的方法

    這篇文章主要介紹了python獲取文件后綴名及批量更新目錄下文件后綴名的方法,實(shí)例展示了Python針對(duì)文件后綴名的遍歷查找及修改等常用操作技巧,并對(duì)其中的關(guān)鍵知識(shí)點(diǎn)進(jìn)行了分析與總結(jié),需要的朋友可以參考下
    2014-11-11

最新評(píng)論

丹凤县| 泰和县| 德州市| 永登县| 平遥县| 扎赉特旗| 滁州市| 新安县| 雷波县| 广南县| 平昌县| 梓潼县| 砀山县| 南宫市| 名山县| 海门市| 阳泉市| 江安县| 鲁山县| 鄂温| 浦县| 左权县| 平塘县| 潜山县| 瓮安县| 建阳市| 盐津县| 七台河市| 九龙县| 房山区| 济源市| 平罗县| 长丰县| 宁河县| 罗源县| 陕西省| 东阿县| 墨脱县| 方正县| 南昌市| 梅州市|