[英]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]。
注意我不只是想使用XTickLabel
和YTickLabel
更改標簽 。 我需要更改軸上的實際值 ,因為我在同一張圖中繪制了許多東西。 僅更改(錯誤的)軸刻度標記的方式是不夠的。 因此,這不同於以下問題:
我嘗試過的其他東西
當我嘗試使用以下方法更改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.