[Matplotlib-users] weird behaviour in ScalarMappable with ListedColormap

2013-05-03 Thread Yasin Selçuk Berber
Hi.

i am using ListedColormap with ScalarMappable, to map data ranges, without
using a norm. But i dont know if what i am doing is a good thing or not.

Here's the snippet:
--
from matplotlib import pyplot as plt
from matplotlib import colors, cm

cl = [#8080FF, #purple
  #40C0FF, #blue
  #00, #cyan
  #00FF00, #green
  #00, #yellow
  #FF8000, #orange
  #FF] #red

cmap = colors.ListedColormap(cl)


data = np.array([np.arange(0, 5, 10, 15, 20, 25, 30, 35, 40, 45)])

sm = cm.ScalarMappable(cmap=cmap)
sm.set_clim(vmin=5, vmax=40)  #7 colors, max-min=35

rgba = sm.to_rgba(data, bytes=True)


plt.imshow(rgba, interpolation=nearest)
plt.show()
--

this produces output (first letters of color list):
p, p, b, c, g, y, o, r, r, r
as i intend.
5=val10 -- purple,
10=val15 -- blue
15=val20 --cyan
etc

BUT, when the color list is much longer than here, where each specific
color corresponds to some data range, somehow, sometimes the above doesn't
work as expected.
for example, 15=val20 -- should be cyan. but in lists with much more
color numbers, value=15 sometimes produces blue. by trial  error, i saw
only when an epsilon is added to 15, say 15.01, data color becomes cyan.

i reckon this has something to do with color number. when the number of
colors in ListedColormap is not an integer power of 2 (8, 16, 32, 64..etc)
the normalization in set_clim divides 0-1 into sections, which are not
exactly representable in machine float, if the color number is, say, 12,
17, 20..etc. so this small differences in color-change-limits result this
behaviour. so adding one extra dummy color can solve this, as it completes
color number to 8 (2^3 colors).

is this the case or is my guess is completely wrong ?

secondly, i also would like to know the logic behind how matplotlib
corresponds/maps values in whole range like i use above, with colors in
color list. i digged the source but no success. say 4 colors in list and
set_clim(vmin=2, vmax=4).

this yields for values:
below 2 -color1
2-(2.5) -color1
2.5-(3) -color2
3-(3.5) -color3
3.5 and above -color4. but how ?

thanks.


-- 
Yasin
Bismillah, her hayrın başıdır.
--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] wxPython Phoenix - backend_wxagg

2013-05-03 Thread Michael Droettboom

Would you mind submitting this as a pull request?

Mike

On 04/27/2013 06:23 PM, Werner F. Bruhin wrote:

Hi Michael,

On 26/04/2013 14:40, Michael Droettboom wrote:

On 04/26/2013 02:57 AM, Werner F. Bruhin wrote:

Hi,

Anyone can provide some info on what agg.buffer_rgba returns and 
maybe

even some suggestion on how to resolve this issue in the wxagg backend.

It returns a Python buffer object on Python 2, though on Python 3 it is
a memoryview, since buffer was deprecated.  Perhaps wx is also doing
something different depending on the version of Python.
As of Phoenix 2.9.5.81-r73873 matplot works with Phoenix, here is 
Robin Dunn's comment to the change he did on Phoenix with regards to 
the buffer handling.


Quote

The new buffer APIs go as far back as 2.6, IIRC, and the memoryview 
and bytearray object types are available in 2.7 in addition to 3.x and 
that I what I'm using in Phoenix.  I would have expected MPL to do so 
also since numpy is an integral part of MPL and the new buffer 
interface was basically designed for and by numpy...


Anyway, while double checking all this I realized that it would not be 
hard for me to accept old or new buffer objects for source buffers 
(I'll still use memoryviews or bytearrays when on the producer side of 
things) so try again after the next snapshot build.  My unittests with 
array.arrrays started working after the change so I expect that MPL's 
rgba buffer should work too.


EndQuote

