pandas Plotly中子分区之间的y刻度

js5cn81o  于 2023-04-28  发布在  其他
关注(0)|答案(1)|浏览(92)

我看了一下这个问题,我想知道是否有一种方法可以将y标记和名称放在两个子图之间。

数据

import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots

data = {'variable': {0: 'Case', 1: 'Exam', 2: 'History', 3: 'MAP', 4: 'Volume'},
 'margins_fluid': {0: 0.497, 1: 0.668, 2: 0.506, 3: 0.489, 4: 0.718},
 'margins_vp': {0: 0.809, 1: 0.893, 2: 0.832, 3: 0.904, 4: 0.92}}

df = pd.DataFrame(data)

Plot

fig = make_subplots(
    rows=1,
    cols=2,
    shared_xaxes=False,
    shared_yaxes=True,
    horizontal_spacing=0,
    subplot_titles=['<b>Fluid</b>', '<b>Vasopressor</b>'])

fig.append_trace(
    go.Bar(
        x=df['margins_fluid'],
        y=df['variable'], 
        text=df["margins_fluid"], 
        textposition='inside',
        texttemplate="%{x:.4p}",
        orientation='h', 
        width=0.7, # space between bars 
        showlegend=False, ), 
        1, 1) # 1,1 represents row 1 column 1 in the plot grid

fig.append_trace(
    go.Bar(
        x=df['margins_vp'],
        y=df['variable'], 
        text=df["margins_vp"],
        textposition='inside',
        texttemplate="%{x:.4p}",
        orientation='h', 
        width=0.7, 
        showlegend=False), 
        1, 2) # 1,2 represents row 1 column 2 in the plot grid

fig.update_xaxes(
    tickformat=',.0%', 
    row=1,
    col=1,
    autorange='reversed',)
fig.update_xaxes(
    tickformat=',.0%', 
    row=1,
    col=2)

fig.update_layout(
    title_text="Title",
    barmode="group",
    width=800, 
    height=700,
    title_x=0.5,
)

fig.show()

2vuwiymt

2vuwiymt1#

您可以通过将第一个图的y轴设置为右侧来实现这一点,因此位于两者之间。
您只需要添加以下代码行。

fig.update_layout({'yaxis1': {'side': 'right'}})

但是,您还需要加宽两个图之间的horizontal_spacing,以使其适合。在代码中,该值当前设置为0。

相关问题