SourceForge logo
SourceForge logo
Menu

matplotlib-devel — matplotlib developers

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
(1)
Nov
(33)
Dec
(20)
2004 Jan
(7)
Feb
(44)
Mar
(51)
Apr
(43)
May
(43)
Jun
(36)
Jul
(61)
Aug
(44)
Sep
(25)
Oct
(82)
Nov
(97)
Dec
(47)
2005 Jan
(77)
Feb
(143)
Mar
(42)
Apr
(31)
May
(93)
Jun
(93)
Jul
(35)
Aug
(78)
Sep
(56)
Oct
(44)
Nov
(72)
Dec
(75)
2006 Jan
(116)
Feb
(99)
Mar
(181)
Apr
(171)
May
(112)
Jun
(86)
Jul
(91)
Aug
(111)
Sep
(77)
Oct
(72)
Nov
(57)
Dec
(51)
2007 Jan
(64)
Feb
(116)
Mar
(70)
Apr
(74)
May
(53)
Jun
(40)
Jul
(519)
Aug
(151)
Sep
(132)
Oct
(74)
Nov
(282)
Dec
(190)
2008 Jan
(141)
Feb
(67)
Mar
(69)
Apr
(96)
May
(227)
Jun
(404)
Jul
(399)
Aug
(96)
Sep
(120)
Oct
(205)
Nov
(126)
Dec
(261)
2009 Jan
(136)
Feb
(136)
Mar
(119)
Apr
(124)
May
(155)
Jun
(98)
Jul
(136)
Aug
(292)
Sep
(174)
Oct
(126)
Nov
(126)
Dec
(79)
2010 Jan
(109)
Feb
(83)
Mar
(139)
Apr
(91)
May
(79)
Jun
(164)
Jul
(184)
Aug
(146)
Sep
(163)
Oct
(128)
Nov
(70)
Dec
(73)
2011 Jan
(235)
Feb
(165)
Mar
(147)
Apr
(86)
May
(74)
Jun
(118)
Jul
(65)
Aug
(75)
Sep
(162)
Oct
(94)
Nov
(48)
Dec
(44)
2012 Jan
(49)
Feb
(40)
Mar
(88)
Apr
(35)
May
(52)
Jun
(69)
Jul
(90)
Aug
(123)
Sep
(112)
Oct
(120)
Nov
(105)
Dec
(116)
2013 Jan
(76)
Feb
(26)
Mar
(78)
Apr
(43)
May
(61)
Jun
(53)
Jul
(147)
Aug
(85)
Sep
(83)
Oct
(122)
Nov
(18)
Dec
(27)
2014 Jan
(58)
Feb
(25)
Mar
(49)
Apr
(17)
May
(29)
Jun
(39)
Jul
(53)
Aug
(52)
Sep
(35)
Oct
(47)
Nov
(110)
Dec
(27)
2015 Jan
(50)
Feb
(93)
Mar
(96)
Apr
(30)
May
(55)
Jun
(83)
Jul
(44)
Aug
(8)
Sep
(5)
Oct
Nov
(1)
Dec
(1)
2016 Jan
Feb
Mar
(1)
Apr
May
Jun
(2)
Jul
Aug
(3)
Sep
(1)
Oct
(3)
Nov
Dec
2017 Jan
Feb
(5)
Mar
Apr
May
Jun
Jul
(3)
Aug
Sep
(7)
Oct
Nov
Dec
2018 Jan
Feb
Mar
Apr
May
Jun
Jul
(2)
Aug
Sep
Oct
Nov
Dec
S M T W T F S



1
(4)
2
(7)
3
(4)
4
5
(2)
6
(4)
7
8
(2)
9
(12)
10
(11)
11
(1)
12
(4)
13
(12)
14
(13)
15
(6)
16
(10)
17
(5)
18
(1)
19
(1)
20
(8)
21
(5)
22
(7)
23
(2)
24
(1)
25
26
27
(2)
28
(2)
29
(6)
30
(13)
31
(6)

Showing results of 151

<< < 1 2 3 4 .. 7 > >> (Page 2 of 7)
From: Eric F. <ef...@ha...> - 2007年08月28日 22:32:23
Mike,
Thank you, that's wonderful! I knew dedent was a major speed problem, 
but I couldn't think of how to speed it up, and to my eye keeping the 
docstrings properly indented in the code makes a *huge* difference in 
readability.
Eric
md...@us... wrote:
> Revision: 3744
> http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3744&view=rev
> Author: mdboom
> Date: 2007年08月28日 12:17:21 -0700 (2007年8月28日)
> 
> Log Message:
> -----------
> Use regular expressions to do dedenting. This is ~15X faster than the
> old implementation. dedent accounted for around 30% of the time spent
> in "import pylab", so was probably worthy of optimization, even if this
> regex approach is less clear. The results are identical to the old
> implementation, with the exception of a single docstring (in
> backend_bases.py) that needed to be fixed.
From: Eric F. <ef...@ha...> - 2007年08月28日 20:49:51
Mike,
After a quick test, I am puzzled: running "backend_driver.py Template"
takes 0.49 minutes on my machine before and after this change, so the 
dedenting time must have been less than I thought.
Eric
md...@us... wrote:
> Revision: 3744
> http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3744&view=rev
> Author: mdboom
> Date: 2007年08月28日 12:17:21 -0700 (2007年8月28日)
> 
> Log Message:
> -----------
> Use regular expressions to do dedenting. This is ~15X faster than the
> old implementation. dedent accounted for around 30% of the time spent
> in "import pylab", so was probably worthy of optimization, even if this
> regex approach is less clear. The results are identical to the old
> implementation, with the exception of a single docstring (in
> backend_bases.py) that needed to be fixed.
From: Michael D. <md...@st...> - 2007年08月27日 15:42:23
Michael Droettboom wrote:
> Darren Dale wrote:
>> On Wednesday 22 August 2007 4:20:08 pm Michael Droettboom wrote:
>>> Darren Dale wrote:
>>>> If you want all that flexibility, why not do it in the usual way:
>>>>
>>>> #mathtext.it.family : 'serif'
>>>> #mathtext.it.style : 'oblique'
>>> That seems reasonable. I think I had a mental block around this because
>>> of the verbosity (and seeing a font specification as a single unit), but
>>> it does seem to fit in much better with the existing options (i.e. a
>>> subset of font.*).
>>>
>>> *IF* fontconfig is ever adopted, we could use fontconfig patterns as an
>>> alternative, which are at least some kind of standard.
>>
>> Right:
>> mathtext.it : serif-12:italic # use the default serif, 12 pt italic
>> or
>> mathtext.it : times:italic # use the times italic font, default size
>>
>> Could this syntax be adopted, even without fontconfig? Then if we 
>> decided to use fontconfig in the future, the disruption would not be 
>> too great.
> 
> Sure, it's certainly an easy enough format to support.
> 
> Of course, the matching algorithm used by font_manager.py is different 
> from fontconfig. font_manager.py essentially looks for an exact match 
> or falls back to a single default. fontconfig does a nearest neighbor 
> search, so often finds a better alternative. So even if they use the 
> same syntax, the results will be different (in some side cases) if we 
> ever move over to fontconfig. (There are pros and cons to using 
> fontconfig already discussed on this list. I'm not really advocating 
> for or against it myself.)
> 
> Still, IMHO, it's worth supporting this syntax now even though users may 
> need to change their font specifiers later -- those changes should be 
> more minor than if we go with
> 
> #mathtext.it.family : 'serif'
> #mathtext.it.style : 'oblique'
> 
> now.
I just committed code to support fontconfig patterns on all of the 
mathtext.* fonts. You can also use fontconfig patterns in the pylab and 
OO interfaces -- e.g.:
 title("This is my title", fontproperties="Helvetica:italic")
