Re: [Matplotlib-users] Control space between bars

2008-08-14 Thread Jae-Joon Lee
Hi Mathieu,

It seems to me that you're confused with the meaning of the transAxes.
It is a transform from the Axes coordinate to the Canvas(?) coordinate.
As far as I can see, what you seemed to want is a transform between
Data coordinate and Axes coordinate, and that would be transScale +
transLimits (from Data to Axes).

So, try

   trans = (ax.transScale + ax.transLimits).inverted()
   # trans = ax.transLimits.inverted() will also work in this case.

and you will get 2.0, 2.0 as you expected.

The transform argument should be transAxes still.

   ax.text(valx, valy, actualcoords, transform=ax.transAxes)

As far as your original question is concerned, I have little idea what
you are trying to do, so I'll leave that question to others.

Regards,

-JJ


On Thu, Aug 14, 2008 at 3:43 PM, Mathieu Leplatre [EMAIL PROTECTED] wrote:
 I am still investigating and I am stuck at converting transAxes values to 
 data.

 If my axes goes from 10.0 to 20.0 then transAxes 0.5 should give me 15.0.

 This would allow me to compute bar width and space, since I am able to
 convert inches to transAxes values.

 I tried many combinations of transAxes, transData, ...,
 inverse_xy_tup, xy_tup, inverted(), transform(), ... without success
 :(

 Any ideas please ?

 -
 import pylab as P
 import matplotlib.transforms as T

 x = P.arange(5)
 y = P.rand(5) * 4
 ax = P.subplot(1,1,1)
 P.plot(x,y)
 ax.set_ylim(0.0, 4.0)

 trans = ax.transAxes
 valx = valy = 0.5
 actualcoords = %s % trans.transform([valx, valy])
 #Gives me [328, 240] instead of [2.0, 2.0]

 ax.text(valx, valy, actualcoords, transform=trans)
 P.show()

 -



 On Wed, Aug 13, 2008 at 10:34 AM, Mathieu Leplatre [EMAIL PROTECTED] wrote:
 Hi all,

 I've searched in examples and archives and could not find anything
 about manual control of space between bars.

 By default, the bars in the following script overlap.

 So I guess the behaviour is :
 specify chart width (8in) + bar width (0.8) = auto bar space

 And I would like to know how to do :
 specify chart width + bar space = auto bar width
 specify bar space + bar width = auto chart width (fixed margins)

 But I can't figure it out, especially the latter. Can
 matplotlib.transforms help me about the former ?

 Do you have documentation reference or some hints about that please ?
 Thanks!

 I am plotting a chronological bar chart like this one :

 #!/usr/bin/env python
 import matplotlib, pylab, numpy
 import datetime

 def rangedates( hourstep ):
dates = []
for d in range(1,31):
for h in range(0,24,hourstep):
dt = datetime.datetime(2008,06,d,h)
dates.append(dt)
return pylab.date2num(dates)

 # Plot value every 12H
 abscissa = rangedates(12)

 barstep  = abscissa[1] - abscissa[0]
 barspace = 0.5 * barstep
 barwidth = barstep - barspace

 fig = pylab.figure()
 ax  = fig.add_subplot(111)
 fmt = matplotlib.dates.DateFormatter('%b %d')
 ax.xaxis.set_major_formatter( fmt )
 fig.autofmt_xdate()

 pylab.bar( abscissa, numpy.random.randn( len(abscissa) ),
   width = barwidth)
 pylab.show()


 -
 This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
 Build the coolest Linux based applications with Moblin SDK  win great prizes
 Grand prize is a trip for two to an Open Source event anywhere in the world
 http://moblin-contest.org/redirect.php?banner_id=100url=/
 ___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users


-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] Control space between bars

2008-08-13 Thread Mathieu Leplatre
Hi all,

I've searched in examples and archives and could not find anything
about manual control of space between bars.

By default, the bars in the following script overlap.

So I guess the behaviour is :
specify chart width (8in) + bar width (0.8) = auto bar space

And I would like to know how to do :
specify chart width + bar space = auto bar width
specify bar space + bar width = auto chart width (fixed margins)

But I can't figure it out, especially the latter. Can
matplotlib.transforms help me about the former ?

Do you have documentation reference or some hints about that please ?
Thanks!

I am plotting a chronological bar chart like this one :

#!/usr/bin/env python
import matplotlib, pylab, numpy
import datetime

def rangedates( hourstep ):
dates = []
for d in range(1,31):
for h in range(0,24,hourstep):
dt = datetime.datetime(2008,06,d,h)
dates.append(dt)
return pylab.date2num(dates)

# Plot value every 12H
abscissa = rangedates(12)

barstep  = abscissa[1] - abscissa[0]
barspace = 0.5 * barstep
barwidth = barstep - barspace

fig = pylab.figure()
ax  = fig.add_subplot(111)
fmt = matplotlib.dates.DateFormatter('%b %d')
ax.xaxis.set_major_formatter( fmt )
fig.autofmt_xdate()

pylab.bar( abscissa, numpy.random.randn( len(abscissa) ),
   width = barwidth)
pylab.show()

-
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK  win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100url=/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users