按name列分组DataFrame并生成Plotly等高线图
按name分组生成独立等高线图
直接通过groupby拆分数据,为每个分组单独执行等高线图生成逻辑即可,完整代码如下:
import pandas as pd import numpy as np import plotly.graph_objects as go from scipy.interpolate import griddata # 初始化原始数据 df = pd.DataFrame({'col1':[11,12,23,21,23,43,23,12,21,34], 'col2':[111,121,213,211,123,143,213,122,210,171], 'col3':[2111,2121,2213,2121,3123,4143,3213,2122,1210,989], 'name':['aa','bb','cc','cc','aa','aa','cc','bb','aa','bb']}) # 按name分组遍历生成图表 for group_name, group_data in df.groupby('name'): # 提取当前分组的坐标与数值 x = np.array(group_data['col1']) y = np.array(group_data['col2']) z = np.array(group_data['col3']) # 构建插值网格 xi = np.linspace(x.min(), x.max(), 100) yi = np.linspace(y.min(), y.max(), 100) grid_x, grid_y = np.meshgrid(xi, yi) # 执行线性插值生成等高线数据 Z = griddata((x, y), z, (grid_x, grid_y), method='linear') # 创建并显示分组专属等高线图 fig = go.Figure(go.Contour(x=xi, y=yi, z=Z, colorscale='Jet')) fig.update_layout(title=f"分组:{group_name} 的等高线图") fig.show()
关键说明
groupby('name')会将原始数据拆分为三个独立子数据集,分别对应aa、bb、cc- 每个分组的插值与绘图逻辑和原代码一致,但仅使用当前分组的数据,确保图表独立
- 通过
update_layout添加分组标题,方便快速区分不同图表
内容的提问来源于stack exchange,提问作者serdar_bay
相关产品推荐
相关产品推荐