Enclosed is the patch for backend_wx.py and for embedding_in_wx5.py 
which I used for testing, in the later I use wxversion.select to force 
selection of a particular version - I think the distribution should 
still just use ensureMinimal.


FYI, documentation for wxPython Phoenix are here:
http://wxpython.org/Phoenix/docs/html/index.html

And snapshots can be found here:
http://wxpython.org/Phoenix/snapshot-builds/

I tested only on Python 2.7.2 on Windows 7.

Werner


--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr


___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] wxPython Phoenix - backend_wxagg

2013-05-03 Thread Michael Droettboom
FWIW: Matplotlib uses the older buffer interface because that is what 
the older version of wx used (as well as other GUI toolkits).  It would 
be nice to move to the new memoryview objects, but all of the GUI 
frameworks will need to move in tandem...


Mike

On 04/27/2013 06:23 PM, Werner F. Bruhin wrote:

Hi Michael,

On 26/04/2013 14:40, Michael Droettboom wrote:

On 04/26/2013 02:57 AM, Werner F. Bruhin wrote:

Hi,

Anyone can provide some info on what agg.buffer_rgba returns and 
maybe

even some suggestion on how to resolve this issue in the wxagg backend.

It returns a Python buffer object on Python 2, though on Python 3 it is
a memoryview, since buffer was deprecated.  Perhaps wx is also doing
something different depending on the version of Python.
As of Phoenix 2.9.5.81-r73873 matplot works with Phoenix, here is 
Robin Dunn's comment to the change he did on Phoenix with regards to 
the buffer handling.


Quote

The new buffer APIs go as far back as 2.6, IIRC, and the memoryview 
and bytearray object types are available in 2.7 in addition to 3.x and 
that I what I'm using in Phoenix.  I would have expected MPL to do so 
also since numpy is an integral part of MPL and the new buffer 
interface was basically designed for and by numpy...


Anyway, while double checking all this I realized that it would not be 
hard for me to accept old or new buffer objects for source buffers 
(I'll still use memoryviews or bytearrays when on the producer side of 
things) so try again after the next snapshot build.  My unittests with 
array.arrrays started working after the change so I expect that MPL's 
rgba buffer should work too.


EndQuote

Enclosed is the patch for backend_wx.py and for embedding_in_wx5.py 
which I used for testing, in the later I use wxversion.select to force 
selection of a particular version - I think the distribution should 
still just use ensureMinimal.


FYI, documentation for wxPython Phoenix are here:
http://wxpython.org/Phoenix/docs/html/index.html

And snapshots can be found here:
http://wxpython.org/Phoenix/snapshot-builds/

I tested only on Python 2.7.2 on Windows 7.

Werner


--
Try New Relic Now  We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app,  servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr


___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Problems with sans-serif fonts and tick labels with TeX

2013-05-03 Thread Michael Droettboom

On 05/02/2013 03:16 PM, Paul Hobson wrote:


On Thu, May 2, 2013 at 11:19 AM, Michael Droettboom md...@stsci.edu 
mailto:md...@stsci.edu wrote:


I think the confusion here stems from the fact that you're mixing
TeX and non-TeX font commands.

This turns on TeX mode, so all of the text is rendered with an
external TeX installation:

rc('text', usetex=True)

In this line, setting it to sans-serif will get passed along to
TeX, but a specific ttf font name can not be used by TeX, so the
second part (involving Helvetica) is ignored.  And setting the
default body text in TeX does not (by default) change the math
font.  This is (unfortunately standard TeX behavior).

rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})

This affects the font set used by matplotlib's internal mathtext
renderer, and has no effect on TeX:

rc('mathtext', fontset='stixsans')

The solution I use when I want all sans-serif out of TeX is to use
the cmbright package, which can be turned on by adding:

rc('text.latex', preamble=r'\usepackage{cmbright}')

That may require installing the cmbright LaTeX package if you
don't already have it.

