如何修复“将cmap居中,缺少值(nan),在海洋热图上居中”

时间:2019-07-18 21:58:16

标签: python python-3.x seaborn heatmap

我正在尝试绘制以0为中​​心的海洋热图。 因此,我可以看到正负范围内的值存在差异。问题在于,接近0时,这些值的变化太平滑了,另一方面,无论是正值还是负值的绝对值都很大。

我正在使用代码

params = {'font.size': 18, 'xtick.labelsize':16, ytick.labelsize':16}
plt.rcParams.update(params)
plt.figure(figsize=(24,8))
mask = dfs.isnull()
cmap = sns.diverging_palette(255, 0, s=99, sep=1, as_cmap=True)
sns.heatmap(dfs,cmap=cmap, mask=mask, center=0, annot=labelS, fmt='')
plt.show()

因此,我希望正值是红色,而负值是蓝色。 我创建了一个2D的numpy数组,以便可以写入数据信号。问题是,当我将其绘制为0时,它们是仍为红色的负值。

上面代码的热图结果显示在这里:

Edit1:我尝试了以下答案:  Defining the midpoint of a colormap in matplotlib, 建议中点(1-vmax /(vmax + abs(vmin))= 0.9481981715613719) 移位或缩小cmap的选项都不起作用,也许如果我知道函数的最佳星形和终点会更好,但是由于我不知道如何选择不同于0和1的外观,因此外观相同。我在图中绘制了具有实际值的热图,因此更好看。link to image 2

我认为,因为值的范围很大,并且介于0到1之间,而vmax = 217和vmin = -3981,差异并不足够快。 而且正色的发散不同于负色的发散。

也许起点和终点都有一个最佳值,问题是我该如何从数据中做到这一点?

@DaveTheScientist说,当中点等于0或1时,此解决方案失败,他提出了一个新函数,我的中点确实接近1,但他的解决方案仍然对我不起作用,我得到了相同的结果作为@Paul H的原始答案。

并且如果未显示每个单元格的值,那么我将无法区分丢失的值和接近0的值。

编辑2:现在,我在这里Shifted colorbar matplotlib尝试了选项1和2。 而且,还有更多的问题,由于缺少值,它们正在像其他值一样获得颜色。值仍然接近0的问题仍然出现。

我的数据集是一个缺少值(nan)的熊猫数据透视表(dfs),所以它不是常规的(也许是问题所在?)

0.2     0.3     0.4     0.5     0.6     0.7     0.8     0.85    0.9
0.59    nan     0.409447    0.403747    0.220221    0.198353    0.112916    1.70769     -188.474    -1803.68
0.57    nan     nan     0.402517    0.393347    0.206475    0.182728    2.3221  -180.016    -1814.15
0.55    nan     nan     0.403747    0.229443    0.211342    0.114802    3.02297     -203.211    -1787.95
0.53    nan     0.410742    0.404906    0.226998    0.129954    0.113135    -0.759108   -183.026    -1837.94
0.51    nan     nan     0.401211    0.39512     0.20654     0.189979    1.02238     -178.454    -1584.25
0.49    nan     nan     0.404906    0.396786    0.209138    0.117177    -0.472419   -173.616    -1750.06
0.47    nan     0.410139    0.405985    0.228938    0.128596    0.119513    2.03246     -241.663    -1751.43
0.45    nan     0.411318    0.404906    0.398352    0.206402    0.120057    -5.65621    -234.121    -1669.31
0.43    nan     nan     0.405985    0.398352    0.221434    0.203799    -3.45825    -247.245    -1540.45
0.41    nan     nan     0.409447    0.402516    0.213089    0.191273    -8.74121    -290.459    -1501.15
0.39    nan     nan     0.406968    0.402516    0.226998    0.12801     -3.31603    -260.139    -1460.85
0.37    nan     nan     0.406968    0.403747    0.227574    0.132975    -4.60131    -339.783    -1423.44
0.35    nan     nan     0.410139    0.403747    0.393347    0.209181    -10.0318    -309.951    -1264.69
0.33    nan     nan     0.410741    0.403747    0.230069    0.141903    -15.315     -366.672    -1106.8
0.31    nan     nan     0.413946    0.406968    0.24464     0.219125    -22.3067    -371.801    -3981.65
0.29    nan     nan     0.413761    0.408701    0.401211    0.223775    -19.8598    -429.873    -812.076
0.27    nan     nan     0.412663    0.405985    0.396786    0.221357    -19.9852    -420.288    -661.54
0.25    nan     nan     0.413762    0.410139    0.24378     0.220389    -45.1834    -407.948    -561.944
0.23    nan     nan     nan     0.412253    0.402516    0.229078    -83.3562    -384.158    -222.658
0.21    nan     nan     0.41405     0.412986    0.403747    0.401211    -129.443    -407.312    -8.51213
0.19    nan     nan     nan     0.414211    0.4087  0.80159     -128.428    -226.756    204.561
0.17    nan     nan     nan     0.413975    0.412986    -2.14317    -107.155    106.968     217.525
0.15    nan     nan     nan     nan     0.414136    -6.2662     107.339     154.627     128.412
0.13    nan     nan     -4.84622    16.165  31.0498     29.0702     22.9361     23.9982     18.0343
0.125   nan     -8.68298    17.7774     21.5409     21.1447     23.1349     12.5357     19.238  13.954
0.12    5.19241     20.5002     25.1215     18.5761     21.3382     15.3316     2.84265     2.37559     11.0637
0.115   26.9932     35.8498     30.6433     10.9662     -0.579587   4.75105     1.82187     5.57865     1.94192
0.11    33.4479     34.3506     22.2485     13.1617     12.6101     12.3581     1.8572  2.91308     2.91308
0.105   39.4335     37.4019     37.4019     26.5404     15.0971     15.0971     -871.345    -871.345    1.14922
0.1     30.1349     30.1349     27.678  27.678  19.0532     19.0532     8.53414     8.53414     8.53414
0.095   34.9027     34.9027     16.1035     16.1035     16.1035     14.4113     14.4113     14.4113     14.4113
0.09    32.3556     32.3556     32.3556     5.51217     5.51217     5.51217     5.51217     5.51217     5.51217
0.085   -479.572    -479.572    -479.572    1.9069  1.9069  1.9069  1.9069  1.9069  1.9069
0.08    -0.14278    -0.14278    -0.14278    -0.14278    -0.14278    -0.14278    -0.14278    -0.14278    -0.14278
0.075   4.3636  4.3636  4.3636  4.3636  4.3636  4.3636  4.3636  4.3636  4.3636
0.07    -0.103964   -0.103964   -0.103964   -0.103964   -0.103964   -0.103964   -0.103964   -0.103964   -0.103964
0.065   -3.51647    -3.51647    -3.51647    -3.51647    -3.51647    -3.51647    -3.51647    -3.51647    -3.51647
0.06    -5.33304    -5.33304    -5.33304    -5.33304    -5.33304    -5.33304    -5.33304    -5.33304    -5.33304
0.055   -1.01983    -1.01983    -1.01983    -1.01983    -1.01983    -1.01983    -1.01983    -1.01983    -1.01983
0.05    -0.0490618  -0.0490618  -0.0490618  -0.0490618  -0.0490618  -0.0490618  -0.0490618  -0.0490618  -0.0490618
0.045   -3.03683    -3.03683    -3.03683    -3.03683    -3.03683    -3.03683    -3.03683    -3.03683    -3.03683
0.04    -2.75252    -2.75252    -2.75252    -2.75252    -2.75252    -2.75252    -2.75252    -2.75252    -2.75252
0.035   -3.31855    -3.31855    -3.31855    -3.31855    -3.31855    -3.31855    -3.31855    -3.31855    -3.31855
0.03    0.0711071   0.0711071   0.0711071   0.0711071   0.0711071   0.0711071   0.0711071   0.0711071   0.0711071
0.025   0.0669509   0.0669509   0.0669509   0.0669509   0.0669509   0.0669509   0.0669509   0.0669509   0.0669509
0.02    0.0587947   0.0587947   0.0587947   0.0587947   0.0587947   0.0587947   0.0587947   0.0587947   0.0587947
0.015   -4.69897    -4.69897    -4.69897    -4.69897    -4.69897    -4.69897    -4.69897    -4.69897    -4.69897
0.01    -4.44004    -4.44004    -4.44004    -4.44004    -4.44004    -4.44004    -4.44004    -4.44004    -4.44004
0.005   -3.66247    -3.66247    -3.66247    -3.66247    -3.66247    -3.66247    -3.66247    -3.66247    -3.66247

如您所见,散度不是以0为中心。

0 个答案:

没有答案