使用 Aitoff 投影在 x 轴的“边缘”上进行地图切割

Arn*_*aud 7 r ggplot2

我正在尝试使用特定投影(称为 aitoff)在地图上绘制 ggplot2 (v3.3.2) 数据点,这对于天空图尤其有用。

这样做时,图会在 x 轴上“裁剪”,即轴的边缘位于图的外部。我尝试了一些事情(例如调整边距),但没有成功。你能帮忙让这部分情节可见吗?

这是重现问题的代码,即位于 (0,0) 的点不可见。

skydata <- data.frame(RA=c(0,180,360), Dec=c(0,10,20))
ggplot(skydata) + 
    geom_point(aes(RA,Dec)) +
    coord_map(projection="aitoff",orientation=c(90,180,0)) + 
    scale_y_continuous(breaks=(-2:2)*30,limits=c(-90,90)) + 
    scale_x_continuous(breaks=(0:8)*45,limits=c(0,360), labels=c("","","","","","","","","")) +
    labs(x="R.A.(°)", y="Decl. (°)",title="Map of the sky")
Run Code Online (Sandbox Code Playgroud)

我希望我说得够清楚了……非常感谢!

sta*_*007 0

我认为剪裁首先发生是一个已知问题。哈德利在 Github 问题中说道:“我认为这是一个长期存在的问题,我不太可能在不久的将来解决”

\n

我认为有两种方法,你或多或少可以自己解决问题。@Arnaud\n 已经提到了一种解决方案(但这两种解决方案都有缺点)

\n
    \n
  1. 添加clip = "off"coord_map

    \n
  2. \n
  3. 添加expand = c(1.1,0)scale_x_continuous

    \n
  4. \n
\n

我为您添加了一些示例图,您可以在其中看到结果和问题。

\n

1.初始版本(如果我运行你的代码):

\n

初始版本

\n

问题:无法正确看到 (0,0) 处的点。

\n

2. 扩展版本:

\n
skydata <- data.frame(RA=c(0,180,360), Dec=c(0,10,20))\nggplot(skydata) + \n  geom_point(aes(RA,Dec)) +\n  coord_map(projection="aitoff", orientation=c(90,180,0)) + \n  scale_y_continuous(breaks=(-2:2)*30,limits=c(-90,90)) + \n  scale_x_continuous(breaks=(0:8)*45,limits=c(0,360), ,expand = c(1.1, 0), labels=c("","","","","","","","","")) +\n  labs(x="R.A.(\xc2\xb0)", y="Decl. (\xc2\xb0)",title="Map of the sky")\n
Run Code Online (Sandbox Code Playgroud)\n

扩张

\n

现在看起来相当不错。x 轴向两侧扩展,(0,0) 中的点现在清晰可见。

\n

但注意力似乎只适用于自然数(例如expand = c(5,0))。为了1.1我在示例中选择的图,该图有些不同,并且 y 轴似乎扭曲了。

\n

3.带clip =“off”的版本:

\n
skydata <- data.frame(RA=c(0,180,360), Dec=c(0,10,20))\nggplot(skydata) + \n  geom_point(aes(RA,Dec)) +\n  coord_map(projection="aitoff", clip = "off", orientation=c(90,180,0)) + \n  scale_y_continuous(breaks=(-2:2)*30,limits=c(-90,90)) + \n  scale_x_continuous(breaks=(0:8)*45,limits=c(0,360), labels=c("","","","","","","","","")) +\n  labs(x="R.A.(\xc2\xb0)", y="Decl. (\xc2\xb0)",title="Map of the sky")\n
Run Code Online (Sandbox Code Playgroud)\n

剪掉

\n

此版本不会扩展 x 轴,但它确保 (0,0) 处的点不会被剪掉。y 轴绝对没有变形。但看起来不如使用扩展的解决方案好。

\n