(Note this doesn't actually use fontconfig -- I've just borrowed its 
font-specification syntax.)
I was thinking we probably want to collapse the following options down 
to one as well --->
#font.family : sans-serif
#font.style : normal
#font.variant : normal
#font.weight : medium
#font.stretch : normal
# note that font.size controls default text sizes. To configure
# special text sizes tick labels, axes, labels, title, etc, see the rc
# settings for axes and ticks. Special text sizes can be defined
# relative to font.size, using the following values: xx-small, x-small,
# small, medium, large, x-large, xx-large, larger, or smaller
#font.size : 12.0
probably to "font.default" ? For backward compatibility, we probably 
want to continue to support these, but "font.default" would override 
them if provided. Any ideas on how to best do that? I only have a 
rough sense of where the new traited config stuff is going wrt backward 
compatibility etc.
Cheers,
Mike
From: Michael D. <md...@st...> - 2007年08月27日 13:27:02
Jouni K. Seppänen wrote:
> On OS X, using the pdf backend, I get the exception "RuntimeError:
> TrueType font is missing table" when running examples/fonts_demo_kw.py,
> because ttconv is trying to load /System/Library/Fonts/Times.dfont as a
> TrueType font, which it of course is not.
> 
> A simple solution would be to limit the font searching algorithm to only
> look for files matching *.ttf, but that would unnecessarily limit the
> Agg-based backends, since freetype does understand and render dfont
> files. The best solution would be to implement dfont support in the pdf
> backend, but I have no idea how complicated that would be.
Unfortunately, .dfont files aren't used *correctly* by the font manager 
at present, either. .dfont files can contain multiple ttf files -- so 
as a .ttf file always contains a single weight/angle/stretch etc., a 
.dfont usually contains a number of different versions of the same font 
family. The FT2Font class underlying the font manager is hardcoded to 
always look at only the first ttf in the .dfont file. That can probably 
be fixed, of course, but .dfont files will have to be treated 
differently from .ttf files in the font manager anyway.
FWIW, fontconfig 2.4.2 (what MacPorts gives me) doesn't seem to handle 
.dfonts correctly either.
$ fc-match -v HelveticaNeue:italic
Pattern has 28 elts (size 32)
 family: "Helvetica Neue"(s)
	<snip>
 file: "/Library/Fonts/HelveticaNeue.dfont"(s)
 index: 0(i)(s)
$ fc-match -v HelveticaNeue:bold
Pattern has 28 elts (size 32)
 family: "Helvetica Neue"(s)
	<snip>
 file: "/Library/Fonts/HelveticaNeue.dfont"(s)
 index: 0(i)(s)
