在Matplotlib中从3D数据生成离散热图

时间:2017-03-15 22:12:33

标签: python matplotlib heatmap

所以我想做这样的事情:

Generating a heat map using 3D data in matplotlib

但我不希望我的色轴连续。

我的输入数据格式为:

System.setProperty("hadoop.home.dir", "C:\\winutil\\");

换句话说,我的z值是0或1,并且永远不会介入。

我试试:

java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

但我得到的是:

Result

看起来,contourf给了我一个连续的功能。我希望它只是显示已经在z变量中的值,而不是将函数拟合到它。我怎么能这样做?

编辑:另外,如果可能的话,我希望在灰度上有离散值(0或1)。

1 个答案:

答案 0 :(得分:0)

您可以将levels参数用于contour,例如levels=[0,0.5,1]

import numpy as np
import matplotlib.pyplot as plt

#===Load Data===#
x,y  = np.meshgrid(np.arange(20),np.arange(20) )
data = np.random.randint(0,2, size=(20,20))

#===Plot===#
plt.subplot(111)
plt.contourf(x,y,data, levels=[0,0.5,1])
plt.colorbar()
plt.show()

enter image description here

另一种选择可能是使用imshow()

import numpy as np
import matplotlib.pyplot as plt

#===Load Data===#
x,y  = np.meshgrid(np.arange(20),np.arange(20) )
data = np.random.randint(0,2, size=(20,20))

#===Plot===#
plt.subplot(111)
plt.imshow(data, interpolation="None")
plt.colorbar()
plt.show()

enter image description here