尝试在python上绘制轮廓图/热图时插值效果不佳

问题描述

我的z值介于0到120之间,但是在插值时会得到各种值, 就像:

-6644476.02694383,-5957351.6613517,-5270227.29575958, -4583102.93016746,-3895978.56457534,-3208854.19898321, -2521729.83339109,-1834605.46779897,-1147481.10220685, -460356.73661473,226767.6289774

在绘制值的直方图时,我看到这些也不例外。

黄色是x,y和z值的子集,问题仍然存在。如何为该数据提供一个不错的热图或轮廓图?是我注意到插值问题吗?

谢谢。

import os
import scipy.interpolate
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

x = [1.9710875,1.97108964,1.97109007,1.97109292,1.97109334,1.9710962,1.95156674,1.95156508,1.95157082,1.95156844,1.96684663,1.96496047,1.96583682,1.95277214,1.94814652,1.95401576,1.93962844,1.97185149,1.96532794,1.96371958,1.960543,1.9512862,1.97803334,1.96579507,1.96716609,1.96771556,1.96538601,1.96611962,1.96227168,1.98252509]
y = [41.28326547,41.28326585,41.28325479,41.28325527,41.28324439,41.28324487,41.26949818,41.2694979,41.26948285,41.26948246,41.28184153,41.27412078,41.27296658,41.26923199,41.26891926,41.270562,41.27069284,41.26754844,41.2826392,41.28118129,41.27474794,41.27390083,41.2798385,41.28465282,41.28064395,41.28030224,41.2822276,41.28023088,41.28004796,41.28501738]
z = [ 90.23937225,90.23937225,90.33037567,90.33137512,84.36405182,111.60513306,82.31817627,111.61412811,22.88290024,42.28657913,72.6518631,110.51089478,95.98405457,63.98109818,1.10047495,58.42002487,48.07130814,55.71062851,53.7532196,48.63370132,66.60357666,46.88467407,27.61787987,39.42815781,42.52419281,33.85250854,68.59270477,66.66952515]

f = scipy.interpolate.interp2d(x,y,z,kind='cubic')

x2 = np.linspace(min(x),max(x),500)
y2 = np.linspace(min(y),max(y),500)

xx2,yy2 = np.meshgrid(x2,y2)
zz2 = f(x2,y2)

CS = plt.contourf(x2,y2,zz2,15,cmap=plt.cm.rainbow)

plt.colorbar()  # draw colorbar
# plot data points.
plt.show()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)