如何在OpenTURNS中获得正确显示的Kriging结果输出图形
问题根源
核心问题是绘图范围设置与实际输入坐标范围不匹配:你手动设置的[-10, 50]绘图区间不符合输入坐标的真实分布(无论你用的是UTM投影坐标还是原始经纬度坐标,观测点都落在了你设定的绘图窗口外),因此观测点无法显示,同时克里金预测范围也和实际数据区域错位。
解决步骤
- 替换手动设置的绘图上下界,直接从输入数据中提取真实的坐标范围,确保所有观测点都在绘图窗口内
- 为观测点云设置醒目的独立颜色,避免和克里金预测的色带颜色重叠导致看不见
- 代码末尾添加显示/保存图片的逻辑,否则绘图不会主动渲染输出
修正后代码
import openturns as ot import pandas as pd from openturns.viewer import View df = pd.read_csv("kreuzkerpenutm.csv") inputdata = ot.Sample(df[['x','y']].values) outputdata = ot.Sample(df[['z']].values) dimension = 2 basis = ot.ConstantBasisFactory(dimension).build() covarianceModel = ot.SphericalModel(dimension) algo = ot.KrigingAlgorithm(inputdata, outputdata, covarianceModel, basis) algo.run() result = algo.getResult() metamodel = result.getMetaModel() # 从输入数据自动提取真实绘图范围 lower = inputdata.getMin() upper = inputdata.getMax() graph = metamodel.draw(lower, upper) graph.setBoundingBox(ot.Interval(lower, upper)) # 给观测点设置醒目的红色,避免和底图色带重叠 point_cloud = ot.Cloud(inputdata) point_cloud.setColor("red") graph.add(point_cloud) graph.setTitle("Kriging metamodel") view = View(graph, legend_kw={'bbox_to_anchor':(1,1), 'loc':"upper left"}) view.getFigure().tight_layout() # 显示绘图,也可替换为view.save("kriging_result.png")直接保存到本地 view.show()
额外排查方向
如果修改后仍有显示异常,可先打印inputdata.getMin()、inputdata.getMax()确认坐标是否正确读取;同时检查协方差模型参数拟合结果,若协方差参数拟合失效也会导致克里金预测结果异常。
内容的提问来源于stack exchange,提问作者simonericmoon
相关产品推荐
相关产品推荐

