Re: [Matplotlib-users] Undefined color model and inconsistencies between backends

2014-05-17 Thread Goyo
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


[Matplotlib-users] Undefined color model and inconsistencies between backends

2014-05-16 Thread Michael Goerz
Hi,

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:

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


Re: [Matplotlib-users] Undefined color model and inconsistencies between backends

2014-05-16 Thread Eric Firing
On 2014/05/16 4:41 PM, Michael Goerz wrote:
 Hi,

 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.

Eric


  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


Re: [Matplotlib-users] Undefined color model and inconsistencies between backends

2014-05-16 Thread Michael Goerz
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