I would have expected the index value to be different. But maybe I'm 
just misusing/misunderstanding fontconfig...
> What would be a reasonable interim solution? Perhaps the font manager
> should identify the file type of each font file it knows about, so e.g.
> the pdf backend could request a list of just the TrueType fonts.
> 
> (See also:
> http://article.gmane.org/gmane.comp.python.matplotlib.general/10069 )
I definitely agree with what you're saying. Taking a step back, though, 
I worry about the user needing to know about the surprises in the 
font-compatibility space. Say a user develops a plot using an 
interactive backend (with Agg), and then decides to publish the plot 
using PDF and is surprised when it picks up completely different fonts. 
 At the very least we should find a way to inform the user that the 
first choice font (a dfont) was bypassed in favor of a ttf font, since 
the backend doesn't support it.
Part of me is thinking that for simplicity, we should only support .ttf 
fonts everywhere (excluding text.usetex == True), as that is the lowest 
common denominator, but I know that might be limited and disappointing 
to some. Mac users could run fondu over their fonts to get .ttfs from 
.dfonts.
Cheers,
Mike
From: <jk...@ik...> - 2007年08月24日 19:56:30
On OS X, using the pdf backend, I get the exception "RuntimeError:
TrueType font is missing table" when running examples/fonts_demo_kw.py,
because ttconv is trying to load /System/Library/Fonts/Times.dfont as a
TrueType font, which it of course is not.
A simple solution would be to limit the font searching algorithm to only
look for files matching *.ttf, but that would unnecessarily limit the
Agg-based backends, since freetype does understand and render dfont
files. The best solution would be to implement dfont support in the pdf
backend, but I have no idea how complicated that would be.
What would be a reasonable interim solution? Perhaps the font manager
should identify the file type of each font file it knows about, so e.g.
the pdf backend could request a list of just the TrueType fonts.
(See also:
http://article.gmane.org/gmane.comp.python.matplotlib.general/10069 )
-- 
Jouni K. Seppänen
http://www.iki.fi/jks
From: Michael D. <md...@st...> - 2007年08月23日 13:26:17
Darren Dale wrote:
> On Wednesday 22 August 2007 4:20:08 pm Michael Droettboom wrote:
>> Darren Dale wrote:
>>> If you want all that flexibility, why not do it in the usual way:
>>>
>>> #mathtext.it.family : 'serif'
>>> #mathtext.it.style : 'oblique'
>> That seems reasonable. I think I had a mental block around this because
>> of the verbosity (and seeing a font specification as a single unit), but
>> it does seem to fit in much better with the existing options (i.e. a
>> subset of font.*).
>>
>> *IF* fontconfig is ever adopted, we could use fontconfig patterns as an
>> alternative, which are at least some kind of standard.
> 
> Right: 
> 
> mathtext.it : serif-12:italic # use the default serif, 12 pt italic
> or
> mathtext.it : times:italic # use the times italic font, default size
> 
> Could this syntax be adopted, even without fontconfig? Then if we decided to 
> use fontconfig in the future, the disruption would not be too great.
Sure, it's certainly an easy enough format to support.
Of course, the matching algorithm used by font_manager.py is different 
from fontconfig. font_manager.py essentially looks for an exact match 
or falls back to a single default. fontconfig does a nearest neighbor 
search, so often finds a better alternative. So even if they use the 
same syntax, the results will be different (in some side cases) if we 
ever move over to fontconfig. (There are pros and cons to using 
fontconfig already discussed on this list. I'm not really advocating 
for or against it myself.)
Still, IMHO, it's worth supporting this syntax now even though users may 
need to change their font specifiers later -- those changes should be 
more minor than if we go with
#mathtext.it.family : 'serif'
#mathtext.it.style : 'oblique'
now.
If we go this way, it would also be worthwhile to support this syntax 
internally (anywhere a FontProperties object is currently accepted it 
could alternatively be a fontconfig string.)
Cheers,
Mike
From: Darren D. <dd...@co...> - 2007年08月23日 11:52:25
On Wednesday 22 August 2007 4:20:08 pm Michael Droettboom wrote:
> Darren Dale wrote:
> > On Wednesday 22 August 2007 03:09:30 pm Michael Droettboom wrote:
> >> I realize it's hacky. The most obvious alternative is to expect a
> >> dictionary here, e.g.:
> >>
> >> rm = { 'family': ['serif'], 'style': 'oblique' }
> >>
> >> But that's less like the FontProperties constructor.
> >
> > Why do you say that? Here is the constructor:
> >
> > def __init__(self,
> > family = None,
> > style = None,
> > variant= None,
> > weight = None,
> > stretch= None,
> > size = None,
> > fname = None,
> > ):
> >
> > wouldnt FontProperties(**rm) work?
>
> Sure. I just meant that
>
> rm = { 'family': ['serif'], 'style': 'oblique' }
>
> is syntactically different from
>
> rm = FontProperties(['serif'], style='oblique')
>
> >> My goal was to
> >> make specifying fonts as similar as possible to the FontProperties
> >> object so the user doesn't have to learn a new syntax. Is there a
> >> better way to do this with Traits? Can the user specify the arguments
> >> (with keyword arguments) to a constructor?
> >
> > I think this is getting a little out of hand, isnt it?:
> >
> > #mathtext.cal : ['cursive']
> > #mathtext.rm : ['serif']
> > #mathtext.tt : ['monospace']
> > #mathtext.it : ['serif'], style='oblique'
> > #mathtext.bf : ['serif'], weight='bold'
> > #mathtext.sf : ['sans-serif']
> >
> > That means we have comma-separated strings for lists of fonts, but
> > bracket-enclosed comma-separated quoted strings for mathtext properties.
>
> Well, they are different beasts. The former only specifies a choice of
> families. The latter specifies a specific font. I didn't intend to
> invent something new for mathtext -- there were no other instances where
> a full set of font properties was required to specify a font. (Sure
> font.* is a sort of example of that, but it includes other things as
> well...)
>
> > If you want all that flexibility, why not do it in the usual way:
> >
> > #mathtext.it.family : 'serif'
> > #mathtext.it.style : 'oblique'
>
> That seems reasonable. I think I had a mental block around this because
> of the verbosity (and seeing a font specification as a single unit), but
> it does seem to fit in much better with the existing options (i.e. a
> subset of font.*).
>
> *IF* fontconfig is ever adopted, we could use fontconfig patterns as an
> alternative, which are at least some kind of standard.
Right: 
mathtext.it : serif-12:italic # use the default serif, 12 pt italic
or
mathtext.it : times:italic # use the times italic font, default size
Could this syntax be adopted, even without fontconfig? Then if we decided to 
use fontconfig in the future, the disruption would not be too great.
Darren 
From: Michael D. <md...@st...> - 2007年08月22日 20:21:47
Darren Dale wrote:
> On Wednesday 22 August 2007 03:09:30 pm Michael Droettboom wrote:
>> I realize it's hacky. The most obvious alternative is to expect a
>> dictionary here, e.g.:
>>
>> rm = { 'family': ['serif'], 'style': 'oblique' }
>>
>> But that's less like the FontProperties constructor. 
> 
> Why do you say that? Here is the constructor:
> 
> def __init__(self,
> family = None,
> style = None,
> variant= None,
> weight = None,
> stretch= None,
> size = None,
> fname = None,
> ):
> 
> wouldnt FontProperties(**rm) work?
Sure. I just meant that
 rm = { 'family': ['serif'], 'style': 'oblique' }
is syntactically different from
 rm = FontProperties(['serif'], style='oblique')
>> My goal was to 
>> make specifying fonts as similar as possible to the FontProperties
>> object so the user doesn't have to learn a new syntax. Is there a
>> better way to do this with Traits? Can the user specify the arguments
>> (with keyword arguments) to a constructor?
> 
> I think this is getting a little out of hand, isnt it?:
> 
> #mathtext.cal : ['cursive']
> #mathtext.rm : ['serif']
> #mathtext.tt : ['monospace']
> #mathtext.it : ['serif'], style='oblique'
> #mathtext.bf : ['serif'], weight='bold'
> #mathtext.sf : ['sans-serif']
> 
> That means we have comma-separated strings for lists of fonts, but 
> bracket-enclosed comma-separated quoted strings for mathtext properties.
Well, they are different beasts. The former only specifies a choice of 
families. The latter specifies a specific font. I didn't intend to 
invent something new for mathtext -- there were no other instances where 
a full set of font properties was required to specify a font. (Sure 
font.* is a sort of example of that, but it includes other things as 
well...)
> If you want all that flexibility, why not do it in the usual way:
> 
> #mathtext.it.family : 'serif'
> #mathtext.it.style : 'oblique'
That seems reasonable. I think I had a mental block around this because 
of the verbosity (and seeing a font specification as a single unit), but 
it does seem to fit in much better with the existing options (i.e. a 
subset of font.*).
*IF* fontconfig is ever adopted, we could use fontconfig patterns as an 
alternative, which are at least some kind of standard.
> But is that much flexibility needed?
The flexibility is certainly needed, and came directly out of a request 
on matplotlib-user. There are cases where you want the variable names 
(the 'it' font in TeX parlance) to be in an upright serif font. So you 
can't hardcode either the family or the style. And there is no way 
(AFAIK) to go from a given serif font to its companion sans-serif font, 
so when changing to a new font "collection", each one will have to be 
specified individually.
Cheers,
Mike
From: Darren D. <dd...@co...> - 2007年08月22日 20:00:40
On Wednesday 22 August 2007 03:09:30 pm Michael Droettboom wrote:
> This was an attempt to do a direct translation from what I had in the
> "classic" rcsetup.py. (The previous version in mplconfig.py was
> semantically incorrect.) I had tested this with settings in my
> matplotlib.conf, but didn't realise that the default wasn't validated
> (and thus not interpreted into a FontPropertiesProxy object).
>
> Darren Dale wrote:
> > I am trying to work out some way to make rcdefaults() work with the
> > traited config. Along the way, I discovered this in mplconfig:
> >
> > class mathtext(TConfig):
> > cal = T.Trait("['cursive']", mplT.FontPropertiesHandler())
> > rm = T.Trait("['serif']", mplT.FontPropertiesHandler())
> > tt = T.Trait("['monospace']", mplT.FontPropertiesHandler())
> > it = T.Trait("['serif'], style='oblique'",
> > mplT.FontPropertiesHandler())
> > bf = T.Trait("['serif'], weight='bold'",
> > mplT.FontPropertiesHandler()) sf = T.Trait("['sans-serif']",
> > mplT.FontPropertiesHandler()) use_cm = T.true
> > fallback_to_cm = T.true
> >
> > I dont think that will work. One of the highlights of the new config
> > files is that when a file says:
> >
> > [mathtext]
> > rm = ['serif', 'sans-serif']
> >
> > you actually get a list, not a string, to pass to
> > mplT.FontPropertiesHandler().
>
> Right. But it works like:
>
> rm = "['serif', 'sans-serif']"
>
> I realize it's hacky. The most obvious alternative is to expect a
> dictionary here, e.g.:
>
> rm = { 'family': ['serif'], 'style': 'oblique' }
>
> But that's less like the FontProperties constructor. 
Why do you say that? Here is the constructor:
 def __init__(self,
 family = None,
 style = None,
 variant= None,
 weight = None,
 stretch= None,
 size = None,
 fname = None,
 ):
wouldnt FontProperties(**rm) work?
> My goal was to 
> make specifying fonts as similar as possible to the FontProperties
> object so the user doesn't have to learn a new syntax. Is there a
> better way to do this with Traits? Can the user specify the arguments
> (with keyword arguments) to a constructor?
I think this is getting a little out of hand, isnt it?:
#mathtext.cal : ['cursive']
#mathtext.rm : ['serif']
#mathtext.tt : ['monospace']
#mathtext.it : ['serif'], style='oblique'
#mathtext.bf : ['serif'], weight='bold'
#mathtext.sf : ['sans-serif']
That means we have comma-separated strings for lists of fonts, but 
bracket-enclosed comma-separated quoted strings for mathtext properties.
If you want all that flexibility, why not do it in the usual way:
#mathtext.it.family : 'serif'
#mathtext.it.style : 'oblique'
But is that much flexibility needed?
Darren
From: Michael D. <md...@st...> - 2007年08月22日 19:47:34
I've committed a fix so this at least works. (We can change how the 
trait is specified later if necessary.) The validation is not as tight 
as it should be, yet.
I think I've passed through this bug onto another one, though:
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File 
"/home/mdroe/usr/lib/python2.5/site-packages/matplotlib/config/mplconfig.py", 
line 469, in update
 self[key] = arg[key]
 File 
"/home/mdroe/usr/lib/python2.5/site-packages/matplotlib/config/mplconfig.py", 
line 454, in __setitem__
 See rcParams.keys() for a list of valid parameters.'%key)
KeyError: 'text.fontangle is not a valid rc parameter.See 
rcParams.keys() for a list of valid parameters.'
It seems that unlike the regular string choice traits, the custom Trait 
handlers *are* called with the default value when initialized. Is that 
something to be relied on? (Other parts of mplconfig, such as the 
colors, depend on this).
Cheers,
Mike
Michael Droettboom wrote:
> This was an attempt to do a direct translation from what I had in the 
> "classic" rcsetup.py. (The previous version in mplconfig.py was 
> semantically incorrect.) I had tested this with settings in my 
> matplotlib.conf, but didn't realise that the default wasn't validated 
> (and thus not interpreted into a FontPropertiesProxy object).
> 
> Darren Dale wrote:
>> I am trying to work out some way to make rcdefaults() work with the traited 
>> config. Along the way, I discovered this in mplconfig:
>>
>> class mathtext(TConfig):
>> cal = T.Trait("['cursive']", mplT.FontPropertiesHandler())
>> rm = T.Trait("['serif']", mplT.FontPropertiesHandler())
>> tt = T.Trait("['monospace']", mplT.FontPropertiesHandler())
>> it = T.Trait("['serif'], style='oblique'", 
>> mplT.FontPropertiesHandler())
>> bf = T.Trait("['serif'], weight='bold'", mplT.FontPropertiesHandler())
>> sf = T.Trait("['sans-serif']", mplT.FontPropertiesHandler())
>> use_cm = T.true
>> fallback_to_cm = T.true
>>
>> I dont think that will work. One of the highlights of the new config files is 
>> that when a file says:
>>
>> [mathtext]
>> rm = ['serif', 'sans-serif']
>>
>> you actually get a list, not a string, to pass to 
>> mplT.FontPropertiesHandler().
> 
> Right. But it works like:
> 
> rm = "['serif', 'sans-serif']"
> 
> I realize it's hacky. The most obvious alternative is to expect a 
> dictionary here, e.g.:
> 
> rm = { 'family': ['serif'], 'style': 'oblique' }
> 
> But that's less like the FontProperties constructor. My goal was to 
> make specifying fonts as similar as possible to the FontProperties 
> object so the user doesn't have to learn a new syntax. Is there a 
> better way to do this with Traits? Can the user specify the arguments 
> (with keyword arguments) to a constructor?
> 
> Cheers,
> Mike
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> Matplotlib-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
From: Michael D. <md...@st...> - 2007年08月22日 19:09:55
This was an attempt to do a direct translation from what I had in the 
"classic" rcsetup.py. (The previous version in mplconfig.py was 
semantically incorrect.) I had tested this with settings in my 
matplotlib.conf, but didn't realise that the default wasn't validated 
(and thus not interpreted into a FontPropertiesProxy object).
Darren Dale wrote:
> I am trying to work out some way to make rcdefaults() work with the traited 
> config. Along the way, I discovered this in mplconfig:
> 
> class mathtext(TConfig):
> cal = T.Trait("['cursive']", mplT.FontPropertiesHandler())
> rm = T.Trait("['serif']", mplT.FontPropertiesHandler())
> tt = T.Trait("['monospace']", mplT.FontPropertiesHandler())
> it = T.Trait("['serif'], style='oblique'", 
> mplT.FontPropertiesHandler())
> bf = T.Trait("['serif'], weight='bold'", mplT.FontPropertiesHandler())
> sf = T.Trait("['sans-serif']", mplT.FontPropertiesHandler())
> use_cm = T.true
> fallback_to_cm = T.true
> 
> I dont think that will work. One of the highlights of the new config files is 
> that when a file says:
> 
> [mathtext]
> rm = ['serif', 'sans-serif']
> 
> you actually get a list, not a string, to pass to 
> mplT.FontPropertiesHandler().
Right. But it works like:
rm = "['serif', 'sans-serif']"
I realize it's hacky. The most obvious alternative is to expect a 
dictionary here, e.g.:
 rm = { 'family': ['serif'], 'style': 'oblique' }
But that's less like the FontProperties constructor. My goal was to 
make specifying fonts as similar as possible to the FontProperties 
object so the user doesn't have to learn a new syntax. Is there a 
better way to do this with Traits? Can the user specify the arguments 
(with keyword arguments) to a constructor?
Cheers,
Mike
From: Darren D. <dd...@co...> - 2007年08月22日 18:56:06
I am trying to work out some way to make rcdefaults() work with the traited 
config. Along the way, I discovered this in mplconfig:
 class mathtext(TConfig):
 cal = T.Trait("['cursive']", mplT.FontPropertiesHandler())
 rm = T.Trait("['serif']", mplT.FontPropertiesHandler())
 tt = T.Trait("['monospace']", mplT.FontPropertiesHandler())
 it = T.Trait("['serif'], style='oblique'", 
mplT.FontPropertiesHandler())
 bf = T.Trait("['serif'], weight='bold'", mplT.FontPropertiesHandler())
 sf = T.Trait("['sans-serif']", mplT.FontPropertiesHandler())
 use_cm = T.true
 fallback_to_cm = T.true
I dont think that will work. One of the highlights of the new config files is 
that when a file says:
[mathtext]
rm = ['serif', 'sans-serif']
you actually get a list, not a string, to pass to 
mplT.FontPropertiesHandler(). I discovered the code by trying to do this:
rcParams.update(rcParamsDefault)
Another thing about T.Trait to keep in mind:
T.Trait("['cursive']", mplT.FontPropertiesHandler())
"['cursive']" is the default value and is *not validated*. Nor is it 
necessarily an allowed value. For example:
 T.Trait('small', 'medium', 'large') 
'small' is the default value, but any future attempt to set that trait 
to 'small' will fail. Only items following the default are allowed.
 T.Trait('small', 'small', 'medium', 'large') 
Now 'small' is a valid setting.
Darren
From: Eric F. <ef...@ha...> - 2007年08月22日 17:18:31
Manuel Metz wrote:
> Hello,
> I have attached a patch that adds the ability to draw upper/lower limits 
> indicators for errorbars. New keyword args had to be introduced to the 
> errorbar command, and I also had to add new plot styles. I chose 
> 'y','Y','z' and 'Z' as new linestyles for arrowheads pointing up,down, 
> left, right (see lines.py).
> 
> An example and its output is also attached.
> 
> Eric: I know, I don't use masked array in this patch ;_) . The reason 
> was that errorbar() also doesn't use them, and a did not want to 
> completely change that function but just add the new feature. Switching 
> to masked arrays should be straight forward, I think :-)
OK, thanks. I don't think that masked array support is needed for 
errorbar plots; certainly it is not high priority.
I will look at your patch later this week; I am pretty thoroughly tied 
up right now.
Eric
From: Manuel M. <mm...@as...> - 2007年08月22日 09:56:50
Hello,
I have attached a patch that adds the ability to draw upper/lower limits 
indicators for errorbars. New keyword args had to be introduced to the 
errorbar command, and I also had to add new plot styles. I chose 
'y','Y','z' and 'Z' as new linestyles for arrowheads pointing up,down, 
left, right (see lines.py).
An example and its output is also attached.
Eric: I know, I don't use masked array in this patch ;_) . The reason 
was that errorbar() also doesn't use them, and a did not want to 
completely change that function but just add the new feature. Switching 
to masked arrays should be straight forward, I think :-)
Manuel
From: Eric F. <ef...@ha...> - 2007年08月21日 17:15:10
Manuel,
Thank you.
I will look at this ASAP, but it might not be right away. Just to be 
safe, if you haven't heard from me by Friday send me a message off the list.
Manuel Metz wrote:
> Okay, I changed from npy.asarray -> npy.ma.array and checked that it 
> works. I also added a doc. The patch as well as an example code and its 
> output are attached.
> 
> Please note that the example actually call ax.step directly instead of 
> using the pylab interface; I guess this has to be added (boilerplate.py?)
Yes, I can take care of that. No problem.
Eric
> 
> Manuel
> 
> Eric Firing wrote:
>>
>>
>> Manuel Metz wrote:
>>> May I ask again: Is there any interest in a step-plotting function?
>> Yes, so thanks for taking the initiative and for being persistent.
>>>
>>> If so, who will commit the patch? Do I have to add more myself 
>>> (documentation for sure needs to be added, what else ?)
>> Please add a docstring and a simple demo suitable for the examples 
>> subdirectory. I will commit the patch, or some modification of it.
>>>
>>> Manuel
>>>
>>> Manuel Metz wrote:
>>>> Hi,
>>>> okay, I have added a keyword 'where' as suggested. I also now 
>>>> changed the way the incoming data is converted. I took this from the 
>>>> axes.pie() function. I don't know much about the unit types yet :-(
>>>>
>>>> Concerning masked arrays: Do I have to consider something special 
>>>> there?
>> I think that if you change the npy.asarray to npyma.array, and 
>> similarly for the zeros(), that will provide basic masked array 
>> support. Please look at masked_demo.py for an example of the use of 
>> masked arrays. (It is very artificial, of course. A typical use case 
>> for masked arrays is when you have a data stream with some bad points 
>> that you want to edit out, but you want to keep the array dimensions 
>> unchanged. In the case of a line plot or step plot, you want the line 
>> to break at the missing point to show that a point has been removed.)
>>
>> Eric
>>
>>>>
>>>> Manuel
>>>>
>>>> Ted Drain wrote:
>>>>> At 10:36 AM 8/14/2007, Eric Firing wrote:
>>>>>> Ted Drain wrote:
>>>>>>> Manuel,
>>>>>>> We do plots like this all the time. One thing we've found that's 
>>>>>>> nice to have is a keyword that controls when the increase in y 
>>>>>>> happens. We use a step style keyword that can be 'pre' (go up 
>>>>>>> then right), 'post' (go right then up), and 'mid' (right 0.5, up, 
>>>>>>> right 0.5).
>>>>>> Good idea.
>>>>>>> Regarding your patch, you might want to check other areas in MPL 
>>>>>>> for data processing examples. I could be wrong but I'm not sure 
>>>>>>> you can assume that incoming data is a float. Some of the unit 
>>>>>>> conversion examples or the line collection code might have better 
>>>>>>> examples.
>>>>>> Incoming data can be any numeric type, but it ends up getting 
>>>>>> converted to the default float type (not float32) internally.
>>>>>>
>>>>>> Whenever possible, it is good to support masked array input.
>>>>> Agreed - but the way the patch was written, I don't think it will 
>>>>> support anything but float (especially not the unit types).
>>>>>
>>>>>> Eric
>>>>>>> Ted
>>>>>>> At 07:59 AM 8/14/2007, Manuel Metz wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I have created a patch against latest svn that adds a function 
>>>>>>>> step to the axes class to plot step-functions ;-) It's really 
>>>>>>>> simple but nice ... Any interest in adding this?
>>>>>>>>
>>>>>>>> Manuel
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Index: axes.py
>>>>>>>> ===================================================================
>>>>>>>> --- axes.py (revision 3709)
>>>>>>>> +++ axes.py (working copy)
>>>>>>>> @@ -4995,6 +4995,18 @@
>>>>>>>> steps=[1, 2, 
>>>>>>>> 5, 10],
>>>>>>>> integer=True))
>>>>>>>> return im
>>>>>>>> +
>>>>>>>> + def step(self, x, y, *args, **kwargs):
>>>>>>>> + x2 = npy.zeros((2*len(x)), npy.float32)
>>>>>>>> + y2 = npy.zeros((2*len(x)), npy.float32)
>>>>>>>> +
>>>>>>>> + x2[0::2] = x
>>>>>>>> + x2[1::2] = x
>>>>>>>> +
>>>>>>>> + y2[1::2] = y
>>>>>>>> + y2[2::2] = y[:-1]
>>>>>>>> +
>>>>>>>> + self.plot(x2, y2, *args, **kwargs)
>>>>>>>>
>>>>>>>> class SubplotBase:
>>>>>>>> """
>>>>>>>>
>>>>>>>> ------------------------------------------------------------------------- 
>>>>>>>>
>>>>>>>> This SF.net email is sponsored by: Splunk Inc.
>>>>>>>> Still grepping through log files to find problems? Stop.
>>>>>>>> Now Search log events and configuration files using AJAX and a 
>>>>>>>> browser.
>>>>>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>>>>> _______________________________________________
>>>>>>>> Matplotlib-devel mailing list
>>>>>>>> Mat...@li...
>>>>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>>>>> ------------------------------------------------------------------------ 
>>>>>>>
>>>>>>> ------------------------------------------------------------------------- 
>>>>>>>
>>>>>>> This SF.net email is sponsored by: Splunk Inc.
>>>>>>> Still grepping through log files to find problems? Stop.
>>>>>>> Now Search log events and configuration files using AJAX and a 
>>>>>>> browser.
>>>>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>>>>
>>>>>>> ------------------------------------------------------------------------ 
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Matplotlib-devel mailing list
>>>>>>> Mat...@li...
>>>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>>>
>>>>> ------------------------------------------------------------------------ 
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------- 
>>>>>
>>>>> This SF.net email is sponsored by: Splunk Inc.
>>>>> Still grepping through log files to find problems? Stop.
>>>>> Now Search log events and configuration files using AJAX and a 
>>>>> browser.
>>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------ 
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Matplotlib-devel mailing list
>>>>> Mat...@li...
>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>> ------------------------------------------------------------------------ 
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------ 
>>>>
>>>>
>>>> ------------------------------------------------------------------------- 
>>>>
>>>> This SF.net email is sponsored by: Splunk Inc.
>>>> Still grepping through log files to find problems? Stop.
>>>> Now Search log events and configuration files using AJAX and a browser.
>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>
>>>>
>>>> ------------------------------------------------------------------------ 
>>>>
>>>>
>>>> _______________________________________________
>>>> Matplotlib-devel mailing list
>>>> Mat...@li...
>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>
>>> ------------------------------------------------------------------------- 
>>>
>>> This SF.net email is sponsored by: Splunk Inc.
>>> Still grepping through log files to find problems? Stop.
>>> Now Search log events and configuration files using AJAX and a browser.
>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>> _______________________________________________
>>> Matplotlib-devel mailing list
>>> Mat...@li...
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
> 
> ------------------------------------------------------------------------
> 
> Index: axes.py
> ===================================================================
> --- axes.py	(revision 3720)
> +++ axes.py	(working copy)
> @@ -4987,7 +4987,54 @@
> steps=[1, 2, 5, 10],
> integer=True))
> return im
> + 
> + def step(self, x, y, *args, **kwargs):
> + '''
> + STEP(x, y, *args, **kwargs)
> + 
> + Make a step plot. The args and keyword args to step are the same
> + as the args to plot. See help plot for more info.
> + 
> + Additional keyword args for step:
> + 
> + * where: can be 'pre', 'post' or 'mid'. Determines where the
> + step occurs.
> + '''
> + 
> + where = kwargs.pop('where', 'pre')
> + 
> + if not iterable(x): x = npy.ma.array([x]).astype(npy.float32)
> + else: x = npy.ma.array(x).astype(npy.float32)
> + 
> + if not iterable(y): x = npy.ma.array([y]).astype(npy.float32)
> + else: y = npy.ma.array(y).astype(npy.float32)
> + 
> + if where=='pre':
> + x2 = npy.ma.zeros((2*len(x)-1,), npy.float32)
> + y2 = npy.ma.zeros((2*len(y)-1,), npy.float32)
> + 
> + x2[0::2], x2[1::2] = x, x[:-1]
> + y2[0::2], y2[1:-1:2] = y, y[1:]
> 
> + elif where=='post':
> + x2 = npy.ma.zeros((2*len(x)-1,), npy.float32)
> + y2 = npy.ma.zeros((2*len(y)-1,), npy.float32)
> + 
> + x2[::2], x2[1:-1:2] = x, x[1:]
> + y2[0::2], y2[1::2] = y, y[:-1]
> + 
> + elif where=='mid':
> + x2 = npy.ma.zeros((2*len(x),), npy.float32)
> + y2 = npy.ma.zeros((2*len(y),), npy.float32)
> + 
> + x2[1:-1:2] = 0.5*(x[:-1]+x[1:])
> + x2[2::2] = 0.5*(x[:-1]+x[1:])
> + x2[0], x2[-1] = x[0], x[-1]
> + 
> + y2[0::2], y2[1::2] = y, y
> + 
> + return self.plot(x2, y2, *args, **kwargs)
> +
> class SubplotBase:
> """
> Emulate matlab's(TM) subplot command, creating axes with
> 
> 
> ------------------------------------------------------------------------
> 
> import matplotlib.numerix as npy
> from pylab import *
> 
> x = npy.arange(1.,10.)
> y = arange(1.,10.)
> x[4] += 0.4
> 
> fig = figure()
> ax = fig.gca()
> 
> ax.step(x,y, where='post')
> 
> y += 1.
> ax.step(x,y,where='pre')
> 
> y += 1.5
> ax.step(x,y,where='mid')
> 
> xlim(0,10)
> ylim(-1,13)
> 
> show()
> 
> 
> ------------------------------------------------------------------------
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Matplotlib-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
From: Michael D. <md...@st...> - 2007年08月21日 14:23:22
Darren Dale wrote:
> On Monday 20 August 2007 10:18:27 am Michael Droettboom wrote:
>> On a related note, there was a recent thread on matplotlib-users about
>> usetex being a global setting:
>>
>> http://www.mail-archive.com/mat...@li.../msg04101
>> .html
>>
>> I'm concerned about consistency and/or redundancy between this and the
>> new markup kwarg. I don't know whether or not "usetex" being
>> "all-or-nothing" is desirable. But we could meet in the middle by doing
>> one of the following:
>>
>> a) only send text to LaTeX for rendering when text.usetex=True and
>> markup="tex". (Which makes usetex=True behave a little more like
>> usetex=False).
> 
> This seems like a bad idea. If I want to use tex as my text layout engine, now 
> I have two settings to keep track of. We'll get lots of posts asking why 
> latex is not being used when usetex is True.
I agree with this point. My counter-worry is that people may be 
surprised when their dollar signs behave differently when usetex is on 
or off. Maybe people don't change that setting all that often in 
practice, though... We could (and I'm not necessarily advocate this), 
pre-process the string sent to LaTeX when usetex is True and markup == 
'plain', so that the dollar signs are escaped (and will appear as dollar 
signs in the output).
>> b) add another value to markup, to render text with LaTeX. (If we
>> do, I would suggest changing the kwarg to "text_renderer" and having the
>> values be "normal", "mathtext" and "latex" or something)
> 
> This seems reasonable. Although, if we make it so latex can be used to layout 
> some text but not others, I worry that we will get no end of posts 
> complaining about how the latex fonts dont match the mathtext or normal 
> fonts.
Agreed.
>> c) make markup="tex" be all-or-nothing as well (that is, keep the
>> rcParam, but drop the kwarg.) With this flag, you're basically saying
>> "I know how to deal with $'s".
>>
>> b) is probably the most flexible (maybe too flexible, as I can't see why
>> one would want to use all three types of rendering in the same plot).
>> a) and b) would break backward compatibility with 0.90.1, while c) would
>> not.
>>
>> Any thoughts?
> 
> I think b) fits best. Maybe backward compatibility can be maintained. usetex 
> would be deprecated, and would set the text_renderer rcParam to latex when 
> True.
That seems like a good approach, if we go with option b).
> Or does 0.90.1 already have the markup kwarg?
The markup kwarg is only a couple weeks old.
> Again, there must be a 
> way. The new validation mechanism in rcParams (not traits, the stuff I did 
> right before traits) could probably provide a route for transition without 
> actually breaking anything.
Good point.
> I am pretty busy this week at work, and will be 
> on vacation for 11 days starting August 24, just letting you know.
Thanks. I don't think there's a huge rush to decide this (the 
implementation should be straightforward no matter what we decide). But 
it would make sense to sort this out before the next release.
Cheers,
Mike
From: Darren D. <dd...@co...> - 2007年08月21日 14:07:12
On Monday 20 August 2007 10:18:27 am Michael Droettboom wrote:
> On a related note, there was a recent thread on matplotlib-users about
> usetex being a global setting:
>
> http://www.mail-archive.com/mat...@li.../msg04101
>.html
>
> I'm concerned about consistency and/or redundancy between this and the
> new markup kwarg. I don't know whether or not "usetex" being
> "all-or-nothing" is desirable. But we could meet in the middle by doing
> one of the following:
>
> a) only send text to LaTeX for rendering when text.usetex=True and
> markup="tex". (Which makes usetex=True behave a little more like
> usetex=False).
This seems like a bad idea. If I want to use tex as my text layout engine, now 
I have two settings to keep track of. We'll get lots of posts asking why 
latex is not being used when usetex is True.
> b) add another value to markup, to render text with LaTeX. (If we
> do, I would suggest changing the kwarg to "text_renderer" and having the
> values be "normal", "mathtext" and "latex" or something)
This seems reasonable. Although, if we make it so latex can be used to layout 
some text but not others, I worry that we will get no end of posts 
complaining about how the latex fonts dont match the mathtext or normal 
fonts.
> c) make markup="tex" be all-or-nothing as well (that is, keep the
> rcParam, but drop the kwarg.) With this flag, you're basically saying
> "I know how to deal with $'s".
>
> b) is probably the most flexible (maybe too flexible, as I can't see why
> one would want to use all three types of rendering in the same plot).
> a) and b) would break backward compatibility with 0.90.1, while c) would
> not.
>
> Any thoughts?
I think b) fits best. Maybe backward compatibility can be maintained. usetex 
would be deprecated, and would set the text_renderer rcParam to latex when 
True. Or does 0.90.1 already have the markup kwarg? Again, there must be a 
way. The new validation mechanism in rcParams (not traits, the stuff I did 
right before traits) could probably provide a route for transition without 
actually breaking anything. I am pretty busy this week at work, and will be 
on vacation for 11 days starting August 24, just letting you know.
Darren
From: Andrew J. <a.h...@gm...> - 2007年08月21日 13:55:18
Hi All-
FYI, I am seeing the same problem on intel OSX 10.4.10
Andrew
Eric Firing wrote:
> Rob, Mike,
> 
> What this implies to me is that either there is a problem with the code 
> that is generating afmdict (and I did not change that code, I just 
> caused it to be invoked when the fontManager instance is created.), or 
> there is a problem with some .afm files on Rob's machine.
> 
> I really don't know how to troubleshoot it beyond this.
> 
> (As a separate issue, I probably I should change font_manager.py so that 
> if the rcParams value below was changed since the cache was made, it 
> will be rebuilt with the new value.)
> 
> Eric
> 
> Rob Hetland wrote:
>> On Aug 14, 2007, at 1:55 PM, Eric Firing wrote:
>>
>>> rcParams['pdf.use14corefonts']
>> Indeed, reversing this value fixes the problem.
>>
>> My value had been set to False.
>> 	pdf.use14corefonts : True
>> in the mplrc file works with the latest revision.
>>
>> -r
>>
>> ----
>> Rob Hetland, Associate Professor
>> Dept. of Oceanography, Texas A&M University
>> http://pong.tamu.edu/~rob
>> phone: 979-458-0096, fax: 979-845-6331
>>
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Splunk Inc.
>> Still grepping through log files to find problems? Stop.
>> Now Search log events and configuration files using AJAX and a browser.
>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>> _______________________________________________
>> Matplotlib-devel mailing list
>> Mat...@pu...
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
From: Manuel M. <mm...@as...> - 2007年08月21日 12:07:59
Okay, I changed from npy.asarray -> npy.ma.array and checked that it 
works. I also added a doc. The patch as well as an example code and its 
output are attached.
Please note that the example actually call ax.step directly instead of 
using the pylab interface; I guess this has to be added (boilerplate.py?)
Manuel
Eric Firing wrote:
> 
> 
> Manuel Metz wrote:
>> May I ask again: Is there any interest in a step-plotting function?
> Yes, so thanks for taking the initiative and for being persistent.
>>
>> If so, who will commit the patch? Do I have to add more myself 
>> (documentation for sure needs to be added, what else ?)
> Please add a docstring and a simple demo suitable for the examples 
> subdirectory. I will commit the patch, or some modification of it.
>>
>> Manuel
>>
>> Manuel Metz wrote:
>>> Hi,
>>> okay, I have added a keyword 'where' as suggested. I also now changed 
>>> the way the incoming data is converted. I took this from the 
>>> axes.pie() function. I don't know much about the unit types yet :-(
>>>
>>> Concerning masked arrays: Do I have to consider something special there?
> I think that if you change the npy.asarray to npyma.array, and similarly 
> for the zeros(), that will provide basic masked array support. Please 
> look at masked_demo.py for an example of the use of masked arrays. (It 
> is very artificial, of course. A typical use case for masked arrays is 
> when you have a data stream with some bad points that you want to edit 
> out, but you want to keep the array dimensions unchanged. In the case 
> of a line plot or step plot, you want the line to break at the missing 
> point to show that a point has been removed.)
> 
> Eric
> 
>>>
>>> Manuel
>>>
>>> Ted Drain wrote:
>>>> At 10:36 AM 8/14/2007, Eric Firing wrote:
>>>>> Ted Drain wrote:
>>>>>> Manuel,
>>>>>> We do plots like this all the time. One thing we've found that's 
>>>>>> nice to have is a keyword that controls when the increase in y 
>>>>>> happens. We use a step style keyword that can be 'pre' (go up 
>>>>>> then right), 'post' (go right then up), and 'mid' (right 0.5, up, 
>>>>>> right 0.5).
>>>>> Good idea.
>>>>>> Regarding your patch, you might want to check other areas in MPL 
>>>>>> for data processing examples. I could be wrong but I'm not sure 
>>>>>> you can assume that incoming data is a float. Some of the unit 
>>>>>> conversion examples or the line collection code might have better 
>>>>>> examples.
>>>>> Incoming data can be any numeric type, but it ends up getting 
>>>>> converted to the default float type (not float32) internally.
>>>>>
>>>>> Whenever possible, it is good to support masked array input.
>>>> Agreed - but the way the patch was written, I don't think it will 
>>>> support anything but float (especially not the unit types).
>>>>
>>>>> Eric
>>>>>> Ted
>>>>>> At 07:59 AM 8/14/2007, Manuel Metz wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I have created a patch against latest svn that adds a function 
>>>>>>> step to the axes class to plot step-functions ;-) It's really 
>>>>>>> simple but nice ... Any interest in adding this?
>>>>>>>
>>>>>>> Manuel
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Index: axes.py
>>>>>>> ===================================================================
>>>>>>> --- axes.py (revision 3709)
>>>>>>> +++ axes.py (working copy)
>>>>>>> @@ -4995,6 +4995,18 @@
>>>>>>> steps=[1, 2, 5, 
>>>>>>> 10],
>>>>>>> integer=True))
>>>>>>> return im
>>>>>>> +
>>>>>>> + def step(self, x, y, *args, **kwargs):
>>>>>>> + x2 = npy.zeros((2*len(x)), npy.float32)
>>>>>>> + y2 = npy.zeros((2*len(x)), npy.float32)
>>>>>>> +
>>>>>>> + x2[0::2] = x
>>>>>>> + x2[1::2] = x
>>>>>>> +
>>>>>>> + y2[1::2] = y
>>>>>>> + y2[2::2] = y[:-1]
>>>>>>> +
>>>>>>> + self.plot(x2, y2, *args, **kwargs)
>>>>>>>
>>>>>>> class SubplotBase:
>>>>>>> """
>>>>>>>
>>>>>>> ------------------------------------------------------------------------- 
>>>>>>>
>>>>>>> This SF.net email is sponsored by: Splunk Inc.
>>>>>>> Still grepping through log files to find problems? Stop.
>>>>>>> Now Search log events and configuration files using AJAX and a 
>>>>>>> browser.
>>>>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>>>> _______________________________________________
>>>>>>> Matplotlib-devel mailing list
>>>>>>> Mat...@li...
>>>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>>>> ------------------------------------------------------------------------ 
>>>>>>
>>>>>> ------------------------------------------------------------------------- 
>>>>>>
>>>>>> This SF.net email is sponsored by: Splunk Inc.
>>>>>> Still grepping through log files to find problems? Stop.
>>>>>> Now Search log events and configuration files using AJAX and a 
>>>>>> browser.
>>>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>>>
>>>>>> ------------------------------------------------------------------------ 
>>>>>>
>>>>>> _______________________________________________
>>>>>> Matplotlib-devel mailing list
>>>>>> Mat...@li...
>>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>>
>>>> ------------------------------------------------------------------------ 
>>>>
>>>>
>>>> ------------------------------------------------------------------------- 
>>>>
>>>> This SF.net email is sponsored by: Splunk Inc.
>>>> Still grepping through log files to find problems? Stop.
>>>> Now Search log events and configuration files using AJAX and a browser.
>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>
>>>>
>>>> ------------------------------------------------------------------------ 
>>>>
>>>>
>>>> _______________________________________________
>>>> Matplotlib-devel mailing list
>>>> Mat...@li...
>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>> ------------------------------------------------------------------------
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> ------------------------------------------------------------------------- 
>>>
>>> This SF.net email is sponsored by: Splunk Inc.
>>> Still grepping through log files to find problems? Stop.
>>> Now Search log events and configuration files using AJAX and a browser.
>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Matplotlib-devel mailing list
>>> Mat...@li...
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Splunk Inc.
>> Still grepping through log files to find problems? Stop.
>> Now Search log events and configuration files using AJAX and a browser.
>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>> _______________________________________________
>> Matplotlib-devel mailing list
>> Mat...@li...
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
From: Eric F. <ef...@ha...> - 2007年08月20日 16:53:15
Manuel Metz wrote:
> May I ask again: Is there any interest in a step-plotting function?
Yes, so thanks for taking the initiative and for being persistent.
> 
> If so, who will commit the patch? Do I have to add more myself 
> (documentation for sure needs to be added, what else ?)
Please add a docstring and a simple demo suitable for the examples 
subdirectory. I will commit the patch, or some modification of it.
> 
> Manuel
> 
> Manuel Metz wrote:
>> Hi,
>> okay, I have added a keyword 'where' as suggested. I also now changed 
>> the way the incoming data is converted. I took this from the axes.pie() 
>> function. I don't know much about the unit types yet :-(
>>
>> Concerning masked arrays: Do I have to consider something special there?
I think that if you change the npy.asarray to npyma.array, and similarly 
for the zeros(), that will provide basic masked array support. Please 
look at masked_demo.py for an example of the use of masked arrays. (It 
is very artificial, of course. A typical use case for masked arrays is 
when you have a data stream with some bad points that you want to edit 
out, but you want to keep the array dimensions unchanged. In the case 
of a line plot or step plot, you want the line to break at the missing 
point to show that a point has been removed.)
Eric
>>
>> Manuel
>>
>> Ted Drain wrote:
>>> At 10:36 AM 8/14/2007, Eric Firing wrote:
>>>> Ted Drain wrote:
>>>>> Manuel,
>>>>> We do plots like this all the time. One thing we've found that's 
>>>>> nice to have is a keyword that controls when the increase in y 
>>>>> happens. We use a step style keyword that can be 'pre' (go up then 
>>>>> right), 'post' (go right then up), and 'mid' (right 0.5, up, right 
>>>>> 0.5).
>>>> Good idea.
>>>>> Regarding your patch, you might want to check other areas in MPL for 
>>>>> data processing examples. I could be wrong but I'm not sure you can 
>>>>> assume that incoming data is a float. Some of the unit conversion 
>>>>> examples or the line collection code might have better examples.
>>>> Incoming data can be any numeric type, but it ends up getting 
>>>> converted to the default float type (not float32) internally.
>>>>
>>>> Whenever possible, it is good to support masked array input.
>>> Agreed - but the way the patch was written, I don't think it will 
>>> support anything but float (especially not the unit types).
>>>
>>>> Eric
>>>>> Ted
>>>>> At 07:59 AM 8/14/2007, Manuel Metz wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I have created a patch against latest svn that adds a function step 
>>>>>> to the axes class to plot step-functions ;-) It's really simple but 
>>>>>> nice ... Any interest in adding this?
>>>>>>
>>>>>> Manuel
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Index: axes.py
>>>>>> ===================================================================
>>>>>> --- axes.py (revision 3709)
>>>>>> +++ axes.py (working copy)
>>>>>> @@ -4995,6 +4995,18 @@
>>>>>> steps=[1, 2, 5, 10],
>>>>>> integer=True))
>>>>>> return im
>>>>>> +
>>>>>> + def step(self, x, y, *args, **kwargs):
>>>>>> + x2 = npy.zeros((2*len(x)), npy.float32)
>>>>>> + y2 = npy.zeros((2*len(x)), npy.float32)
>>>>>> +
>>>>>> + x2[0::2] = x
>>>>>> + x2[1::2] = x
>>>>>> +
>>>>>> + y2[1::2] = y
>>>>>> + y2[2::2] = y[:-1]
>>>>>> +
>>>>>> + self.plot(x2, y2, *args, **kwargs)
>>>>>>
>>>>>> class SubplotBase:
>>>>>> """
>>>>>>
>>>>>> ------------------------------------------------------------------------- 
>>>>>>
>>>>>> This SF.net email is sponsored by: Splunk Inc.
>>>>>> Still grepping through log files to find problems? Stop.
>>>>>> Now Search log events and configuration files using AJAX and a 
>>>>>> browser.
>>>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>>> _______________________________________________
>>>>>> Matplotlib-devel mailing list
>>>>>> Mat...@li...
>>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>>> ------------------------------------------------------------------------ 
>>>>>
>>>>> ------------------------------------------------------------------------- 
>>>>>
>>>>> This SF.net email is sponsored by: Splunk Inc.
>>>>> Still grepping through log files to find problems? Stop.
>>>>> Now Search log events and configuration files using AJAX and a browser.
>>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>>
>>>>> ------------------------------------------------------------------------ 
>>>>>
>>>>> _______________________________________________
>>>>> Matplotlib-devel mailing list
>>>>> Mat...@li...
>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>
>>> ------------------------------------------------------------------------
>>>
>>> -------------------------------------------------------------------------
>>> This SF.net email is sponsored by: Splunk Inc.
>>> Still grepping through log files to find problems? Stop.
>>> Now Search log events and configuration files using AJAX and a browser.
>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Matplotlib-devel mailing list
>>> Mat...@li...
>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>> ------------------------------------------------------------------------
>>
>>
>> ------------------------------------------------------------------------
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Splunk Inc.
>> Still grepping through log files to find problems? Stop.
>> Now Search log events and configuration files using AJAX and a browser.
>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Matplotlib-devel mailing list
>> Mat...@li...
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> Matplotlib-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
From: Michael D. <md...@st...> - 2007年08月20日 14:18:50
Sorry for taking so long to respond -- I was at SciPy and wanted to make 
sure I had the time to sit down and look at this before responding.
Paul Kienzle wrote:
> On Thu, Aug 02, 2007 at 10:31:04AM -0400, Michael Droettboom wrote:
>> I don't know if we ever reached consensus on how to specify math text 
>> vs. regular text. I agree with Eric that it's down to two options: 
>> using a new kw argument (probably format="math" to be most future-proof) 
>> or Math('string'). I don't think I have enough "historical perspective" 
>> to really make the call but I do have a concern about the second option 
>> that it may be confusing depending on how "Math" is imported. (It may 
>> have to be pylab.Math in some instances but not in others.) But I don't 
>> have a strong objection.
>>
>> Any last objections to going with the new keyword argument?
> 
> I'm guessing that this discussion is already closed, but I would still
> like to propose another option, just like the original: specify the
> format in the string itself by requiring a leading '$'. 
> 
> For example:
> 
> text(x, y, r'$\sin(x)$')
> 
> or for those functions not starting with math:
> 
> text(x, y, r'$$phase $[0,2\pi)$')
Unfortunately, this will break if text.usetex is True. Double-dollar 
signs in LaTeX delimits "display math" mode.
> This is a variant on Math(r'$\sin(x)$') which is a bit more compact.
 >
