热门话题

Php 研究室

Help!!!! with share axes    作者:hopefullin发表于2010-01-05 23:57:36

	   

求助!!!
我编了一个小程序,希望一个图片和两个plot共享同一个坐标轴,试了很多方法,如sharex, sharey, twinx(), twiny(),始终达不到我想要的效果。如twinx()虽然可以共享x坐标轴,但是y坐标轴的起始点与源y坐标轴的起始点不重合。代码如下:
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.cm as cm
import numpy as np

from matplotlib.ticker import NullFormatter, NullLocator

XNUM = 1220
YNUM = 1620
nullfmt = NullFormatter()

fig = plt.figure()

left, width = 0.1, 0.65
bottom, height = 0.1, 0.65
rect = [left, bottom, width, height]

ax = fig.add_axes(rect)
axHistx = ax.twinx()
axHisty = ax.twiny()

x = np.empty((XNUM,YNUM))
x.flat = np.arange(YNUM)*2*np.pi/1060.0
y = np.empty((YNUM,XNUM))
y.flat = np.arange(XNUM)*2*np.pi/800.0
y = np.transpose(y)
z = np.fabs(np.sin(x)/2. + np.cos(y)/2.)

im = ax.imshow( z, cmap=cm.jet, interpolation='bilinear')
fig.colorbar(im, ticks=[0, 1])

yproject = [0.]*XNUM
for i in range(0, XNUM):
for j in range (0, YNUM):
yproject[i] += z[i][j]
yproject[i] /= float(XNUM)

xproject = [0.]*YNUM
zt = np.transpose(z)
for i in range(0, YNUM):
for j in range (0, XNUM):
xproject[i] += zt[i][j]
xproject[i] /= float(YNUM)

print np.max(xproject),np.max(yproject)
print np.min(xproject),np.min(yproject)

binwidth = 1

xbins = np.arange(0, YNUM, binwidth)
ybins = np.arange(0, XNUM, binwidth)

axHistx.plot(xbins, xproject, linewidth=1)
axHisty.plot(yproject, ybins, linewidth=1)

axHistx.set_ylim([0,2])
axHisty.set_xlim([0,3])

plt.show()

万分感谢!!!!

回复主题
Copyright © 2008-2010 版权所属:中国Python联盟 www.okpython.com
京ICP备08012290号 村长QQ:81356625 E-mail:xieaotian@163.com