Plotly散点图如何在悬停时融合两个非关联DataFrame的数据
解决方案
方法1:临时添加合并文本列到主DataFrame
由于两个DataFrame结构不匹配无法直接关联,你可以把相关矩阵中delta对应的附加信息拼接成字符串,临时加入主DataFrame作为新列(不修改原列名),再将这个新列加入hover数据:
# 从相关矩阵DataFrame(示例命名为corr_matrix_df)提取delta对应的附加信息 # 请根据你的实际矩阵结构调整提取逻辑 gamma_val = corr_matrix_df.loc['delta', 'gamma'] alpha_val = corr_matrix_df.loc['delta', 'alpha'] # 生成附加信息文本并添加到主DataFrame X_reduced_df['delta_extra'] = f"gamma: {gamma_val}, alpha: {alpha_val}" # 原代码基础上,把新列加入hover_data fig = px.scatter(X_reduced_df, x='EXTRACTION_DATE_SAMPLE', y='score_IF', color= 'anomaly_class_IF', hover_data=['score_IF','delta', 'omicron', 'NH4-N (titr.)(W)_Zusatzparameter-ESRI', 'P ges. filtr. (photom.)(W) mA_Zusatzparameter-ESRI', 'BSB5 (mit Verd) DIN 1899_Zusatzparameter-ESRI', 'N org. (Ber. TKN)(W)_Zusatzparameter-ESRI', 'delta_extra' # 新增的附加信息列 ], title="Default Display with Gaps") fig.show() # 可选:用完后删除临时列,避免污染原DataFrame del X_reduced_df['delta_extra']
方法2:手动修改Plotly图的hover文本
如果不想改动主DataFrame,可以在生成图表后,直接遍历每个数据系列,把附加信息追加到hover文本中:
fig = px.scatter(X_reduced_df, x='EXTRACTION_DATE_SAMPLE', y='score_IF', color= 'anomaly_class_IF', hover_data=['score_IF','delta', 'omicron', 'NH4-N (titr.)(W)_Zusatzparameter-ESRI', 'P ges. filtr. (photom.)(W) mA_Zusatzparameter-ESRI', 'BSB5 (mit Verd) DIN 1899_Zusatzparameter-ESRI', 'N org. (Ber. TKN)(W)_Zusatzparameter-ESRI' ], title="Default Display with Gaps") # 提取相关矩阵中delta的附加信息 gamma_val = corr_matrix_df.loc['delta', 'gamma'] alpha_val = corr_matrix_df.loc['delta', 'alpha'] extra_info = f"<br>gamma: {gamma_val}<br>alpha: {alpha_val}" # 遍历所有数据系列,追加附加信息到hover文本 for trace in fig.data: trace.hovertext = [text + extra_info for text in trace.hovertext] fig.show()
补充说明
如果每个数据点对应的delta附加信息不是全局固定值,需要先建立主DataFrame中delta值与相关矩阵的映射关系,把对应的值匹配后再生成文本或追加到hover文本中。两种方法都不会修改原DataFrame的列名,符合你的需求。
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

