Matlab - 使用surfc来修改xlim和ylim以去除白色边距

时间:2017-08-07 05:35:10

标签: matlab surface

我得到一个关于温度表面的二维图(用颜色表示)的图。我在这里绘制的解决方案是对称的。

数组x表示包含(sizexsizey)地图大小的温度的数组。在我的代码中,sizex = 256sizey = 96

我使用以下代码片段进行绘制:

surfc(x);
shading interp;
view([0,0,1]);
hc=colorbar;
set(hc,'position',[0.932 0.3 0.02 0.6]);
caxis([-10 10]);
xlabel('x domain');
ylabel('y domain');
zlabel('temperature');
xlim([0 sizex+2]);
ylim([0 sizey+2]);

我得到了下图:

with margin equal to +2

正如您在脚本中看到的那样,我在sizexsizey添加了“2”以填充白色外边距。

如果我不添加这些值,即:

xlim([0 sizex]);
ylim([0 sizey]);

然后,我得到下图:

without adding 2 to xlim ylim

您可以注意到右侧和上侧的部分解决方案未显示(相当隐藏)。

您还可以看到即使在上面的第一个数字(也适用于第二个数字)(向xlim添加“2”和ylim),它在底部仍然是一个微小的白色边缘,我不知道如何删除它

更准确地说,我希望完全符合带有网格数据维度的绘图尺寸,即温度超过256x96尺寸而没有边距

欢迎任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您定义了sizexsizey错误。我从pastebin复制了您的数据,size(x)收益[258,98]而不是[256,96] 现在您遇到的另一个问题是:您将2D矩阵x提供给surfc。现在命令的作用是将值x(1,1)放在图中(1,1)的位置。如果您不想要这些“白色边框”,则需要将值放在(0,0)位置。您可以通过向X命令提供三个矩阵YZsurfc来实现这一目标。您可以按如下方式生成矩阵:

[X,Y]=meshgrid(0:size(x,2)-1,0:size(x,1)-1);
Z=x;
surfc(X,Y,Z);
% From here on your regular code starts
shading interp;
view([0,0,1]);
hc=colorbar;
set(hc,'position',[0.932 0.3 0.02 0.6]);
caxis([-10 10]);
xlabel('x domain');
ylabel('y domain');
zlabel('temperature');

您现在不需要定义绘图的限制。如果你还需要,请使用:

xlim([0,size(x,2)-1]);
ylim([0,size(x,1)-1]);