繁体   English   中英

在 Matplotlib 中更改颜色条的缩放比例/单位

[英]Change Scaling/Units of Colorbar in Matplotlib

我正在绘制几个 FITS 图像以及旁边的颜色条。 我主要使用 Aplpy 来处理 plot 图像,包括颜色条。 据我所知,Aplpy 确实使用/依赖 matplotlib 的绘图机制,所以如果有办法在 Aplpy 或 Matplotlib 中做我想做的事情,我认为这应该可行。

图像的默认单位为 Jy(天文单位)。 但这些值都非常小,最大值通常为 0.01 焦耳。 当我显示一个颜色条时,刻度标签在相应的单位中并且有很多零并且占用太多空间。

有什么办法可以让颜色条的单位显示为 mJy(Jy 的 1/1000)?

例如,刻度当前为:0.000、0.002、0.004,...我希望它们为:0、2、4,...

解决方案可能是缩放 FITS 图像本身,或者以某种方式调整颜色条。 反正我也不知道怎么办。。。

提前致谢。

我猜有很多选择。 其中之一是向FuncFormatter提供FuncFormatter

func = lambda x,pos: "{:g}".format(x*1000)
fmt = matplotlib.ticker.FuncFormatter(func)

plt.colorbar(..., format=fmt)

现在,我不知道Aplpy返回什么,并且该问题没有显示任何代码,因此我无法为该特定情况提供有效的解决方案。

我想出的快速而肮脏的解决方法:

  1. 制作原始 FITS 图像的副本
  2. 编辑复制图像的 header 以将通常的 BSCALE= 1.0 更改为 BSCALE= 1000.0(我使用 WCStools 中的 edhead 手动编辑标题)
  3. 使用编辑后的图像 header 作为 APLpy 的输入

结果是以 mJy 而非 Jy 为单位绘制的图像。

最好有一个合适的解决方案,最好是在 APLpy 中。 感谢您提出我现在遇到的确切问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM