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

Declarative support for choropleth breakpoints #57

Open
brylie opened this issue Dec 4, 2012 · 8 comments
Open

Declarative support for choropleth breakpoints #57

brylie opened this issue Dec 4, 2012 · 8 comments

Comments

@brylie
Copy link

brylie commented Dec 4, 2012

User story

As a cartogrpher
I would like to color my maps using different statistical methods
so that I can explore and show natural patterns in data
As  visualization developer
I would like to declare breakpoints for choropleth colors
so that I can minimise the amount of procedural code required to color a map

Feature request

It would be helpful to have a choice of Jenks Natural Breaks for the classification algorithm.
http://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization

References

Here is a JS implementation of the algorithm:
https://github.com/vvoovv/djeo-jenks

Here is a PHP implementation of the algorithm:
https://github.com/randomdrake/jenks

@manifestinteractive
Copy link
Contributor

Closing due to age of ticket without resolution.

@brylie
Copy link
Author

brylie commented Oct 26, 2015

@manifestinteractive it is a feature request. It might take several releases before the project is ready for the feature. Please re-open.

@manifestinteractive
Copy link
Contributor

Reopening, with the acknowledgement that I personally will not be taking this ticket on, so if anyone wants to contribute to this with a PR, I am sure @brylie would be grateful.

@manifestinteractive
Copy link
Contributor

@brylie Can you explain how you intended this to be used ? I see you are referring to a "classification algorithm" but I do not know where you are intending for it to be used. Are you wanting to use this for the normalizeFunction? Or do you have other thoughts?

I would love to get this figured out for you if you could help clarify where you want this used.

@brylie
Copy link
Author

brylie commented Dec 7, 2015

When designing a choropleth map, a cartographer can choose one of several classification methods. Different classification methods tend to cause different patterns to stand out in the map data.

The selection of a classification algorithm is typically declarative, i.e. the cartographer simply chooses one from a pre-defined list. This may be possible from the normalizeFunction property, but may be better suited to a different property, such as classifier. The two approaches may be complementary, and would allow new classification methods to be added to the project, as well as allowing the design of ad-hoc classifiers.

@manifestinteractive
Copy link
Contributor

After doing some research, I found someone was using jenks with jqvmap already on this website ( without any changes to our project ).

http://robertorocha.info/making-an-interactive-choropleth-map-with-jqvmap-and-geostats/

Can you confirm if this is what you were talking about, and if so, whether that implementation works for you ?

@brylie
Copy link
Author

brylie commented Dec 15, 2015

Yes, this is a great example. :-)

Color assignment could be done in a declarative way, e.g. if JQVmap automatically assigned colors to a 'breaks' array. I.e. the following code might be rendered unnecessary:

var colors = {};
for (var country in data) {
   if (data[country] > 0) {             
      for (var i = 0; i <= 4; i++)  {
          if (data[country] >= (jenks[i]) && data[country] <= (jenks[i + 1])) {
              colors[country] = hexes[i]
          }
       }
   }  else { colors[country] = '#A8A8A8' }; 
};

@brylie brylie changed the title Jenks natural breaks Declarative support for choropleth breakpoints Dec 15, 2015
@brylie
Copy link
Author

brylie commented Dec 15, 2015

This issue seems more general than 'supporting Jenks', so I have renamed it. The idea is to support declarative mapping between arbitrary breakpoints and a set of colors (or color gradient).

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

No branches or pull requests

2 participants