Plot or Not: voting to create better matplotlibrc

Hi,

Definitely don’t link from matplotlib. This was a fun hack put together to get people talking about re-styling – success!

I have to echo Chris’ disappointment about the discussion of defaults in MPL. While there are certainly many subjective elements of style and design, there are also a number of rules that the default settings violate (as Chris mentions below). The way I interpret the push-back to replacing the defaults is: “there are too many better alternatives that we will never agree upon, so let’s just keep what’s there.” To 0th order, just pick one! Fixing the few things that Chris mentions below will go a long way to modernizing the MPL feel and experience. There many other things I would like to change about the defaults, but maybe the right thing to do is just issue a pull request so we can discuss on there?

···

As a longer term idea, I propose:

  • normalize what can and can’t be modified with an rc file – right now, it’s kind of all over the place

then:

  • each plot in the matplotlib gallery should have a drop-down menu with ~3-5 style options

  • these options can be named or whatever, but should be complete matplotlibrc files that can either be a) shipped with matplotlib, or b) very easily downloaded and installed (think: matplotlib.rc_install(‘name-of-style’))

  • on each gallery entry page, selecting an option from the drop-down should show the same plot made with the specified rc style

I’m happy to help implement this stuff, but I think this would be a tremendous resource to the community.

And if you decide to reject everything from this email, please at least change the default colormap :slight_smile: #downwithJet

  • Adrian

From: Chris Beaumont <beaumont@…229…>

Date: Sat, Jul 20, 2013 at 5:47 PM
Subject: Re: Plot or Not: voting to create better matplotlibrc
To: matplotlib-devel@lists.sourceforge.net

Hi,

I thought I’d chime in on this discussion – Adrian Price-Whelan and I put together plotornot during the SciPy sprints.

I wouldn’t advocate for linking to plotornot from matplotlib – the idea is semi tongue-in-cheek, and meant to gauge to what extent there is consensus about plot styles. It’s not set up to teach about rcParams, nor does it systematically explore all possible styles. The votes (>10K, last I checked) are saved, and eventually Adrian or I will look over the feedback and report back to you all. I haven’t had time for that yet. I hope the name didn’t actually offend anyone.

At the risk of sounding unappreciative of MPL (which I love, and rely upon daily), I must admit I was disheartened after hearing the MPL devs at SciPy discuss styles and defaults. I understand that you don’t want to change the default styles without a clearly better alternative. I also understand that, to some extent, style preferences are subjective. However, there seemed to be quite a bit of resistance to the idea that MPL defaults should change at all.

