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

后端 未结 1 489
余生分开走
余生分开走 2020-12-02 01:54

Quick version

How can I control the x- and y-values for a 3-d bar plot in Matlab?

Details

Say we have an 10 x 20 da

相关标签:
1条回答
  • 2020-12-02 02:36

    I found a way of doing it. Ill give you a piece of code, then you'll need to "tidy up" , mainly the axis limits and the Xticks, as bar3 does set up the Xticks inside, so if you want others you'll need to set them manually yourself.

    So the trick here is to get the Xdata from the bar3 handle. The thing here is that it seems that there is a handle for each row of the data, so you need to iterate for each of them. Here is the code with the current output:

    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]) 
    

    enter image description here

    Note: Y looks different but is not.

    As you can see now the X values are the ones you wanted. If you'd want other size than 1 for the intervals between them you'd need to change the code, but you can guess how probably!

    0 讨论(0)
提交回复
热议问题