FWIW I can't tell any difference between colors in different backends.
I tried agg, cairo, several interactive backends and ipython inline in
Ubuntu.

Goyo

2014-05-17 6:14 GMT+02:00 Michael Goerz <go...@physik.uni-kassel.de>:
> On Fri, 16 May 2014, Eric Firing wrote:
>> On 2014/05/16 4:41 PM, Michael Goerz wrote:
>> >While playing around for an afternoon with colors in matplotlib, I came
>> >across some inconsistencies. I was trying to define colors in sRGB (my
>> >understanding is that sRGB as a standardized color space is
>> >device-independent). Giving RGB values to matplotlib, I checked the
>> >output with a color picker -- Color Maker from the Mac App Store, set
>> >to the sRGB mode, but the built-in DigitalColor Meter gives the same
>> >result. It turns out that the colors I see in the output are not what I
>> >specified. This makes playing around with colors, a bit difficult:
>> >http://nbviewer.ipython.org/gist/goerz/9aab94f5322d5a457625
>> >As far as I can tell, Matplotlib does not specify in
>> >which color model in interprets RGB values (this should ideally be
>> >stated in the documentation). Also, the output in different backends
>> >(IPython notebook, and interactive GUI) gave different results. As a
>> >minimal example, consider the following:
>> Matplotlib doesn't interpret RGB values; that is left to the display
>> device.  Matplotlib simply writes the RGB values in a file,
>> unmodified, or sends them via a GUI backend to a display, also
>> unmodified *by mpl*.  What you put in, is what it puts out.
>>
>> Thanks for pointing out the DigitalColor Meter--I hadn't noticed it.
>>
>> What I see with your example is that the MacOSX backend *display* is
>> interpreting RGB as sRGB, and the qt4agg backend *display* is
>> interpreting RGB as native values (based on matching with
>> DigitalColor Meter).
>>
>> I haven't tried this with inline plots in the notebook, but mpl is
>> merely feeding RGB values to the browser, just as would occur when
>> displaying a png, and it is up to the browser to decide how to
>> convert them into pixel intensity.
>>
>> I don't see that there is a bug here.
> Fair enough, so that would imply that there is a difference between the
> png streams produced by matplotlib and the "direct" PIL image. I might
> be seeing the problems discussed here: https://hsivonen.fi/png-gamma/
> It might be that the matplotlib png stream is "untagged", whereas the
> PIL image is tagged properly as sRGB. I'd have to decode the base64
> data from the notebook to check this.
>
> Beyond that it seems quite tricky to understands how in a given
> application, or matplotlib backend in this case, a given RGB color
> input yields a specific output on my screen, and how to make this
> consistent (consistency obviously being more important than
> accurateness with respect to some "real" color model). Maybe this just
> goes to show what I realized these last couple of days, that colors are
> a huge can of worms.
>
>
>> >     import pylab
>> >     import numpy as np
>> >     import matplotlib
>> >     #%matplotlib inline
>> >     # draw line with sRGB color 228, 26, 28
>> >     pylab.plot(np.linspace(0,10, 10), np.linspace(0,20,10), linewidth=10,
>> >                color=(0.894, 0.102, 0.110))
>> >     pylab.show()
>> >     # Colorpicker shows 210, 46, 13 in GUI view
>> >     # Colorpicker shows 229, 39, 27 in iPython Notebook
>> >
>> >In the IPython notebook, direct PIL graphics do seem to give the right
>> >colors cf. In [5] in the linked IPython notebook (even though PIL also
>> >does not explicitly specify its color model). Just matplotlib seems
>> >off. Of course, I'm doing some slightly crazy stuff in the Notebook,
>> >displaying every matplotlib output through PIL, but I cecked that
>> >`%matplotlib inline` actually produces the same colors.
>> >
>> >Should I file this on github as a bug report?
>> >
>> >Best,
>> >Michael
>> >
>> >P.S.: please CC for direct replies
>
> ------------------------------------------------------------------------------
> "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
> Instantly run your Selenium tests across 300+ browser/OS combos.
> Get unparalleled scalability from the best Selenium testing platform available
> Simple to use. Nothing to install. Get started now for free."
> http://p.sf.net/sfu/SauceLabs
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users

------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to