簡體   English   中英

在Matlab中使用bar3時如何設置x和y值?

[英]How to set x and y values when using bar3 in Matlab?

快速版本

如何在Matlab中控制3維條形圖的x和y值?

細節

假設我們有一個10 x 20的數據矩陣,並使用bar3對其進行bar3 ,並且我們想要設置x和y值。 例如:

foodat = rand(10,20);
xVals = [5:14];
yVals = [-3:16];
bar3(xVals, foodat);
xlabel('x'); ylabel('y');

有沒有辦法也向它提供yVal? 否則,y軸始終默認為[1:N]。

注意我不只是想使用XTickLabelYTickLabel更改標簽 我需要更改軸上的實際 ,因為我在同一張圖中繪制了許多東西。 僅更改(錯誤的)軸刻度標記的方式是不夠的。 因此,這不同於以下問題:

如何在MATLAB中調整3-D條形分組和y軸標記?

我嘗試過的其他東西

當我嘗試使用以下方法更改xvals時:

set(gca,'XTick', xVals)
set(gca,'YTick', yVals)

值已被接受,但實際上顯示在錯誤的軸上,因此似乎使用bar3切換了x和y軸。 另外,無論如何都為時已晚,因為條形圖已經使用錯誤的x值和y值進行了繪制,因此我們最終會給空值打勾。

注意已添加

Matlab技術支持剛剛通過電子郵件發送給我,讓我了解了用戶貢獻的功能scatterbar3 ,它以與接受的答案不同的方式實現了我想要的功能:

http://www.mathworks.com/matlabcentral/fileexchange/1420-scatterbar3

我找到了一種方法。 麻煩給您一段代碼,然后您需要“整理”,主要是軸限制和Xticks,因為bar3確實在其中設置了Xticks,因此,如果您想要其他,則需要自己手動設置它們。

因此,這里的技巧是從bar3句柄獲取Xdata。 這里的問題是,似乎數據的每一行都有一個句柄,因此您需要為它們中的每一個進行迭代。 這是當前輸出的代碼:

foodat = rand(20,10);
xVals = [5:14];
yVals = [-3:16];


% The values of Y are OK if called like this.
subplot(121)
bar3(yVals, foodat); 

subplot(122)
h=bar3(yVals, foodat); 
Xdat=get(h,'XData');
axis tight
% Widdth of barplots is 0.8
for ii=1:length(Xdat)
    Xdat{ii}=Xdat{ii}+(min(xVals(:))-1)*ones(size(Xdat{ii}));
    set(h(ii),'XData',Xdat{ii});
end



axis([(min(xVals(:))-0.5) (max(xVals(:))+0.5) min(yVals(:))-0.5, max(yVals(:))+0.5]) 

在此處輸入圖片說明

注意:Y看起來有所不同,但沒有什么不同。

如您所見,X值就是您想要的值。 如果您希望間隔除1以外的其他大小,則需要更改代碼,但您可以猜測可能的大小!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM