@mJaslam: As @AIMPED suggestion, you can revise your code as below:
@app.callback([Output('card_num1', 'children'),
Output('card_num2', 'children'),
Output('card_num3', 'children'),
Output('card_num4', 'children'),
Output('card_num5', 'children'),
Output('card_num6', 'children'),
Output('card_num7', 'children'),
Output('card_num8', 'children'),
],
[Input('dropdown_year','value'),
Input('dropdown_Installation','value'),
Input('dropdown_metric','value') ])
def update_cards(Year,Installation,Metric):
if Metric == 'CALIPER GROWTH (MM)':
colormap = 'viridis'
else:
colormap = 'agsunset'
df1_a = df1.loc[(df1['Year']==Year)&(df1['Installation']==Installation)&(df1['Metric']==Metric)&(df1['PLOT']==1) ].reset_index()
df2_a = df1.loc[(df1['Year']==Year)&(df1['Installation']==Installation)&(df1['Metric']==Metric)&(df1['PLOT']==2)].reset_index()
df3_a = df1.loc[(df1['Year']==Year)&(df1['Installation']==Installation)&(df1['Metric']==Metric)&(df1['PLOT']==3)].reset_index()
df4_a = df1.loc[(df1['Year']==Year)&(df1['Installation']==Installation)&(df1['Metric']==Metric)&(df1['PLOT']==4)].reset_index()
df5_a = df1.loc[(df1['Year']==Year)&(df1['Installation']==Installation)&(df1['Metric']==Metric)&(df1['PLOT']==5)].reset_index()
df6_a = df1.loc[(df1['Year']==Year)&(df1['Installation']==Installation)&(df1['Metric']==Metric)&(df1['PLOT']==6)].reset_index()
df8_a = IMP1.loc[(IMP1['Year']==Year)&(IMP1['Installation']==Installation)&(IMP1['Metric']==Metric) ].reset_index()
df7_a = WR1.loc[(WR1['Year']==Year)&(WR1['Installation']==Installation)&(WR1['Metric']==Metric) ].reset_index()
value_1_max = df1_a['Value'].max()
value_2_max = df2_a['Value'].max()
value_3_max = df3_a['Value'].max()
value_4_max = df4_a['Value'].max()
value_5_max = df5_a['Value'].max()
value_6_max = df6_a['Value'].max()
value_1_min = df1_a['Value'].min()
value_2_min = df2_a['Value'].min()
value_3_min = df3_a['Value'].min()
value_4_min = df4_a['Value'].min()
value_5_min = df5_a['Value'].min()
value_6_min = df6_a['Value'].min()
max_value=max([value_1_max,value_2_max,value_3_max,value_4_max,value_5_max,value_6_max])
min_value=max([value_1_min,value_2_min,value_3_min,value_4_min,value_5_min,value_6_min])
fig = go.Figure(data=go.Heatmap(
z=df1_a['Value'],zmin=min_value, zmax=max_value,
x=df1_a['Seedlot'],
y=df1_a['Replication'],
text=df1_a['Defect'],
hovertext=df1_a['Management'],
colorscale=colormap, hoverongaps = True, hovertemplate='Seedlot: %{x}<br>Value: %{z}<br>Defect: %{text}<br>Management: %{hovertext}<extra></extra>'))
fig['layout']['yaxis']['autorange'] = "reversed"
fig.update_layout(template="plotly_white",
margin=dict(l = 20, r = 5, t = 10, b = 10),
yaxis_nticks=10,
)
fig.update_xaxes(side="top", tickangle = 270)
So you will map colorscale
with your Metric and then pass it to fig setting.
For Sherry Transfer
, because Replication
is blank so that it did not show. So you want to show picture, not chart?