# 3 axes plot, and histograms in 2D

Hi,
I recently sent a mail to matplotlib-users regarding the availability of 3 axes plots and histograms in 2/N D and got no feedback.
I understand this may not be a very exciting issue but if anybody has any input there (see below), it would be welcome. Thanks in advance!!

cheers

Eric

···

# ============================================= 3 axes plot

The more I am using matplotlib, the more I like it. But using it more means I more often hit the limits of the code, so I was wondering if there is any plan for a routine to plot data points w.r.t 3 axes (so a perspective scatter plot with x,y,z, data and a viewing angle). Of course another (maybe more difficult) goal would be to be able to draw surfaces, but already a simple scatter plot in 3D would help tremendously there (I realize the concept of "axis" has then to be revised, but well I have no idea how much effort this is).

(if there is no - coming - plan for this, is there any way around it?)

# histograms

I would like to produce histograms in N dimensions, the minimum being in 2D.
Here is an example of what I wish to do:

I have a set of P particles with x and y positions.
I have a rectangular grid, defined by e.g. a sampling in x and a sampling in y, (e.g. samp_x=arange(-15,31,1) ..), and I wish to know how many particles are in each "pixel".

I can do that in many different ways (using searchsorted from numarray, or abruptly using loops, etc) but I am now looking for a simple (fewer lines) and efficient way (as I am treating large sets of particles) to do this so that I would be able to use a function like:

histogram_2D(x,y, samp_x, samp_y) would return a matrix with the number of particles in each corresponding pixel.

and

showhistogram_2D(x,y, samp_x, samp_y) would display it
[using e.g. imshow or matshow]

Any hint there (I realize this is more a numarray question but I thought of first asking your community first since someone may have done it already)? And maybe also of how to generalize this in N dimensions? (for 1D matplotlib has the hist function..)

# Observatoire de Lyon emsellem@...419... 9 av. Charles-Andre tel: +33 4 78 86 83 84 69561 Saint-Genis Laval Cedex fax: +33 4 78 86 83 86 France http://www-obs.univ-lyon1.fr/eric.emsellem

Hi Eric,

We've been talking about doing such things with John over the past few months but with no specific plans at the moment. I think the current fallback is to refer people to using VTK or one of the Python toolsets built on VTK for 3d plotting. Since VTK is such a big package we do understand the need for adding more basic 3d tools to matplotlib (though it naturally raises the question of where to draw the line; we don't want to re-implement VTK or any substantial fraction of it!). This includes surface and scatter plots (though I hadn't considered 2-d histograms--but these are essentially variants of surface plots). I'm not sure what you have in mind for higher dimensionality histograms.

One of the questions to be answered is how we handle 3-d axes and their labeling. I doubt (John may differ on this) that we want to go into fancy 3-d character sets and such, but it may be possible to do simple transforms on fonts to make them look like they lay on the appropriate plane.

···

On Apr 27, 2005, at 2:55 AM, Eric Emsellem wrote:

Hi,
I recently sent a mail to matplotlib-users regarding the availability of 3 axes plots and histograms in 2/N D and got no feedback.
I understand this may not be a very exciting issue but if anybody has any input there (see below), it would be welcome. Thanks in advance!!

cheers

# 3 axes plot

The more I am using matplotlib, the more I like it. But using it more means I more often hit the limits of the code, so I was wondering if there is any plan for a routine to plot data points w.r.t 3 axes (so a perspective scatter plot with x,y,z, data and a viewing angle). Of course another (maybe more difficult) goal would be to be able to draw surfaces, but already a simple scatter plot in 3D would help tremendously there (I realize the concept of "axis" has then to be revised, but well I have no idea how much effort this is).

(if there is no - coming - plan for this, is there any way around it?)

# histograms

I would like to produce histograms in N dimensions, the minimum being in 2D.
Here is an example of what I wish to do:

I have a set of P particles with x and y positions.
I have a rectangular grid, defined by e.g. a sampling in x and a sampling in y, (e.g. samp_x=arange(-15,31,1) ..), and I wish to know how many particles are in each "pixel".

I can do that in many different ways (using searchsorted from numarray, or abruptly using loops, etc) but I am now looking for a simple (fewer lines) and efficient way (as I am treating large sets of particles) to do this so that I would be able to use a function like:

histogram_2D(x,y, samp_x, samp_y) would return a matrix with the number of particles in each corresponding pixel.

and

showhistogram_2D(x,y, samp_x, samp_y) would display it
[using e.g. imshow or matshow]

Any hint there (I realize this is more a numarray question but I thought of first asking your community first since someone may have done it already)? And maybe also of how to generalize this in N dimensions? (for 1D matplotlib has the hist function..)