Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plotting #27

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Plotting #27

wants to merge 2 commits into from

Conversation

volaya
Copy link

@volaya volaya commented Oct 9, 2012

Plotting functionalities for exploratory data analysis

Basically a wrapper of JFreeChart with methods to make it easy to create datasets to be rendered from Geotools objects

@jdeolive
Copy link
Contributor

Hey Victor,

So got a chance to look over this in detail. In general i think its great. I have thought of some ways to reorganize things though and I am interested in what you think.

First thing is a slight reorganization of the plotting functions and modules. What I am thinking is this.

plot.bar.xy
plot.bar.interval
plot.bar.category
plot.regression.linear
plot.regression.power
plot.scatterplot
plot.pie
plot.box

Second would be to try and make inputs to the functions as consistent as possible. Some plotting functions take a list of (x,y) tuples (like bar.xy for example), while others take separate x/y parameters (like scatterplot). I think it would make sense to try and make this as uniform as possible. I personally like just a single input argument, mostly because its easy in python to zip up separate lists into single list of tuples.

And finally would be a reorganization of the functions module. We already have some methods on layer for generating histograms, extrema, etc... I was thinking (and actually goign to post to the geoscript list about this) about creating a separate Stats layer to encapsulate all this, moving those existing function from Layer to Stats. This is what i had in mind:

l = Shapefile(...)
s = l.stats()
s.summary()
s.histogram()
...

Stats could be created with an implicit filter as well.

s = l.stats('MALE_POP > FEMALE_POP)'

Then every function to stats woudl take that into accoutn without having to explicitly supply a filter. However we could allow for an explicit filter that would be joined with the implicit one (via AND). So something like:

s = l.stats('MALE_POP > FEMALE_POP')
s.summary('MALE_POP > 0.5')

What do you think?

@volaya
Copy link
Author

volaya commented Oct 17, 2012

It all sounds good to me.

The different ways of input were just to make it easier to adapt to outputs from functions, but I guess it is better to work on that a bit more and have something more homogeneous.

And I clearly support moving stats out of layer classes, It makes much more sense IMHO, plus those functions can be used for other types of data, so you can pass a raster layer instead of a vector one, or any other think that can be used to get a histogram (or whatever statistical function it is)

Should I start working on that? It doesn't look to me like a lot of work, all changes should be easy to make

@jdeolive
Copy link
Contributor

Cool. I actually started playing around with the merge and some of these ideas on a separate branch if it makes sense to start from there. What i currently have is here:

https://github.com/jdeolive/geoscript-py/tree/plots

If you wanted to pick it up from there that would be great.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants