Re: [Matplotlib-users] Undefined color model and inconsistencies between backends
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
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
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
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