Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-08 Thread Jae-Joon Lee
What can be done with the current Matplotlib is to use the offset boxes.
Here is a modified version of a code snippet from

 
http://abitofpythonabitofastronomy.blogspot.com/2009/05/mpl-multicolor-text.html

Regards,

-JJ


from matplotlib.offsetbox import HPacker, TextArea, AnnotationBbox

f = figure(1)
ax = f.add_subplot(111)

txt1 = TextArea(A$^3$, textprops=dict(color=r, size=150))
txt2 = TextArea(gb, textprops=dict(color=k, size=150))

txt = HPacker(children=[txt1, txt2],
align=baseline,
pad=0, sep=0)

bbox =  AnnotationBbox(txt, xy=(0.5, 0.5),
   xycoords='data',
   frameon=False,
   box_alignment=(0.5, 0.5), # alignment center, center
   )

ax.add_artist(bbox)

show()





On Wed, Feb 8, 2012 at 7:44 AM, Yann Tambouret yannp...@bu.edu wrote:
 Along the lines of Mike's suggestion, I thought this could be done using
 Latex.


 I posted an answer on SO with an example of doing this, but it seems only to
 work with postscript backend. Other backends override the color with the mpl
 text color setting.

 Is there a way to prevent this override? For example don't try to use 'PS'
 backend, and look at hte figure interactively. It defaults to black.

 http://stackoverflow.com/a/9185143/717357

 -Yann




 On Tue, Feb 7, 2012 at 4:46 PM, Paul Ivanov pivanov...@gmail.com wrote:

 Benjamin Root, on 2012-02-07 13:46,  wrote:
  Also, how deep should this rabbit hole go?  I could imagine one could
  want
  this for title() and figtitle().  Maybe it would be best to implement
  this
  at the Text() constructor level?

 For this reason, I would discourage even implementing such
 functionality in the core of matplotlib. This functionality doesn't strike
 me
 as something that ought to be available everywhere by default - if someone
 needs it, they can implement it as follows:

 -
 import matplotlib.pyplot as plt
 from matplotlib import transforms

 def rainbow_text(x,y,ls,lc,**kw):
    
    Take a list of strings ``ls`` and colors ``lc`` and place them next to
 each
    other, with text ls[i] being shown in color lc[i].

    This example shows how to do both vertical and horizontal text, and
 will
    pass all keyword arguments to plt.text, so you can set the font size,
    family, etc.
    
    t = plt.gca().transData
    fig = plt.gcf()
    plt.show()

    #horizontal version
    for s,c in zip(ls,lc):
        text = plt.text(x,y, +s+ ,color=c, transform=t, **kw)
        text.draw(fig.canvas.get_renderer())
        ex = text.get_window_extent()
        t = transforms.offset_copy(text._transform, x=ex.width,
 units='dots')

    #vertical version
    for s,c in zip(ls,lc):
        text = plt.text(x,y, +s+ ,color=c, transform=t,
                rotation=90,va='bottom',ha='center',**kw)
        text.draw(fig.canvas.get_renderer())
        ex = text.get_window_extent()
        t = transforms.offset_copy(text._transform, y=ex.height,
 units='dots')


 plt.figure()
 rainbow_text(0.5,0.5,all unicorns poop rainbows ! ! !.split(),
        ['red', 'orange', 'brown', 'green', 'blue', 'purple', 'black'],
        size=40)

 best,
 --
 Paul Ivanov
 314 address only used for lists,  off-list direct email at:
 http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7


 --
 Keep Your Developer Skills Current with LearnDevNow!
 The most comprehensive online learning library for Microsoft developers
 is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
 Metro Style Apps, more. Free future releases when you subscribe now!
 http://p.sf.net/sfu/learndevnow-d2d
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users



 --
 Keep Your Developer Skills Current with LearnDevNow!
 The most comprehensive online learning library for Microsoft developers
 is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
 Metro Style Apps, more. Free future releases when you subscribe now!
 http://p.sf.net/sfu/learndevnow-d2d
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users


--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net

Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-08 Thread Gökhan Sever
This is the solution which requires the least modification to the original
text inserting functions. The only drawback is like you said, it only works
with ps backend.

Any idea if this could be generalized for other backends?

