Python和科学计算认证群组  - 讨论区

标题:想自定义刻度标签列表,照着书上试,可是搞不定

2012年02月29日 星期三 23:47

画了个图,想把y轴改成百分数的形式(例如60%)。已经把x轴标签改了,但y轴怎么都改不了:

ax1=plt.gca()
ax1.xaxis.set_ticks(ticks=[9,10,11,12])
xlabels = [u'9月',u'10月',u'11月',u'12月']
plt.xticks([9,10,11,12],xlabels) #x轴改为时间,done

a=ax1.yaxis.get_ticklabels()
ylabels=[] #自定义的标签

for nl in range(len(a)):
     lebel_temp=('%1.0f'%a[nl].get_text()+'%') #y轴的值被事先乘以了100
     ylabels.append(lebel_temp)

pos=ax1.yaxis.get_majorticklocs()
plt.yticks(pos,yla)

2012年03月01日 星期四 11:49

现在可以了,我在a=ax1.yaxis.get_ticklabels()这句话之前添加了 plt.show(),

否则a[nl].get_text()都等于'',最后y轴的标签全变成了百分号%,而没有数字

搞不懂为什么?难道要改标签就必须把图画出来吗??

2012年03月01日 星期四 11:56

最好使用FuncFormatter,书中有关于这方面的说明。

 

from matplotlib.ticker import FuncFormatter

def myfunc(x, pos=0):
    return '%1.2f''%(100*x)

ax = subplot(111)
ax.plot(x, y)
ax.xaxis.set_major_formatter(FuncFormatter(myfunc))

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号