Even if you ignore the subjective component of this (which I think is a mistake, since in my experience there is broad consensus that projects like ggplot2, d3, tableau, and spotfire do a “better” job than MPL at styling), there are some well-established visual principles that matplotlib violates. Some of my biggest pet peeves are:

  1. The default ‘axes.color_cycle’ values should be equally visible, with similar luminance values. The current defaults (bgrcmyk) do not have this property – c and y are harder to see, and thus carry less visual emphasis. A color table like the “Dark2” color brewer table (http://learnr.files.wordpress.com/2009/04/colours-dark2.png, colorbrewer2.org) is more uniform, and carefully designed for visibility and contrast. ‘rgbcmyk’ is clearly an arbitrary choice – why not use a smarter default?
  1. The default ‘jet’ colormap for images has a lot of poor properties (which is even mentioned on the MPL docs at http://matplotlib.org/api/pyplot_summary.html#id1). The brain is bad at ordering changes in hue (which is bigger – purple or yellow?), and better at ordering changes in intensity or saturation. A colleague of mine designed a visualization tool for doctors, and found that the rainbow color table had a dramatic negative effect on the effectiveness of the tool (you can watch her TED talk about this at https://www.youtube.com/watch?v=kU7veyGGps4&t=440s). The jet default is especially frustrating, since it cannot be modified via rcParams
  1. Some of the defaults violate Tufte principles like minimizing “chart junk.” For example, the ‘stepfilled’ mode for hist is probably better than the default, which draws vertical lines between every bin. Those lines make the histogram noisier – do they convey any extra information? Again, this can’t be tweaked via rcParams.

Sorry for being long-winded – I just want to make the case that this is an important (and not entirely subjective) issue. If nothing else, it would be great to see some clear statement about where the MPL devs stand on this issue – what criteria must be met to consider a change to the defaults? My apologies if such a document already exists somewhere!

Cheers,

Chris Beaumont


Chris Beaumont
Graduate Student
Institute for Astronomy
University of Hawaii at Manoa

2680 Woodlawn Drive
Honolulu, HI 96822

www.ifa.hawaii.edu/~beaumont



Adrian M. Price-Whelan ~ Columbia University ~ http://adrian.pw

On Sat, Jul 20, 2013 at 3:03 PM, matplotlib-devel-request@lists.sourceforge.net wrote:

Send Matplotlib-devel mailing list submissions to

    matplotlib-devel@lists.sourceforge.net

To subscribe or unsubscribe via the World Wide Web, visit

    [https://lists.sourceforge.net/lists/listinfo/matplotlib-devel](https://lists.sourceforge.net/lists/listinfo/matplotlib-devel)

or, via email, send a message with subject or body ‘help’ to

    matplotlib-devel-request@lists.sourceforge.net

You can reach the person managing the list at

    matplotlib-devel-owner@lists.sourceforge.net

When replying, please edit your Subject line so it is more specific

than “Re: Contents of Matplotlib-devel digest…”

Today’s Topics:

  1. Re: Plot or Not: voting to create better matplotlibrc

    (Eric Firing)

  2. Re: How to use STIX fonts in matplotlib plots? (Eric Firing)

  3. Re: Plot or Not: voting to create better matplotlibrc

    (Benjamin Root)

  4. Re: How to use STIX fonts in matplotlib plots? (Benjamin Root)


Message: 1

Date: Sat, 20 Jul 2013 08:20:11 -1000

From: Eric Firing <efiring@…229…>

Subject: Re: [matplotlib-devel] Plot or Not: voting to create better

    matplotlibrc

To: matplotlib-devel@lists.sourceforge.net

Message-ID: <51EAD4DB.5040906@…229…>

Content-Type: text/plain; charset=ISO-8859-1; format=flowed

On 2013/07/20 4:18 AM, David P. Sanders wrote:

Hi,

Probably many of you know about “Plot or Not”, a site where we vote on

the same plot presented in different ways, to get feedback about better

matplotlibrc params:

http://warm-escarpment-9042.herokuapp.com/

It seems to me an absolutely fantastic idea! I think many people do not

realise how fantastic the plots can look with some of this modern

styling. (Styling was mentioned several times at SciPy.)

Would it be possible to put a link to this site on the matplotlib web

page and encourage people to use it?

David,

Interesting, but I’m not sure this is a good approach. I really don’t

see the point of the voting. What I think would be more useful would be

a set of matplotlibrc files with examples of their effect on at least a

few plot types.

Definitely time to update the defaults!!

Or maybe include a representative set of rcParams combinations to make

it easier for people to choose a design that suits their purpose. This

could be part of a toolkit.

Eric

Best wishes,

David.

Dr. David P. Sanders

Profesor Titular “A” / Associate Professor

Departamento de F?sica, Facultad de Ciencias

Universidad Nacional Aut?noma de M?xico (UNAM)

dpsanders@…272…1147… mailto:dpsanders@...1147...

http://sistemas.fciencias.unam.mx/~dsanders

<http://sistemas.fciencias.unam.mx/%7Edsanders>

Cub?culo / office: #414, 4o. piso del Depto. de F?sica

Tel.: +52 55 5622 4965


See everything from the browser to the database with AppDynamics

Get end-to-end visibility with application monitoring from AppDynamics

Isolate bottlenecks and diagnose root cause in seconds.

Start your free trial of AppDynamics Pro today!

http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk


Matplotlib-devel mailing list

Matplotlib-devel@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Message: 2

Date: Sat, 20 Jul 2013 08:55:37 -1000

From: Eric Firing <efiring@…229…>

Subject: Re: [matplotlib-devel] How to use STIX fonts in matplotlib

    plots?

To: matplotlib-devel@lists.sourceforge.net

Message-ID: <51EADD29.6080601@…229…>

Content-Type: text/plain; charset=ISO-8859-1; format=flowed

On 2013/07/20 4:41 AM, David P. Sanders wrote:

I find the default font used in matplotlib horrible. We should be able

to do much better these days.

Which font is being used as default on your installation? And what are

the characteristics that earn the rating of “horrible”?

Eric


Message: 3

Date: Sat, 20 Jul 2013 14:58:12 -0400

From: Benjamin Root <ben.root@…553…>

Subject: Re: [matplotlib-devel] Plot or Not: voting to create better

    matplotlibrc

To: Eric Firing <efiring@…229…>

Cc: matplotlib development list

    <matplotlib-devel@lists.sourceforge.net>

Message-ID:

    <CANNq6F=pdWohTRYLqEkG3oy6VoWYJ=c4Qob7vJ5q-SrE7tcrqA@...1150......>

Content-Type: text/plain; charset=“iso-8859-1”

From discussions with others at SciPy, we found ourselves disagreeing on

what default we would want. We also weren’t sure exactly which params were

the ones that people tended to change. We have zero data on this. This site

is intended to help start that data collection process.

We can certainly improve this site to collect other kinds of info, but this

is just a start. One could also view this as a launching point for teaching

how to use rcParams (sorry David, i kinda like that name) in mpl. You all

know I never let a good teaching moment go to waste!

As for linking from matplotlib.org, I am ambivalent. It is a bit gimmicky,

and I do worry about being counterproductive to efforts in SciPy to be more

inclusive of women (given the rather anti-feministic undertones of the site

we are parodying). Of course, that could just be me being overly cautious.

Cheers!

Ben Root

On Jul 20, 2013 2:20 PM, “Eric Firing” <efiring@…229…> wrote:

On 2013/07/20 4:18 AM, David P. Sanders wrote:

Hi,

Probably many of you know about “Plot or Not”, a site where we vote on

the same plot presented in different ways, to get feedback about better

matplotlibrc params:

http://warm-escarpment-9042.herokuapp.com/

It seems to me an absolutely fantastic idea! I think many people do not

realise how fantastic the plots can look with some of this modern

styling. (Styling was mentioned several times at SciPy.)

Would it be possible to put a link to this site on the matplotlib web

page and encourage people to use it?

David,

Interesting, but I’m not sure this is a good approach. I really don’t

see the point of the voting. What I think would be more useful would be

a set of matplotlibrc files with examples of their effect on at least a

few plot types.

Definitely time to update the defaults!!

Or maybe include a representative set of rcParams combinations to make

it easier for people to choose a design that suits their purpose. This

could be part of a toolkit.

Eric

Best wishes,

David.

Dr. David P. Sanders

Profesor Titular “A” / Associate Professor

Departamento de F?sica, Facultad de Ciencias

Universidad Nacional Aut?noma de M?xico (UNAM)

dpsanders@…1147… mailto:dpsanders@...1147...

http://sistemas.fciencias.unam.mx/~dsanders

<http://sistemas.fciencias.unam.mx/%7Edsanders>

Cub?culo / office: #414, 4o. piso del Depto. de F?sica

Tel.: +52 55 5622 4965


See everything from the browser to the database with AppDynamics

Get end-to-end visibility with application monitoring from AppDynamics

Isolate bottlenecks and diagnose root cause in seconds.

Start your free trial of AppDynamics Pro today!

http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk


Matplotlib-devel mailing list

Matplotlib-devel@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


See everything from the browser to the database with AppDynamics

Get end-to-end visibility with application monitoring from AppDynamics

Isolate bottlenecks and diagnose root cause in seconds.

Start your free trial of AppDynamics Pro today!

http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk


Matplotlib-devel mailing list

Matplotlib-devel@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

-------------- next part --------------

An HTML attachment was scrubbed…


Message: 4

Date: Sat, 20 Jul 2013 15:03:20 -0400

From: Benjamin Root <ben.root@…553…>

Subject: Re: [matplotlib-devel] How to use STIX fonts in matplotlib

    plots?

To: “David P. Sanders” <dpsanders@…1147…>

Cc: matplotlib development list

    <matplotlib-devel@lists.sourceforge.net>

Message-ID:

    <CANNq6Fm0Oz=3ukXYH4yFA0qbHi2j7-sjdhkCzyrkU-4ELRdyow@...150...>

Content-Type: text/plain; charset=“iso-8859-1”

David,

IIRC, we were just starting to investigate how to produce retina graphics.

Perhaps you might be able to help Mike D and Michael de Hoon with there

efforts because very few of us have retina displays.

Cheers!

Ben Root

On Jul 20, 2013 10:43 AM, “David P. Sanders” <dpsanders@…1147…>

wrote:

I find the default font used in matplotlib horrible. We should be able to

do much better these days.

One very interesting option, at least for standard (paper) publishing, is

the STIX fonts, which is a Times-like font set promoted by several

publishers.

There are various options in matplotlib, such as

matplotlib.rcParams[“mathtext.fontset”], which allow the option “stix”,

but I have not been able to get it to work. Can anybody please help me with

this – what is required?

I have the STIX otf or ttf installed on my Mac, but I don’t seem to manage

to get the LaTeX versions installed – installing LaTeX fonts is so

disgusting (is there some helper script for that?).

Thanks and best wishes,

David.

Dr. David P. Sanders

Profesor Titular “A” / Associate Professor

Departamento de F?sica, Facultad de Ciencias

Universidad Nacional Aut?noma de M?xico (UNAM)

dpsanders@…272…1147…

http://sistemas.fciencias.unam.mx/~dsanders

Cub?culo / office: #414, 4o. piso del Depto. de F?sica

Tel.: +52 55 5622 4965


See everything from the browser to the database with AppDynamics

Get end-to-end visibility with application monitoring from AppDynamics

Isolate bottlenecks and diagnose root cause in seconds.

Start your free trial of AppDynamics Pro today!

http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk


Matplotlib-devel mailing list

Matplotlib-devel@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

-------------- next part --------------

An HTML attachment was scrubbed…



See everything from the browser to the database with AppDynamics

Get end-to-end visibility with application monitoring from AppDynamics

Isolate bottlenecks and diagnose root cause in seconds.

Start your free trial of AppDynamics Pro today!

http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk



Matplotlib-devel mailing list

Matplotlib-devel@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

End of Matplotlib-devel Digest, Vol 86, Issue 17



Chris Beaumont
Graduate Student

Institute for Astronomy

University of Hawaii at Manoa
2680 Woodlawn Drive

Honolulu, HI 96822
www.ifa.hawaii.edu/~beaumont