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

时间:2020-09-04 10:14:48

标签: python scipy heatmap contour

我的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.33037567,
        90.33137512,  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()

0 个答案:

没有答案