2017-08-07 144 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