绘制x和y值,结果为颜色/热图

时间:2018-08-29 00:01:32

标签: python matplotlib plot

基本上,我有一些x和y值。每组x和y值都有一个对应于它们的给定值。我不确定要这样做时,一般的seaborn热图是否足够(我可能会误会),所以该怎么办?

我希望它看起来像这样(包括垃圾箱,这样它是一个更“光滑”的彩色表面,而不仅仅是周围有很多不同的彩色圆点):

enter image description here

编辑: 所以我会尽力解释。

假设我有这样的东西:

import numpy as np 

nx = 3
ny = 5

x = np.linspace(0.1, 1, nx) 
y = np.linspace(1, 11, ny) 

x_bc = x[:, np.newaxis]
y_bc = y[np.newaxis, :]
z = x_bc * y_bc

那么z的输出就是xy的每个组合,即:

[[  0.1     0.35    0.6     0.85    1.1  ]
[  0.55    1.925   3.3     4.675   6.05 ]
[  1.      3.5     6.      8.5    11.   ]]

因此,在这种情况下,我有3x5个z值,即绘图中的颜色应该是什么,这些值来自两个列表(xy),它们具有长度分别为3和5。那就是我想要绘制的。

3 个答案:

答案 0 :(得分:1)

这些线看起来像轮廓。为了绘制它们并使它们之间的空间充满颜色,可以使用contourf

为了完成这项工作,我必须转置z,以使列数与x的大小匹配,而行数与y的大小匹配。

nx = 3
ny = 5

x = np.linspace(0.1, 1, nx) 
y = np.linspace(1, 11, ny) 

x_bc = x[:, np.newaxis]
y_bc = y[np.newaxis, :]
z = x_bc * y_bc

plt.contourf(x, y, z.T)
plt.colorbar()

enter image description here

答案 1 :(得分:0)

看起来像这样,您可以通过kdeplot开始,如下所示:

 ax = sns.kdeplot(x, y, shade=True)

答案 2 :(得分:0)

我建议使用matplotlib。如果您的x,y坐标是在统一网格上定义的,那么contourf应该可以解决问题;否则,tricontourf将为您进行三角剖分和插值。看一下this示例:

enter image description here