> As has been pointed out elsewhere, whether or not the string contains
> tex markup is a property of the string, not a property of the function
> that use the string.
I agree with you in a semantic sense. However, does that distinction 
really matter at the end of the day? Couldn't the same argument be made 
for the color or font of the text? All of them have to do with how the 
string is rendered. I think the oddball (for matplotlib) nature of this 
syntax and the import namespace details make this at least equally as 
cumbersome as the "markup" keyword. But it's subjective, and I'm 
willing to change the code if there's consensus on this.
> Note that the format keyword will be required for 
> all functions which have string inputs, and may cause problems if there 
> are multiple string inputs to the function. legend() in particular may 
> be a problem.
legend() doesn't currently accept a "markup" keyword, but obviously it 
should (if we decide to stick with the "markup" keyword). (And there 
are undoubtedly more holes like this to plug up). However, I don't know 
if it is necessary to specify the markup of each individual legend 
string, now that math can be easily interleaved with non-math. Isn't 
that just adding options where none is needed?
As I see it, the only reason to have this stuff optional at all is 
because it's surprising for '$'s to be delimiters. Performance is a 
very minor issue. I "benchmarked" global mathtext vs. optional mathtext 
on the "backend_driver.py" script (which admittedly is not a great 
benchmark, but it's something), and the timing differences seem to be 
below the noise threshold:
 all math: 0.78s 0.67s 0.72s
 optional math: 0.72s 0.75s 0.68s
So I don't see why in a legend you would want some labels to be 
interpreted as having math and some without. If you need a real dollar 
sign, with math on, you can always use "\$".
On a related note, there was a recent thread on matplotlib-users about 
usetex being a global setting:
http://www.mail-archive.com/mat...@li.../msg04101.html
I'm concerned about consistency and/or redundancy between this and the 
new markup kwarg. I don't know whether or not "usetex" being 
"all-or-nothing" is desirable. But we could meet in the middle by doing 
one of the following:
 a) only send text to LaTeX for rendering when text.usetex=True and 