On Tue, Feb 7, 2012 at 3:44 PM, Yann Tambouret yannp...@bu.edu wrote:

 Along the lines of Mike's suggestion, I thought this could be done using
 Latex.


 I posted an answer on SO with an example of doing this, but it seems only
 to work with postscript backend. Other backends override the color with the
 mpl text color setting.

 Is there a way to prevent this override? For example don't try to use 'PS'
 backend, and look at hte figure interactively. It defaults to black.

 http://stackoverflow.com/a/9185143/717357

 -Yann




 On Tue, Feb 7, 2012 at 4:46 PM, Paul Ivanov pivanov...@gmail.com wrote:

 Benjamin Root, on 2012-02-07 13:46,  wrote:
  Also, how deep should this rabbit hole go?  I could imagine one could
 want
  this for title() and figtitle().  Maybe it would be best to implement
 this
  at the Text() constructor level?

 For this reason, I would discourage even implementing such
 functionality in the core of matplotlib. This functionality doesn't
 strike me
 as something that ought to be available everywhere by default - if someone
 needs it, they can implement it as follows:

 -
 import matplotlib.pyplot as plt
 from matplotlib import transforms

 def rainbow_text(x,y,ls,lc,**kw):

Take a list of strings ``ls`` and colors ``lc`` and place them next to
 each
other, with text ls[i] being shown in color lc[i].

This example shows how to do both vertical and horizontal text, and
 will
pass all keyword arguments to plt.text, so you can set the font size,
family, etc.

t = plt.gca().transData
fig = plt.gcf()
plt.show()

#horizontal version
for s,c in zip(ls,lc):
text = plt.text(x,y, +s+ ,color=c, transform=t, **kw)
text.draw(fig.canvas.get_renderer())
ex = text.get_window_extent()
t = transforms.offset_copy(text._transform, x=ex.width,
 units='dots')

#vertical version
for s,c in zip(ls,lc):
text = plt.text(x,y, +s+ ,color=c, transform=t,
rotation=90,va='bottom',ha='center',**kw)
text.draw(fig.canvas.get_renderer())
ex = text.get_window_extent()
t = transforms.offset_copy(text._transform, y=ex.height,
 units='dots')


 plt.figure()
 rainbow_text(0.5,0.5,all unicorns poop rainbows ! ! !.split(),
['red', 'orange', 'brown', 'green', 'blue', 'purple', 'black'],
size=40)

 best,
 --
 Paul Ivanov
 314 address only used for lists,  off-list direct email at:
 http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7


 --
 Keep Your Developer Skills Current with LearnDevNow!
 The most comprehensive online learning library for Microsoft developers
 is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
 Metro Style Apps, more. Free future releases when you subscribe now!
 http://p.sf.net/sfu/learndevnow-d2d
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users




 --
 Keep Your Developer Skills Current with LearnDevNow!
 The most comprehensive online learning library for Microsoft developers
 is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
 Metro Style Apps, more. Free future releases when you subscribe now!
 http://p.sf.net/sfu/learndevnow-d2d
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users




-- 
Gökhan
--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Gökhan Sever
Is there a way in matplotlib to partially specify the color of a string?

Example:

plt.ylabel(Today is cloudy.)
How can I show today as red, is as green and cloudy. as blue?

Thanks.

PS: Asked also on
http://stackoverflow.com/questions/9169052/partial-coloring-of-text-in-matplotlib

-- 
Gökhan
--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Michael Droettboom
Nope.  But it's something I've wanted to add for a while.  Can you file 
an Issue in the github tracker?


Mike

On 02/07/2012 11:40 AM, Gökhan Sever wrote:

Is there a way in matplotlib to partially specify the color of a string?

Example:

plt.ylabel(Today is cloudy.)
How can I show today as red, is as green and cloudy. as blue?

Thanks.

PS: Asked also on 
http://stackoverflow.com/questions/9169052/partial-coloring-of-text-in-matplotlib


--
Gökhan


--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d


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


--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Gökhan Sever
Posted at https://github.com/matplotlib/matplotlib/issues/697

I think a syntax like:

plt.ylabel(Sun is shining., color='rgb')

would be a good start. (Assuming len of string == len of colors)

