When I run the following script:

import numpy as N

from pylab import *

t = N.arange[0,8*N.pi, 0.1]

y = N.sin(t)

figure()

plot(t,y)

xticks(N.arange(0,8*N.pi, N.pi))

figure()

semilogx(t,y)

xticks(N.arange(0,8*N.pi, N.pi))

The first plot will work fine, and set the x-ticks to be multiples of

pi, as desired.

However, the second plot does not work. I have verified this is the

case whenever log axes are used: you can't then set the x-ticks or

labels.

Is this a bug or a design feature? I am interested in doing this since

I am plotting FFTs on a log-log plot, and wish to label the x-axis

('100 kHz', '1 MHz', etc...) and the y-axis in dB.

If it helps, there are two errors that are given. The first is when

attempting calling the xticks function, which throws an exception:

C:\Python24\lib\site-packages\matplotlib\figure.py in draw(self, renderer)

527

528 # render the axes

--> 529 for a in self.axes: a.draw(renderer)

530

531 # render the figure text

C:\Python24\lib\site-packages\matplotlib\axes.py in draw(self, renderer, infram

)

1407 renderer.open_group('axes')

1408

-> 1409 try: self.transData.freeze() # eval the lazy objects

1410 except ValueError:

1411 print >> sys.stderr, 'data freeze value error', self.get_po

ition(), self.dataLim.get_bounds(), self.viewLim.get_bounds()

ValueError: Domain error on eval_scalars in Transformation::freeze

The second is then when the mouse is moved over the plot, or we try to

update the plot, and the exceptions are:

File "C:\Python24\lib\site-packages\matplotlib\axes.py", line 633,

in format_coord

xs = self.format_xdata(x)

File "C:\Python24\lib\site-packages\matplotlib\axes.py", line 615,

in format_xdata

val = func(x)

File "C:\Python24\lib\site-packages\matplotlib\ticker.py", line 401,

in format_data

value = strip_math(self.__call__(value))

File "C:\Python24\lib\site-packages\matplotlib\ticker.py", line 471,

in __call__

fx = math.log(x)/math.log(b)

TypeError: a float is required

Thanks,

Josh