2017-04-01 34 views
1

我目前尝试在python2.7代码中修改一个绘图。该图来自辐射transfert代码(我不能修改),输出是一个类类型与方法:对非类型对象使用颜色条

plot_image(wavelength0, overplot=False, inclination=None, cmap=None, 
      ax=None, axes_units='AU', polarization=False, polfrac=False, 
      psf_fwhm=None, vmin=None, vmax=None, dynamic_range=1000000.0) 

更多信息here

所以,当我把plt.title()plt.savefig()就在这之后,我打电话给各自的方法,剧情的标题发生了变化,剧情被保存下来,如预期的那样!

但是,我没有找到一个方法来做到这一点两件事情:

  1. 添加颜色条
  2. 跟踪表面对数刻度

,因为没有参数在该方法允许做到这一点。
当我尝试类似plt.colorbar(fig)fig=res.plot_image(...)(使用res类,辐射传递代码的输出)时,错误表示fig不是可映射对象(似乎是逻辑)。

任何想法可以帮助我吗?希望我给你足够的信息。

对不起,我的英语

Lo_du

+0

'plot_image'的返回类型是什么?你能报告什么'未知= res.plot_image(...)''打印类型(未知)'的结果? – ImportanceOfBeingErnest

+0

[来自'plot_image'函数的代码](https://github.com/cpinte/mcfost-python/blob/master/mcfost/plotting.py)似乎非常直截了当,所以也可以很容易地复制和适应需求。 – ImportanceOfBeingErnest

回答

0

如果res.plot_image(...)只绘制一个图像到一个轴,该解决方案获得彩条可能是相当容易的。

import numpy as np 
import matplotlib.pyplot as plt 

#.... some code 

res.plot_image(...) 

im, = plt.gca().get_images() 

plt.colorbar(im) 

plt.show()