我想在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似乎完全符合我的需要。
答案 0 :(得分:3)
如果数据在矩阵A中,您可以使用
image(255*A); colormap gray(256); axis image;
答案 1 :(得分:1)
我不确定你的意思是连续的(均匀间隔?),所以我的答案不会做太多的假设,除了你有理由提到坐标(如果只是一个普通的网格,那么只是image
或imagesc
)。因此,只假设您的x和y坐标可能是非均匀间隔,但至少单调增加样本,请尝试使用surf
view(2)
:
surf(X,Y,data)
view(2)
colormap gray
默认情况下surf
使用FaceColor
选项设置'flat'
属性:
flat
-CData
的值决定了曲面每个面的颜色。第一个顶点的颜色数据决定了整个面部的颜色。
换句话说,该值将决定阴影。
答案 2 :(得分:0)
假设您的数据位于data
且您的x和y坐标位于x
和y
,请按以下步骤操作:
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