“密度”在Matlab中绘制,但不是在数据点的密度意义上

时间:2013-10-18 19:28:40

标签: matlab plot

我想在Matlab中绘制一种“密度图”,但还没找到合适的工具。

我有“连续”数据,x在(x_min和x_max)之间,y在(y_min和y_max)之间。在这些点对中的每一对(x_i,y_i),都有一个0到1之间的值。

我想在2d图中绘制这些信息,这样在包含(x_i,y_i)的每个小方块中,该图阴影为方形黑色为值0,白色为值1,以及适当的灰色阴影对于中间值。

这可以在Matlab中轻松完成吗?


http://www.mathworks.com/help/images/ref/mat2gray.html似乎完全符合我的需要。

3 个答案:

答案 0 :(得分:3)

如果数据在矩阵A中,您可以使用

image(255*A); colormap gray(256); axis image;

答案 1 :(得分:1)

我不确定你的意思是连续的(均匀间隔?),所以我的答案不会做太多的假设,除了你有理由提到坐标(如果只是一个普通的网格,那么只是imageimagesc)。因此,只假设您的x和y坐标可能是非均匀间隔,但至少单调增加样本,请尝试使用surf view(2)

surf(X,Y,data)
view(2)
colormap gray

默认情况下surf使用FaceColor选项设置'flat'属性:

  

flat - CData的值决定了曲面每个面的颜色。第一个顶点的颜色数据决定了整个面部的颜色。

换句话说,该值将决定阴影。

答案 2 :(得分:0)

假设您的数据位于data且您的x和y坐标位于xy,请按以下步骤操作:

imagesc(x, y, data) % to create a heat map
colormap(gray) % for gray levels
caxis([0 1]) % to set 0 to black and 1 to white
axis xy % if you want the y axis to point up
colorbar % to display the colorbar