Scatter plot in Matlab with x-axis ticks not equidistant -


consider following scatter plot in matlab

a=[1 0 0 0 2 0 0 0 0 0 0 0 1 2 0 0 0 2 1 200 300]'; xrange = 0: max(a);   prob=zeros(size(xrange,2),1); r=1:size(xrange,2) prob(r) = sum(ismember(a,xrange(r)))/size(a,1);  end  scatter(xrange,prob, 'b');   xlim([-2 max(a)+2]) ylim([-0.5 1.5]) 

i want change way scatter looks in order make more clear: idea put following ticks on x-axis

[-0.5 0 1 2 3 301] 

but tricky part should equidistant can zoom on part of scatter plot higher values of prob.

any idea?

one way achieve transform data new scale using interpolation. let's want data values

tickval = [-0.5 0 1 2 3 301]; 

to appear @ graphical positions

tickpos = 0 : 5; 

determine graphical positions data interpolation, , plot transformed data:

xtransformed = interp1(tickval, tickpos, xrange); scatter(xtransformed, prob, 'b');   xlim([min(tickpos), max(tickpos)]) ylim([-0.5 1.5]) 

now have make sure ticks not reflect transformed, original data values:

set(gca, 'xtick', tickpos) set(gca, 'xticklabel', num2cell(tickval)) 

the result looks this:

is want?


Comments

Popular posts from this blog

javascript - gulp-nodemon - nodejs restart after file change - Error: listen EADDRINUSE events.js:85 -

Fatal Python error: Py_Initialize: unable to load the file system codec. ImportError: No module named 'encodings' -

oracle - Changing start date for system jobs related to automatic statistics collections in 11g -