Python 使用plotly在同一绘图上绘制多个图表

Python 使用plotly在同一绘图上绘制多个图表,python,bar-chart,linechart,plotly-python,Python,Bar Chart,Linechart,Plotly Python,我有两个数据集,其示例如下所示: | Week | System | Total | |------------|--------|-------| | 2019-10-14 | a | 600 | | 2019-10-14 | b | 130 | | 2019-10-21 | a | 820 | | 2019-10-21 | b | 205 | | 2019-10-28 | a | 850 | | 2019-10

我有两个数据集,其示例如下所示:

| Week       | System | Total |
|------------|--------|-------|
| 2019-10-14 | a      | 600   |
| 2019-10-14 | b      | 130   |
| 2019-10-21 | a      | 820   |
| 2019-10-21 | b      | 205   |
| 2019-10-28 | a      | 850   |
| 2019-10-28 | b      | 230   |

a和b值的格式以百分比表示。提供的输入为:

df=[['2019-10-14','a',600],['2019-10-14','b',130],['2019-10-21','a',820],['2019-10-21','b',205],['2019-10-28','a',850],['2019-10-28','b',230]]
df= pd.DataFrame(df,columns=['Week','System','Total'])
df['Week'] =  pd.to_datetime(df['Week'], format='%Y-%m-%d')

我想在plotly中的同一个绘图中为dataframe df绘制分组条形图,并为dataframe df1绘制多折线图,以便df1的y轴用作次轴

这个链接倾向于解决类似的问题,但我在使用相同的概念时遇到了错误-

下面是我尝试过的代码片段,但我在这里遇到了错误。我猜错误在
fin.add_trace(trace1)

最终输出应类似于下面提供的示例图:

df=[['2019-10-14','a',600],['2019-10-14','b',130],['2019-10-21','a',820],['2019-10-21','b',205],['2019-10-28','a',850],['2019-10-28','b',230]]
df= pd.DataFrame(df,columns=['Week','System','Total'])
df['Week'] =  pd.to_datetime(df['Week'], format='%Y-%m-%d')
df1=[['2019-10-14',np.nan, np.nan],['2019-10-21',39.5,61.48],['2019-10-28',6.19,-1.45]]
df1= pd.DataFrame(df1,columns=['Week','a','b'])
df1['Week'] =  pd.to_datetime(df1['Week'], format='%Y-%m-%d')
cmap_2 = {
        'a': '#C64E34',
        'b': '#EA85ED',
    }
trace1 = px.bar(df, x="Week", y="Total", color="System", barmode="group",
               color_discrete_map=cmap_2)


trace2 = go.Figure()
trace2.add_trace(go.Scatter(x=df1['Week'], y=df1['a'], name='A',
                         line=dict(color='red', width=4)))
trace2.add_trace(go.Scatter(x=df1['Week'], y=df1['b'], name='B',
                         line=dict(color='purple', width=4, dash='dash')
))

trace2.update_xaxes(
    tickvals=["2019-10-14", "2019-10-21", "2019-10-28"]
)



fin = make_subplots(specs=[[{"secondary_y": True}]])
fin.add_trace(trace1)
fin.add_trace(trace2,secondary_y=True)
fin['layout'].update(height = 600, width = 800, title = title,xaxis=dict(tickangle=-90))
iplot(fin)