记号、记号标签和网格线#
对于下一页中的示例,我们从中介绍的示例开始 使用世界坐标初始化轴 .
坐标对象#
虽然对于许多图像,坐标轴与像素轴对齐,但情况并非总是如此,尤其是在世界坐标系或具有高曲率的坐标系中有任何旋转时,x轴和y轴与实际坐标之间的耦合变得不那么明确。
所以不是指 x
和 y
与Matplotlib一样,我们使用专门的对象来访问坐标。绘图中使用的坐标可以使用 coords
轴的属性。作为提醒,如果使用pyplot接口,则在创建子批次时可以获取轴的引用::
ax = plt.subplot()
或者你可以打电话 plt.gca()
随时获取当前活动轴:
ax = plt.gca()
如果使用Matplotlib的面向对象接口,则应该已经有了对轴的引用。
一旦有了Axis对象,可以通过索引访问坐标:
lon = ax.coords[0]
lat = ax.coords[1]
或者,对于通用坐标系,按其名称:
lon = ax.coords['glon']
lat = ax.coords['glat']
在这个例子中,图像是在银河系的坐标系中,所以这些坐标被称为 glon
和 glat
. 对于赤道坐标系下的图像,可以使用 ra
和 dec
. 名称仅适用于特定的天体坐标系-对于所有其他坐标系,应使用坐标索引 (0
或 1
)
每个坐标都是 CoordinateHelper
标签,可以用来控制坐标轴和坐标轴的标签。
坐标轴标签#
轴标签可以使用 set_axislabel()
方法:
lon.set_axislabel('Galactic Longitude')
lat.set_axislabel('Galactic Latitude')

轴标签相对于轴的填充也可以通过使用 minpad
选项。的默认值 minpad
为1,表示轴标签文本的字体大小。也允许负值。
lon.set_axislabel('Galactic Longitude', minpad=0.3)
lat.set_axislabel('Galactic Latitude', minpad=-0.4)

备注
请注意,如中所示 入门 ,也可以使用 plt.xlabel
或 ax.set_xlabel
表示法,用于设置轴标签(如果它们确实出现在x和y轴上)。
刻度标签格式#
可以使用描述格式的字符串指定记号标签的格式:
lon.set_major_formatter('dd:mm:ss.s')
lat.set_major_formatter('dd:mm')

格式字符串的语法如下:
格式 |
结果 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
所有的 h...
, d...
, m...
, and s...
格式可用于角度坐标轴,而 x...
格式或有效的Python格式(请参见 String Formatting Operations )应用于非角度坐标轴。
角度坐标刻度标签的分隔符也可以通过指定字符串或元组来设置。
lon.set_separator(('d', "'", '"'))
lat.set_separator(':-s')

刻度/标签间距和属性#
记号/记号标签的间距应该有一个合理的默认值,但是您可能希望能够手动指定间距。可以使用 set_ticks()
方法。可以使用不同的选项:
手动设置勾号位置为Astropy
Quantity
::from astropy import units as u lon.set_ticks([242.2, 242.3, 242.4] * u.degree)
也可以将记号之间的间距设置为Astropy
Quantity
::lon.set_ticks(spacing=5. * u.arcmin)
设置刻度的近似数量:
lon.set_ticks(number=4)
对于角轴,将间距指定为Astropy Quantity
避免舍入错误。这个 set_ticks()
方法还可以用于设置记号的外观(颜色和大小),方法使用 color=
和 size=
选项。
这个 set_ticklabel()
方法可用于更改刻度标签的设置,如颜色、字体、大小等:
lon.set_ticklabel(color='red', size=12)
此外,此方法还有一个选项 exclude_overlapping=True
以防止显示重叠的记号标签。
我们可以将此应用于前面的示例:
from astropy import units as u
lon.set_ticks(spacing=10 * u.arcmin, color='yellow')
lat.set_ticks(spacing=10 * u.arcmin, color='orange')
lon.set_ticklabel(exclude_overlapping=True)
lat.set_ticklabel(exclude_overlapping=True)

小滴答声#
WCSAxes默认情况下不显示小刻度,但可以使用 display_minor_ticks()
方法。次要刻度的默认频率为5,但也可以指定此频率。
lon.display_minor_ticks(True)
lat.display_minor_ticks(True)
lat.set_minor_frequency(10)

记号、记号标签和坐标轴标签位置#
默认情况下,第一个坐标的记号和坐标轴标签显示在x轴上,第二个坐标的记号和坐标轴标签显示在y轴上。此外,两个坐标的记号显示在所有轴上。可以使用 set_ticks_position()
和 set_ticklabel_position()
方法,每个方法都接受一个字符串,该字符串可以包含 l
, b
, r
或 t
(指示记号或记号标签应分别显示在左、下、右或上轴上):
lon.set_ticks_position('bt')
lon.set_ticklabel_position('bt')
lon.set_axislabel_position('bt')
lat.set_ticks_position('lr')
lat.set_ticklabel_position('lr')
lat.set_axislabel_position('lr')

我们可以使用以下方法设置默认值:
lon.set_ticks_position('all')
lon.set_ticklabel_position('b')
lon.set_axislabel_position('b')
lat.set_ticks_position('all')
lat.set_ticklabel_position('l')
lat.set_axislabel_position('l')

在带有椭圆边框的绘图上,支持三个交替的记号位置: c
对于外部圆形或椭圆形边界, h
对于水平轴(通常是椭圆的长轴),以及 v
对于垂直轴(通常是椭圆的短轴)。
隐藏记号和记号标签#
有时隐藏蜱虫和蜱虫标签是可取的。一个常见的场景是,WCSAxes在子图网格中使用,而tick标签在行或列之间是冗余的。记号标签和记号可以用隐藏 set_ticklabel_visible()
和 set_ticks_visible()
方法分别为:
lon.set_ticks_visible(False)
lon.set_ticklabel_visible(False)
lat.set_ticks_visible(False)
lat.set_ticklabel_visible(False)
lon.set_axislabel('')
lat.set_axislabel('')

我们可以使用以下方法再次恢复记号和记号标签:
lon.set_ticks_visible(True)
lon.set_ticklabel_visible(True)
lat.set_ticks_visible(True)
lat.set_ticklabel_visible(True)
lon.set_axislabel('Galactic Longitude')
lat.set_axislabel('Galactic Latitude')

坐标网格#
由于坐标网格的属性链接到刻度和标签的属性,因此网格线属于上述坐标对象。可以一次绘制所有坐标的栅格:
ax.coords.grid(color='white', alpha=0.5, linestyle='solid')

备注
如果使用pyplot接口,还可以使用 plt.grid()
.
或者,您可以为不同的坐标使用不同的颜色绘制网格。例如,可以使用以下选项显示格线:黄线表示RA,橙线表示赤道:
lon.grid(color='yellow', alpha=0.5, linestyle='solid')
lat.grid(color='orange', alpha=0.5, linestyle='solid')

内部记号和记号标签#
矩形框架的记号和记号标签的默认位置是框架的边缘。要在地块内部放置刻度或刻度标签,需要添加一条“可刻度”网格线。在这里,我们创建一个名为 i
在恒定经度-10角分,然后指定它应该有纬度刻度。
lon.add_tickable_gridline('i', -10*u.arcmin)
lat.set_ticks_position('li')
lat.set_ticklabel_position('li')
