piermorel / gramm

Gramm is a complete data visualization toolbox for Matlab. It provides an easy to use and high-level interface to produce publication-quality plots of complex data with varied statistical visualizations. Gramm is inspired by R's ggplot2 library.
MIT License
780 stars 221 forks source link

Matrix plotting with quadratic matrix #95

Open behinger opened 4 years ago

behinger commented 4 years ago

Hi! Great toolbox, I am using it heavily in https://github.com/unfoldtoolbox/unfold.

I right now ran into a problem: I am making use of the automatic matrix expansion for "y" with a vector for "x". But if "y" is quadratic then it does not work correctly. I give a reproducible example here:

a = [0 0 1 1 0 0;
     0 0 2 2 0 0;
     0 0 3 3 0 0;
     0 0 4 4 0 0;
     0 0 5 5 0 0;
     0 0 6 6 0 0;]
 b = 1:6;
 figure
 g = gramm('x',b,'y',a)
 g.geom_line()
 g.draw()

This looks like this: grafik

Removing just a single row, making the matrix 5x6 results in the "correct" (for me expected) behaviour:

 g = gramm('x',b,'y',a(1:5,:))
 g.geom_line()
 g.draw()

grafik

I expected the first plot to look like the second one, just with 6 lines instead of 5. Any way to force the behaviour to the second case?

Thanks a ton for your help!

piermorel commented 4 years ago

Hi @behinger,

Thanks for the feedback. That must be an issue with gramm trying to be clever figuring out how the data is organized in order to "extend" x... which probably fails when the matrix is squared. I'll look into it when I have more time. For now, in your case it's easy to solve in your toolbox by providing an already extended x : g = gramm('x',repmat(b,size(a,1),1),'y',a)