我看了一下这个问题,我想知道是否有一种方法可以将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()
1条答案
按热度按时间2vuwiymt1#
您可以通过将第一个图的y轴设置为右侧来实现这一点,因此位于两者之间。
您只需要添加以下代码行。
但是,您还需要加宽两个图之间的
horizontal_spacing
,以使其适合。在代码中,该值当前设置为0。