好吧,我完全被一个python问题困住了。我认为过于详细地描述这个问题是令人困惑的,所以我将总结问题,然后展示我的代码。在
我已经创建了一个imshow图,在上面,我想绘制一个常规的直线图。Y轴是不同的,这很好,但是X轴应该是相同的。在
它几乎可以工作,除了缩放:
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_xlabel('MJD',fontsize=14)
ax1.set_ylabel('Bin Number',fontsize=14)
mjdaxis=np.linspace(0,bad_removed_mjd.shape[0]-1,20).astype('int')
ax1.set_xticks(mjdaxis,[int(np.floor(bad_removed_mjd[i])) for i in mjdaxis])
ax1.imshow(residuals, aspect="auto")
ax2 = ax1.twinx()
ax2.set_ylabel('Pdot (s-2)',fontsize=14)
ax2.plot(pdot[8:,0],pdot[8:,1])
plt.show()
现在发生的是imshow图在x轴上的值0-60之间被压缩。这是因为它们现在被标绘为指数0,1,2。。。。我需要他们的x轴值对应于列表中的值'bad\mjd_removed'55304,55365,55401。。。。当我有一个单独的imshow情节的时候,这很好用。在
以下是imshow图本身的图片,然后当我试图在其上添加线条图时:
在第二张图上,x轴上0左右的细线是压缩在0和60之间的图片1的全部。在
在这个问题上我将非常感激任何帮助。谢谢您。在
您可以使用imshow的extend=关键字,例如
或者类似的事情。 但是你也应该记住,如果mjdaxis记号之间的间隙不是恒定的,你的直线图不会直接对应于图像,因为imshow图不会以与直线图相同的方式拉伸
您可以使用
^{pr2}$extent
kwarg将imshow绘图放在正确的位置。另外,如果您也这样做了,那么您应该能够让matplotlib自动处理轴记号。在相关问题 更多 >
编程相关推荐