bar3 Axis labels don't reflect real data

I'm trying to plot Z bars against X and Y with more than a few data points. I would like the x and y axis labels to be the real x and y data. Using the example code below, each x and y bar should correspond to its X and Y axis data - but they don't. Plus, the tables change as I re-size the chart. I'm sure I'm just missing something simple.
Here's what I'm trying to accomplish, as shown in Excel: http://mutant.dnsalias.com/ctrx.pdf
surf() plots the correct axis, but the data points are not really connected in real life, so that plot is not really appropriate.
Here's and example:
format shortg
xAxis = sort(10*rand(20,1));
sprintf('XMin: %5f xMax: %5f', [min(xAxis) max(xAxis)])
yAxis = sort(30*rand(30,1));
sprintf('yMin: %5f yMax: %5f', [min(yAxis) max(yAxis)])
bar3(rand(20,30));
set(gca,'XTickLabel',xAxis)
set(gca,'YTickLabel',yAxis)

Answers (2)

Try scaling the tick marks based on the limits you've defined:
format shortg
xAxis = sort(10*rand(20,1));
sprintf('XMin: %5f xMax: %5f', [min(xAxis) max(xAxis)])
yAxis = sort(30*rand(30,1));
sprintf('yMin: %5f yMax: %5f', [min(yAxis) max(yAxis)])
bar3(rand(20,30));
tick = get(gca,{'XTick','YTick'});
x = linspace(min(xAxis),max(xAxis),length(tick{1}));
y = linspace(min(yAxis),max(yAxis),length(tick{2}));
set(gca,'XTickLabel',x)
set(gca,'YTickLabel',y)

2 Comments

Works better - but is there a way to label with the "exact" values? Take a look at the linked excel chart. That is exactly what I'm trying to accomplish in Matlab.
Thx
Yes, the above isn't really an answer it doesn't let you set the actual x and y values, but only their appearance.

Sign in to comment.

Madison
Madison on 26 Feb 2014
This was really helpful. Thanks!

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Products

Asked:

on 17 Jun 2013

Commented:

on 11 Mar 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!