我正在绘制 $MSTR 资产如下
fig = px.area(df_all, x='end', y='val', color='fact', title=f'{symbol.upper()} : Balance sheet', width=1000, height=600)
fig.add_trace(go.Scatter(x=df_assets['end'], y=df_assets['val'], mode='lines', name='Assets'))
st.plotly_chart(fig)
同样,我正在绘制这样的负债(这些显示为负值):
fig = px.area(df_all_liabilities, x='end', y='val', color='fact', title=f'{symbol.upper()} : Balance sheet', width=1000, height=600)
fig.add_trace(go.Scatter(x=df_liabilities['end'], y=df_liabilities['val'], mode='lines', name='Liabilities'))
st.plotly_chart(fig)
有没有办法将这两者放在同一个图表上?
您可以使用plotly.graph_objects在每个类别的循环过程中添加图形,也可以重用使用
px.area
创建的图形数据。我没有任何数据可以重现您的问题,因此我使用 reference 中的示例来创建带有子图的图表。通过将上下图之间的间距设置为零,我使它看起来像一个图。根据您的数据,可能需要进行一些调整。
import plotly.express as px
from plotly.subplots import make_subplots
import plotly.graph_objects as go
df = px.data.gapminder()
df['pop2'] = df['pop']*-1
fig_t = px.area(df, x="year", y="pop", color="continent", line_group="country")
fig_b = px.area(df, x="year", y="pop2", color="continent", line_group="country")
fig = make_subplots(rows=2, cols=1,
shared_xaxes=True,
vertical_spacing=0,
specs=[[{'type': 'scatter'}], [{'type': 'scatter'}]],
)
for i in range(len(fig_top.data)):
fig.add_trace(fig_top.data[i], row=1, col=1)
for k in range(len(fig_bottom.data)):
fig.add_trace(fig_bottom.data[k], row=2, col=1)
fig.show()