【发布时间】:2017-09-01 16:31:02
【问题描述】:
我想在下面的(否则)空图中标记为“10kpc”的图中添加比例指示器。所以基本上,轴使用一个测量单位,我想用不同的单位表示图中的长度。它必须具有与以下相同的样式,即 |----|上面有文字的栏。
matplotlib 中是否有一种方便的方法可以做到这一点,还是我必须画三条线(两条小的垂直线,一条水平线)并添加文本?一个理想的解决方案甚至不需要我在数据维度中设置坐标,即我只是沿着horizontalalignment='left', verticalalignment='bottom', transform=ax.transAxes 的行说一些东西,并且只指定数据坐标中的宽度。
我与annotate() 和arrow() 以及他们的文档争吵了一会儿,直到我得出结论,它们并不完全有用,但我可能错了。
编辑:
下面的代码是最接近的,我到目前为止。我仍然不喜欢在数据坐标系中指定 x 坐标。我唯一想在数据中指定的是条形的宽度。其余部分应放置在绘图系统中,理想情况下,条形应相对于文本放置(上方几个像素)。
import matplotlib.pyplot as plt
import matplotlib.transforms as tfrms
plt.imshow(somedata)
plt.colorbar()
ax = plt.gca()
trans = tfrms.blended_transform_factory( ax.transData, ax.transAxes )
plt.errorbar( 5, 0.06, xerr=10*arcsecperkpc/2, color='k', capsize=5, transform=trans )
plt.text( 5, 0.05, '10kpc', horizontalalignment='center', verticalalignment='top', transform=trans )
【问题讨论】:
-
会的,但我必须匹配上图的风格。所以它看起来就像那样
-
您是否考虑过使用水平的
errorbar和annotate? -
@con-f-use 我很高兴经过一个小时的搜索找到了你的帖子,它真的很有帮助。 @mommermi 您能否提供一些带有
errorbar和annotate的示例代码,这将对未来的读者有所帮助!