我得到一个关于温度表面的二维图(用颜色表示)的图。我在这里绘制的解决方案是对称的。
数组x
表示包含(sizex
,sizey
)地图大小的温度的数组。在我的代码中,sizex = 256
和sizey = 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]);
我得到了下图:
正如您在脚本中看到的那样,我在sizex
和sizey
添加了“2”以填充白色外边距。
如果我不添加这些值,即:
xlim([0 sizex]);
ylim([0 sizey]);
然后,我得到下图:
您可以注意到右侧和上侧的部分解决方案未显示(相当隐藏)。
您还可以看到即使在上面的第一个数字(也适用于第二个数字)(向xlim
添加“2”和ylim
),它在底部仍然是一个微小的白色边缘,我不知道如何删除它。
更准确地说,我希望完全符合带有网格数据维度的绘图尺寸,即温度超过256x96
尺寸而没有边距
欢迎任何帮助,谢谢。
答案 0 :(得分:0)
首先,您定义了sizex
和sizey
错误。我从pastebin复制了您的数据,size(x)
收益[258,98]
而不是[256,96]
现在您遇到的另一个问题是:您将2D矩阵x
提供给surfc
。现在命令的作用是将值x(1,1)
放在图中(1,1)
的位置。如果您不想要这些“白色边框”,则需要将值放在(0,0)
位置。您可以通过向X
命令提供三个矩阵Y
,Z
,surfc
来实现这一目标。您可以按如下方式生成矩阵:
[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]);