I know all this stuff is confusing, but providing a flat interface
over both the internal text rendering and the TeX rendering isn't
really possible -- they have different views of the world -- and
I'm actually not sure it's desirable.  Though I wonder if we
couldn't make it more obvious (somehow) when the user is mixing
configuration that applies to the different contexts.

Mike


Mike,

Thanks for the guidance. I know this stuff is complicated and the work 
everyone has put into it to make it work is fantastic.


I now see that this was more of TeX issue than an MPL configuration 
issue. Your help prompted me to find this solution (similar to yours):

mpl.rcParams['text.latex.preamble'] = [
   r'\usepackage{siunitx}',   # i need upright \micro symbols, but 
you need...
   r'\sisetup{detect-all}',   # ...this to force siunitx to 
actually use your fonts

   r'\usepackage{helvet}',# set the normal font here
   r'\usepackage{sansmath}',  # load up the sansmath so that math 
- helvet

   r'\sansmath']  # - tricky! -- gotta actually tell tex to use!


Wow.  That's some serious TeX voodoo magic!  Want to work that into an 
example that we could include in the docs?


Cheers,
Mike
--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] wxPython Phoenix - backend_wxagg

2013-05-03 Thread Werner F. Bruhin

Mike,

On 03/05/2013 15:14, Michael Droettboom wrote:
FWIW: Matplotlib uses the older buffer interface because that is what 
the older version of wx used (as well as other GUI toolkits).  It 
would be nice to move to the new memoryview objects, but all of the 
GUI frameworks will need to move in tandem...
agg.bufferNEW_rgba or something along those lines and then GUI 
frameworks could move when they want/can, or would that create to big of 
an overhead on MPL side.


Werner
--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Problems with sans-serif fonts and tick labels with TeX

2013-05-03 Thread Juergen Hasch

 The solution I use when I want all sans-serif out of TeX is to use the 
 cmbright package, which can be turned on by adding:

 rc('text.latex', preamble=r'\usepackage{cmbright}')

 That may require installing the cmbright LaTeX package if you don't already 
 have it.

I am using the sfmath package for this purpose.

There is a nice comparision of the different approaches to get sans-serif math 
fonts at the bottom of the sfmath page: 
http://dtrx.de/od/tex/sfmath.html



--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Problems with sans-serif fonts and tick labels with TeX

2013-05-03 Thread Paul Hobson
On Fri, May 3, 2013 at 6:17 AM, Michael Droettboom md...@stsci.edu wrote:

  On 05/02/2013 03:16 PM, Paul Hobson wrote

  I now see that this was more of TeX issue than an MPL configuration
 issue. Your help prompted me to find this solution (similar to yours):
 mpl.rcParams['text.latex.preamble'] = [
r'\usepackage{siunitx}',   # i need upright \micro symbols, but you
 need...
r'\sisetup{detect-all}',   # ...this to force siunitx to actually
 use your fonts
r'\usepackage{helvet}',# set the normal font here
r'\usepackage{sansmath}',  # load up the sansmath so that math -
 helvet
r'\sansmath']  # - tricky! -- gotta actually tell tex to use!


 Wow.  That's some serious TeX voodoo magic!  Want to work that into an
 example that we could include in the docs?

 Cheers,
 Mike


Gladly. I'll try to find time to cook up PR building off of the existing
example over the weekend.
-paul
--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Problems with sans-serif fonts and tick labels with TeX

2013-05-03 Thread Felix Patzelt
H, I'm using sfmath, too. I actually wrote a helper function to switch fonts. 
The preambles are the result of long-term trial and error. Normally, my 
preambles include some more custom commands which I left out here because they 
would be distracting. I always wondered why matplotlib doesn't do this kind of 
font switching out of the box.

def setfont(font=font_default,unicode=True):
r
Set Matplotlibs rcParams to use LaTeX for font rendering.
Revert all changes by calling rcdefault() from matplotlib.

Parameters:
---
font: string
Helvetica
Times
Computer Modern

usetex: Boolean
Use unicode. Default: False.