On Tue, Feb 7, 2012 at 11:18 AM, Michael Droettboom md...@stsci.edu wrote:

  Nope.  But it's something I've wanted to add for a while.  Can you file
 an Issue in the github tracker?

 Mike


 On 02/07/2012 11:40 AM, Gökhan Sever wrote:

 Is there a way in matplotlib to partially specify the color of a string?

  Example:

  plt.ylabel(Today is cloudy.)
 How can I show today as red, is as green and cloudy. as blue?

  Thanks.

  PS: Asked also on
 http://stackoverflow.com/questions/9169052/partial-coloring-of-text-in-matplotlib

  --
 Gökhan


 --
 Keep Your Developer Skills Current with LearnDevNow!
 The most comprehensive online learning library for Microsoft developers
 is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
 Metro Style Apps, more. Free future releases when you subscribe 
 now!http://p.sf.net/sfu/learndevnow-d2d



 ___
 Matplotlib-users mailing 
 listMatplotlib-users@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-users




 --
 Keep Your Developer Skills Current with LearnDevNow!
 The most comprehensive online learning library for Microsoft developers
 is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
 Metro Style Apps, more. Free future releases when you subscribe now!
 http://p.sf.net/sfu/learndevnow-d2d
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users




-- 
Gökhan
--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Benjamin Root
On Tue, Feb 7, 2012 at 12:38 PM, Gökhan Sever gokhanse...@gmail.com wrote:

 Posted at https://github.com/matplotlib/matplotlib/issues/697

 I think a syntax like:

 plt.ylabel(Sun is shining., color='rgb')

 would be a good start. (Assuming len of string == len of colors)


Don't know if I like that.  It becomes even more difficult to convert the
color spec into rgb.  How about this?

plt.ylabel(['Sun, is, shining], color=['r', 'g', 'b'])

By having the input label be an array, that would force ylabel to recognize
that the color sequence should also be treated similarly.

Ben Root
--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Gökhan Sever
This works as well, as long as it functions :)

My idea requires little less typing. But forgot previously, text string
should be whitespace split.

On Tue, Feb 7, 2012 at 11:43 AM, Benjamin Root ben.r...@ou.edu wrote:



 On Tue, Feb 7, 2012 at 12:38 PM, Gökhan Sever gokhanse...@gmail.comwrote:

 Posted at https://github.com/matplotlib/matplotlib/issues/697

 I think a syntax like:

 plt.ylabel(Sun is shining., color='rgb')

 would be a good start. (Assuming len of string == len of colors)


 Don't know if I like that.  It becomes even more difficult to convert the
 color spec into rgb.  How about this?

 plt.ylabel(['Sun, is, shining], color=['r', 'g', 'b'])

 By having the input label be an array, that would force ylabel to
 recognize that the color sequence should also be treated similarly.

 Ben Root




-- 
Gökhan
--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Ryan May
On Tue, Feb 7, 2012 at 12:49 PM, Gökhan Sever gokhanse...@gmail.com wrote:
 This works as well, as long as it functions :)

 My idea requires little less typing. But forgot previously, text string
 should be whitespace split.

Right, but we shouldn't guess. If we automatically split on
whitespace, this becomes harder:

plt.ylabel([The sun is, yellow], ['k', 'y'])

Ryan

-- 
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma

--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Gökhan Sever
I was basing my whitespace split idea on single string assumption --eg. no
list passing.

I do not have a strong preference on the final argument passing, as long as
it works instead of manually placing the texts on figure or axis :)



On Tue, Feb 7, 2012 at 11:52 AM, Ryan May rma...@gmail.com wrote:

 On Tue, Feb 7, 2012 at 12:49 PM, Gökhan Sever gokhanse...@gmail.com
 wrote:
  This works as well, as long as it functions :)
 
  My idea requires little less typing. But forgot previously, text string
  should be whitespace split.

 Right, but we shouldn't guess. If we automatically split on
 whitespace, this becomes harder:

 plt.ylabel([The sun is, yellow], ['k', 'y'])

 Ryan

 --
 Ryan May
 Graduate Research Assistant
 School of Meteorology
 University of Oklahoma




-- 
Gökhan
--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Benjamin Root
On Tue, Feb 7, 2012 at 1:15 PM, Gökhan Sever gokhanse...@gmail.com wrote:

 I was basing my whitespace split idea on single string assumption --eg. no
 list passing.

 I do not have a strong preference on the final argument passing, as long
 as it works instead of manually placing the texts on figure or axis :)



 On Tue, Feb 7, 2012 at 11:52 AM, Ryan May rma...@gmail.com wrote:

 On Tue, Feb 7, 2012 at 12:49 PM, Gökhan Sever gokhanse...@gmail.com
 wrote:
  This works as well, as long as it functions :)
 
  My idea requires little less typing. But forgot previously, text string
  should be whitespace split.

 Right, but we shouldn't guess. If we automatically split on
 whitespace, this becomes harder:

 plt.ylabel([The sun is, yellow], ['k', 'y'])

 Ryan


I think the python mantra of explicit over implicit should be followed
here.  I don't think we currently allow list of strings, so there is no
risk of breaking existing scripts, I think.  We probably should confirm
that just in case.