markup="tex". (Which makes usetex=True behave a little more like 
usetex=False).
 b) add another value to markup, to render text with LaTeX. (If we 
do, I would suggest changing the kwarg to "text_renderer" and having the 
values be "normal", "mathtext" and "latex" or something)
 c) make markup="tex" be all-or-nothing as well (that is, keep the 
rcParam, but drop the kwarg.) With this flag, you're basically saying 
"I know how to deal with $'s".
b) is probably the most flexible (maybe too flexible, as I can't see why 
one would want to use all three types of rendering in the same plot). 
a) and b) would break backward compatibility with 0.90.1, while c) would 
not.
Any thoughts?
Cheers,
Mike
From: Darren D. <dd...@co...> - 2007年08月20日 13:28:54
On Saturday 18 August 2007 12:44:20 pm Fernando Perez wrote:
> Here's some interesting info. I'm sitting here with Dave Peterson,
> from Enthought, and we've done a bunch of profiling that pointed to
> setuptools, not Traits, being the culprit for the time increase.
> We've now just done an install of Traits *without* any setuptools
> (right now that requires manual surgery, but later it can be done
> automatically if needed). Here are the resulting times:
>
> # Using traits
>
> maqroll[mpl-traits-debug]> time ./simple_plot.py
> *** Using Traits!!!
> 1.844u 0.212s 0:02.13 96.2% 0+0k 0+0io 0pf+0w
> maqroll[mpl-traits-debug]> time ./simple_plot.py
> *** Using Traits!!!
> 1.840u 0.216s 0:02.58 79.4% 0+0k 0+0io 0pf+0w
> maqroll[mpl-traits-debug]> time ./simple_plot.py
> *** Using Traits!!!
> 1.836u 0.196s 0:02.12 95.2% 0+0k 0+0io 0pf+0w
>
> # NOT Using traits
>
> maqroll[mpl-traits-debug]> time ./simple_plot.py
> 2.200u 0.280s 0:02.67 92.8% 0+0k 0+0io 0pf+0w
> maqroll[mpl-traits-debug]> time ./simple_plot.py
> 2.248u 0.220s 0:02.74 89.7% 0+0k 0+0io 0pf+0w
> maqroll[mpl-traits-debug]> time ./simple_plot.py
> 2.216u 0.244s 0:02.72 90.0% 0+0k 0+0io 0pf+0w
>
>
> As you'll notice, the traits times are *lower*. This is what my gut
> told me, since I know how tight the traits code is. The point is that
> traits can actually give you a performance *benefit*, not a cost. The
> problem is with setuptools, which goes ballistic on the filesystem at
> init time. The profiles I sent earlier have already all the
> information on that, if you use kcachegrind to see it (that's how Dave
> and I pinned it down).
>
> This hopefully settles the argument on the performance side. We'll
> leave the final decision up to you guys, obviously. For IPython, this
> settles the matter and we're going with traits, with setuptools banned
> til further notice from ipython.
Thank you Dave and Fernando for getting to the bottom of this. 
A lot of work has gone in to making mpl compatible with setuptools. In fact, 
we require it to install on python-2.3. Are the setuptools developers aware 
of the problem?
Darren
From: Manuel M. <mm...@as...> - 2007年08月20日 13:25:43
May I ask again: Is there any interest in a step-plotting function?
If so, who will commit the patch? Do I have to add more myself 
(documentation for sure needs to be added, what else ?)
Manuel
Manuel Metz wrote:
> Hi,
> okay, I have added a keyword 'where' as suggested. I also now changed 
> the way the incoming data is converted. I took this from the axes.pie() 
> function. I don't know much about the unit types yet :-(
> 
> Concerning masked arrays: Do I have to consider something special there?
> 
> Manuel
> 
> Ted Drain wrote:
>> At 10:36 AM 8/14/2007, Eric Firing wrote:
>>> Ted Drain wrote:
>>>> Manuel,
>>>> We do plots like this all the time. One thing we've found that's 
>>>> nice to have is a keyword that controls when the increase in y 
>>>> happens. We use a step style keyword that can be 'pre' (go up then 
>>>> right), 'post' (go right then up), and 'mid' (right 0.5, up, right 
>>>> 0.5).
>>> Good idea.
>>>> Regarding your patch, you might want to check other areas in MPL for 
>>>> data processing examples. I could be wrong but I'm not sure you can 
>>>> assume that incoming data is a float. Some of the unit conversion 
>>>> examples or the line collection code might have better examples.
>>>
>>> Incoming data can be any numeric type, but it ends up getting 
>>> converted to the default float type (not float32) internally.
>>>
>>> Whenever possible, it is good to support masked array input.
>>
>> Agreed - but the way the patch was written, I don't think it will 
>> support anything but float (especially not the unit types).
>>
>>> Eric
>>>> Ted
>>>> At 07:59 AM 8/14/2007, Manuel Metz wrote:
>>>>> Hi,
>>>>>
>>>>> I have created a patch against latest svn that adds a function step 
>>>>> to the axes class to plot step-functions ;-) It's really simple but 
>>>>> nice ... Any interest in adding this?
>>>>>
>>>>> Manuel
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Index: axes.py
>>>>> ===================================================================
>>>>> --- axes.py (revision 3709)
>>>>> +++ axes.py (working copy)
>>>>> @@ -4995,6 +4995,18 @@
>>>>> steps=[1, 2, 5, 10],
>>>>> integer=True))
>>>>> return im
>>>>> +
>>>>> + def step(self, x, y, *args, **kwargs):
>>>>> + x2 = npy.zeros((2*len(x)), npy.float32)
>>>>> + y2 = npy.zeros((2*len(x)), npy.float32)
>>>>> +
>>>>> + x2[0::2] = x
>>>>> + x2[1::2] = x
>>>>> +
>>>>> + y2[1::2] = y
>>>>> + y2[2::2] = y[:-1]
>>>>> +
>>>>> + self.plot(x2, y2, *args, **kwargs)
>>>>>
>>>>> class SubplotBase:
>>>>> """
>>>>>
>>>>> ------------------------------------------------------------------------- 
>>>>>
>>>>> This SF.net email is sponsored by: Splunk Inc.
>>>>> Still grepping through log files to find problems? Stop.
>>>>> Now Search log events and configuration files using AJAX and a 
>>>>> browser.
>>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>> _______________________________________________
>>>>> Matplotlib-devel mailing list
>>>>> Mat...@li...
>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>>> ------------------------------------------------------------------------ 
>>>>
>>>> ------------------------------------------------------------------------- 
>>>>
>>>> This SF.net email is sponsored by: Splunk Inc.
>>>> Still grepping through log files to find problems? Stop.
>>>> Now Search log events and configuration files using AJAX and a browser.
>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>>
>>>> ------------------------------------------------------------------------ 
>>>>
>>>> _______________________________________________
>>>> Matplotlib-devel mailing list
>>>> Mat...@li...
>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
>>
>>
>> ------------------------------------------------------------------------
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Splunk Inc.
>> Still grepping through log files to find problems? Stop.
>> Now Search log events and configuration files using AJAX and a browser.
>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Matplotlib-devel mailing list
>> Mat...@li...
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
> 
> ------------------------------------------------------------------------
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Matplotlib-devel mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
From: Michael D. <md...@st...> - 2007年08月20日 13:05:19
John Hunter wrote:
> On 8/20/07, Michael Droettboom <md...@st...> wrote:
> 
>> UTF-8 is my default system encoding, so I didn't catch this. I just
>> fixed the comment (the unicode character is unnecessary to get the point
>> across and wasonly in there due to a cut-and-paste accident anyway).
> 
>> I have committed this patch to SVN.
> 
> I thought last time this came up we agreed not to use unicode in the
> src files. Is it possible to remove the unicode entirely?
That's exactly what I did. Sorry I wasn't clear -- I only committed the 
second and unrelated patch to SVN (which eliminates a Gtk version check 
within a method call).
Cheers,
Mike
From: John H. <jd...@gm...> - 2007年08月20日 13:00:19
On 8/20/07, Michael Droettboom <md...@st...> wrote:
> UTF-8 is my default system encoding, so I didn't catch this. I just
> fixed the comment (the unicode character is unnecessary to get the point
> across and wasonly in there due to a cut-and-paste accident anyway).
> I have committed this patch to SVN.
I thought last time this came up we agreed not to use unicode in the
src files. Is it possible to remove the unicode entirely?
JDH

Showing results of 151

<< < 1 2 3 4 .. 7 > >> (Page 2 of 7)
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /