如何在Plotly绘制的散点图中高亮满足指定数值条件的区域
实现方法
你原有代码中引入的matplotlib和调用的plt.figure()对Plotly生成的交互式图表没有作用,可以直接删掉,Plotly可以通过update_layout自行配置画布尺寸。
要高亮dist1<0.5且dist2>15的区域,直接调用Plotly Figure实例的add_shape方法插入矩形即可,参数可自定义填充色、透明度等样式,把图层放在散点下方就不会遮挡数据点。
修改后的完整代码如下:
import plotly.express as px import pandas as pd for i in range(len(values)): df_results = pd.DataFrame.from_records(values[i][1]) df_results.columns = ['value','dist1','dist2'] # 绘制基础散点图 fig = px.scatter(df_results, x="dist1", y="dist2") # 添加高亮矩形区域 fig.add_shape( type="rect", x0=0, # dist1最小值一般为0,也可以替换为df_results['dist1'].min()适配数据 x1=0.5, y0=15, y1=df_results['dist2'].max(), # 上边界取当前数据集dist2的最大值,自适应不同批次数据 fillcolor="lightyellow", # 高亮区域填充色 opacity=0.3, # 低透明度避免遮挡散点 layer="below", # 把形状放在散点图层下方 line_width=1, line_color="orange" # 边框颜色 ) # 配置画布尺寸,对应你原来的15*7英寸的比例 fig.update_layout(width=1500, height=700) fig.show()
可选扩展功能
- 如果需要用圆形高亮,把
type="rect"改为type="circle"即可,注意圆形的边界参数是外接矩形的坐标,需要根据你坐标轴的比例调整避免变形 - 如果需要同时高亮落在目标区域的散点,可以给数据集新增标签字段,用颜色区分散点:
df_results['is_target'] = (df_results['dist1'] < 0.5) & (df_results['dist2'] > 15) fig = px.scatter(df_results, x="dist1", y="dist2", color='is_target', color_discrete_map={True: 'red', False: 'navy'})
- 如果需要给高亮区域加文字说明,可以调用
fig.add_annotation()方法添加标注。
内容的提问来源于stack exchange,提问作者user3447653
相关产品推荐
相关产品推荐