Also, how deep should this rabbit hole go?  I could imagine one could want
this for title() and figtitle().  Maybe it would be best to implement this
at the Text() constructor level?

Ben Root
--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Gökhan Sever
On Tue, Feb 7, 2012 at 12:46 PM, Benjamin Root ben.r...@ou.edu wrote:



 On Tue, Feb 7, 2012 at 1:15 PM, Gökhan Sever gokhanse...@gmail.comwrote:

 I was basing my whitespace split idea on single string assumption --eg.
 no list passing.

 I do not have a strong preference on the final argument passing, as long
 as it works instead of manually placing the texts on figure or axis :)



 On Tue, Feb 7, 2012 at 11:52 AM, Ryan May rma...@gmail.com wrote:

 On Tue, Feb 7, 2012 at 12:49 PM, Gökhan Sever gokhanse...@gmail.com
 wrote:
  This works as well, as long as it functions :)
 
  My idea requires little less typing. But forgot previously, text string
  should be whitespace split.

 Right, but we shouldn't guess. If we automatically split on
 whitespace, this becomes harder:

 plt.ylabel([The sun is, yellow], ['k', 'y'])

 Ryan


 I think the python mantra of explicit over implicit should be followed
 here.  I don't think we currently allow list of strings, so there is no
 risk of breaking existing scripts, I think.  We probably should confirm
 that just in case.


Fair enough.


 Also, how deep should this rabbit hole go?  I could imagine one could want
 this for title() and figtitle().  Maybe it would be best to implement this
 at the Text() constructor level?


ylabel text coloring works for me for the time being. However, a general
implementation would possibly fulfill other incoming requests.



 Ben Root




-- 
Gökhan
--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Michael Droettboom
In the past, I've thought having some sort of HTML-lite subset would 
be the most powerful here.  So one could do:


   title(This is bbold/b)

Strictly speaking, for colors, one would do:

   title(This is font color='red'red/font)

but that's awfully verbose.  I wouldn't have a problem fudging the spec 
and supporting:


   title(This is redred/red)

since this would never be full-fledged HTML anyway [1].

The advantage of this approach over any of the list-based ones is that 
different properties can be nested, and I think most people understand 
the basics of HTML/XML tags.


And I agree with Benjamin, that this should be at the Text() constructor 
level so it works everywhere.  I envision it being a sort of peer text 
parser just as the mathtext parser is now -- in fact a lot of the 
mathtext machinery would be reused.


[1] Of course, I've also considered using something like PythonWebKit to 
render text for us -- the advantage being we'd also get proper bidi and 
other internationalization features.  But (a) WebKit is another honking 
dependency and (b) I'm not sure the Python bindings are ready for prime 
time.


Mike

On 02/07/2012 02:46 PM, Benjamin Root wrote:



On Tue, Feb 7, 2012 at 1:15 PM, Gökhan Sever gokhanse...@gmail.com 
mailto:gokhanse...@gmail.com wrote:


I was basing my whitespace split idea on single string assumption
--eg. no list passing.

I do not have a strong preference on the final argument passing,
as long as it works instead of manually placing the texts on
figure or axis :)



On Tue, Feb 7, 2012 at 11:52 AM, Ryan May rma...@gmail.com
mailto:rma...@gmail.com wrote:

On Tue, Feb 7, 2012 at 12:49 PM, Gökhan Sever
gokhanse...@gmail.com mailto:gokhanse...@gmail.com wrote:
 This works as well, as long as it functions :)

 My idea requires little less typing. But forgot previously,
text string
 should be whitespace split.

Right, but we shouldn't guess. If we automatically split on
whitespace, this becomes harder:

plt.ylabel([The sun is, yellow], ['k', 'y'])

Ryan


I think the python mantra of explicit over implicit should be 
followed here.  I don't think we currently allow list of strings, so 
there is no risk of breaking existing scripts, I think.  We probably 
should confirm that just in case.


Also, how deep should this rabbit hole go?  I could imagine one could 
want this for title() and figtitle().  Maybe it would be best to 
implement this at the Text() constructor level?


Ben Root



--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d


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


--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Jason Grout
On 2/7/12 2:47 PM, Michael Droettboom wrote:
 since this would never be full-fledged HTML anyway [1].

Famous last words, right?

I'm curious: for the SVG backend, or a possible html5 canvas backend, 
can we already include html?  I don't know, but I'm curious.

Jason

