2017-08-07 137 views
1

我得到一个关于曲面的二维图的温度(用颜色表示)的问题。我在这里绘制的解决方案是对称的。Matlab - 修改xlim和ylim以删除surfc的白色边界

array 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

正如你可以在脚本中看到的,我加 “2” sizexsizey填补一个白色的外部边缘。

如果我不添加这些值,也就是这样做的:

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

然后,我得到如下图所示:

without adding 2 to xlim ylim

而且你可以看到,对正确的解决方案部分并且不显示上方(隐藏)。

还可以看到,即使在上述第一图形(如也用于第二图)(与添加“2” xlimylim),它仍然是一个轻微的白边的底部和我不吨知道如何删除它

更精确地,我想,从而精确匹配情节的尺寸与网格数据的尺寸,即具有下于256x96大小无需边距

欢迎任何帮助,谢谢。

+0

您可以上传x中的数据吗? – Max

+0

- @ Max你可以在https:// pastebin上看到数据。com/fTuhm8aH – youpilat13

回答

0

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

[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]); 
+0

谢谢,meshgrid和从0开始的技巧! – youpilat13