询问Julia中使用非规整(x,y,z)元组调用PyPlot pcolor绘制彩色图的方法
无序(x,y,z)散点调用pcolor绘图的简便方法
以下是两种不需要手动循环构建2D数组的实现方案,根据你的数据特征选择即可:
方法1:适用场景为原始x、y本身是规则网格点,仅顺序被打乱
这种场景下可以用pandas的pivot方法一键生成所需的2D数组:
import pandas as pd import matplotlib.pyplot as plt import numpy as np # 假设你的散点数据已提取为三个一维数组x、y、z df = pd.DataFrame({'x':x, 'y':y, 'z':z}) # 自动生成pcolor要求的参数 arr_x = sorted(df['x'].unique()) arr_y = sorted(df['y'].unique()) image = df.pivot(index='y', columns='x', values='z').values # 直接调用pcolor绘图 plt.pcolor(arr_x, arr_y, image) plt.colorbar() plt.show()
注意:该方案要求所有x、y组合都有对应的z值,无缺失,否则生成的image会存在NaN空值
方法2:适用场景为x、y是任意分布的无序散点,本身不是规则网格
这种场景可以用scipy的griddata工具自动完成插值和网格构建,不需要手动处理坐标对应关系:
from scipy.interpolate import griddata import matplotlib.pyplot as plt import numpy as np # 假设散点数据已提取为三个一维数组x、y、z points = np.column_stack((x, y)) values = z # 自定义生成的网格分辨率,可根据需求调整数值 arr_x = np.linspace(min(x), max(x), 100) arr_y = np.linspace(min(y), max(y), 100) grid_x, grid_y = np.meshgrid(arr_x, arr_y) # 自动插值生成2D的image数组,method可选'nearest'/'linear'/'cubic'适配不同精度需求 image = griddata(points, values, (grid_x, grid_y), method='nearest') # 直接调用pcolor绘图 plt.pcolor(arr_x, arr_y, image) plt.colorbar() plt.show()
内容的提问来源于stack exchange,提问作者math_lover
相关产品推荐
相关产品推荐

