1

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

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

我想在二维图中绘制此信息,以便在包含 (x_i,y_i) 的每个小方块中,该图将值 0 的正方形黑色,值 1 的白色和中间值的适当灰色阴影.

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


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

4

3 回答 3

3

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

image(255*A); colormap gray(256); axis image;
于 2013-10-18T19:58:16.557 回答
1

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

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

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

flat— 的值CData确定表面每个面的颜色。第一个顶点的颜色数据决定了整个面的颜色。

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

于 2013-10-18T20:01:16.380 回答
0

假设您的数据在data并且您的 x 和 y 坐标在xand中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
于 2013-10-18T20:16:21.440 回答