--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Paul Ivanov
Benjamin Root, on 2012-02-07 13:46,  wrote:
 Also, how deep should this rabbit hole go?  I could imagine one could want
 this for title() and figtitle().  Maybe it would be best to implement this
 at the Text() constructor level?

For this reason, I would discourage even implementing such
functionality in the core of matplotlib. This functionality doesn't strike me
as something that ought to be available everywhere by default - if someone
needs it, they can implement it as follows:

-
import matplotlib.pyplot as plt
from matplotlib import transforms

def rainbow_text(x,y,ls,lc,**kw):

Take a list of strings ``ls`` and colors ``lc`` and place them next to each
other, with text ls[i] being shown in color lc[i].

This example shows how to do both vertical and horizontal text, and will
pass all keyword arguments to plt.text, so you can set the font size,
family, etc.

t = plt.gca().transData
fig = plt.gcf()
plt.show()

#horizontal version
for s,c in zip(ls,lc):
text = plt.text(x,y, +s+ ,color=c, transform=t, **kw)
text.draw(fig.canvas.get_renderer())
ex = text.get_window_extent()
t = transforms.offset_copy(text._transform, x=ex.width, units='dots')

#vertical version
for s,c in zip(ls,lc):
text = plt.text(x,y, +s+ ,color=c, transform=t,
rotation=90,va='bottom',ha='center',**kw)
text.draw(fig.canvas.get_renderer())
ex = text.get_window_extent()
t = transforms.offset_copy(text._transform, y=ex.height, units='dots')


plt.figure()
rainbow_text(0.5,0.5,all unicorns poop rainbows ! ! !.split(), 
['red', 'orange', 'brown', 'green', 'blue', 'purple', 'black'],
size=40)

best,
-- 
Paul Ivanov
314 address only used for lists,  off-list direct email at:
http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7 

--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Partial coloring of text in matplotlib

2012-02-07 Thread Yann Tambouret
Along the lines of Mike's suggestion, I thought this could be done using
Latex.


I posted an answer on SO with an example of doing this, but it seems only
to work with postscript backend. Other backends override the color with the
mpl text color setting.

Is there a way to prevent this override? For example don't try to use 'PS'
backend, and look at hte figure interactively. It defaults to black.

http://stackoverflow.com/a/9185143/717357

-Yann



On Tue, Feb 7, 2012 at 4:46 PM, Paul Ivanov pivanov...@gmail.com wrote:

 Benjamin Root, on 2012-02-07 13:46,  wrote:
  Also, how deep should this rabbit hole go?  I could imagine one could
 want
  this for title() and figtitle().  Maybe it would be best to implement
 this
  at the Text() constructor level?

 For this reason, I would discourage even implementing such
 functionality in the core of matplotlib. This functionality doesn't strike
 me
 as something that ought to be available everywhere by default - if someone
 needs it, they can implement it as follows:

 -
 import matplotlib.pyplot as plt
 from matplotlib import transforms

 def rainbow_text(x,y,ls,lc,**kw):

Take a list of strings ``ls`` and colors ``lc`` and place them next to
 each
other, with text ls[i] being shown in color lc[i].

This example shows how to do both vertical and horizontal text, and will
pass all keyword arguments to plt.text, so you can set the font size,
family, etc.

t = plt.gca().transData
fig = plt.gcf()
plt.show()

#horizontal version
for s,c in zip(ls,lc):
text = plt.text(x,y, +s+ ,color=c, transform=t, **kw)
text.draw(fig.canvas.get_renderer())
ex = text.get_window_extent()
t = transforms.offset_copy(text._transform, x=ex.width,
 units='dots')

#vertical version
for s,c in zip(ls,lc):
text = plt.text(x,y, +s+ ,color=c, transform=t,
rotation=90,va='bottom',ha='center',**kw)
text.draw(fig.canvas.get_renderer())
ex = text.get_window_extent()
t = transforms.offset_copy(text._transform, y=ex.height,
 units='dots')


 plt.figure()
 rainbow_text(0.5,0.5,all unicorns poop rainbows ! ! !.split(),
['red', 'orange', 'brown', 'green', 'blue', 'purple', 'black'],
size=40)

 best,
 --
 Paul Ivanov
 314 address only used for lists,  off-list direct email at:
 http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7


 --
 Keep Your Developer Skills Current with LearnDevNow!
 The most comprehensive online learning library for Microsoft developers
 is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
 Metro Style Apps, more. Free future releases when you subscribe now!
 http://p.sf.net/sfu/learndevnow-d2d
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users


--
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users