# Use TeX for all figure text!
plt.rc('text', usetex=True)

font = font.lower().replace( ,)
if font == 'times':
# Times
font = {'family':'serif', 'serif':['Times']}
preamble  = r
   \usepackage{color}
   \usepackage{mathptmx}

elif font == 'helvetica':
# Helvetica
# set serif, too. Otherwise setting to times and then
# Helvetica causes an error.
font = {'family':'sans-serif','sans-serif':['Helvetica'],
'serif':['cm10']}
preamble  = r
   \usepackage{color}
   \usepackage[tx]{sfmath}
   \usepackage{helvet}

else:
# Computer modern serif
font = {'family':'serif', 'serif':['cm10']}
preamble  = r
   \usepackage{color}


if unicode:
# Unicode for Tex
#preamble =  r\usepackage[utf8]{inputenc} + preamble
# inputenc should be set automatically
plt.rcParams['text.latex.unicode']=True

#print font, preamble
plt.rc('font',**font)
plt.rcParams['text.latex.preamble'] = preamble


Am 03.05.2013 um 16:08 schrieb Juergen Hasch pyt...@elbonia.de:

 
 The solution I use when I want all sans-serif out of TeX is to use the 
 cmbright package, which can be turned on by adding:
 
 rc('text.latex', preamble=r'\usepackage{cmbright}')
 
 That may require installing the cmbright LaTeX package if you don't already 
 have it.
 
 I am using the sfmath package for this purpose.
 
 There is a nice comparision of the different approaches to get sans-serif 
 math fonts at the bottom of the sfmath page: 
 http://dtrx.de/od/tex/sfmath.html
 
 
 
 --
 Get 100% visibility into Java/.NET code with AppDynamics Lite
 It's a free troubleshooting tool designed for production
 Get down to code-level detail for bottlenecks, with 2% overhead.
 Download for free and get started troubleshooting in minutes.
 http://p.sf.net/sfu/appdyn_d2d_ap2
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users


--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] How to make matplotlib use my own libpng over the systemwide

2013-05-03 Thread Ondřej Čertík
Hi,

As part of building matplotlib for the one python based distribution [1],
I want to always link against our own version of libpng, even if there
is some other systemwide version available. I am on linux (Ubuntu).

Currently, here is what I am doing:

CFLAGS=-I$PNG/include -I$FREETYPE/include
-I$FREETYPE/include/freetype2 LDFLAGS=-L$FREETYPE/lib -L$PNG/lib
-Wl,-rpath=$PNG/lib $PYTHON/bin/python setup.py build
$PYTHON/bin/python setup.py install

Where $PNG and $FREETYPE points to our own versions. On a computer
with no systemwide version of png, this works great. Question:

1) If I don't specify the -rpath option, then libpng.so will fail to
be found at runtime. Is there any other recommended way to go around
this? I don't want to use LD_LIBRARY_PATH.

On a computer with systemwide version available, unfortunately the
systemwide version gets picked up instead. I think it's because of
this:

pkg-config --libs --cflags libpng
-I/usr/include/libpng12  -lpng12

so matplotlib simply calls this (right?) and uses the systemwide
version. Question:

2) How do I force matplotlib to use my own version instead?


I would highly appreciate any input, especially on 2). We have our own
issue open for this at [2] if you are interested for the background.
The merged mpl PR [3] is a little related, but doesn't answer my
questions.

Thanks,
Ondrej


[1] https://github.com/hashdist/python-hpcmp2/

[2] https://github.com/hashdist/python-hpcmp2/issues/53

[3] https://github.com/matplotlib/matplotlib/pull/1884

--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] How to make matplotlib use my own libpng over the systemwide

2013-05-03 Thread Ondřej Čertík
On Fri, May 3, 2013 at 12:41 PM, Ondřej Čertík ondrej.cer...@gmail.com wrote:
 Hi,

 As part of building matplotlib for the one python based distribution [1],

I meant to say for one python distribution, not the one...

Ondrej

--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with 2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users