gpt4 book ai didi

r - 使用 Aitoff 投影在 x 轴的 "edges"上进行 map 切割

转载 作者:行者123 更新时间:2023-12-03 14:52:52 24 4
gpt4 key购买 nike

我正在尝试使用特定投影(称为 aitoff)在 map 上绘制 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")
我希望我说得够清楚了...
非常感谢!

最佳答案

我认为剪裁首先发生的是一个已知的 issue .在 Github 问题中,hadley 说:“我认为这是一个长期存在的问题,在不久的将来我不太可能解决”
我认为有两种方法,您可以或多或少地为自己解决问题。 @Arnaud 已经提到了一种解决方案
(但两种解决方案都有缺点)

  • 添加 clip = "off"coord_map部分
  • 添加 expand = c(1.1,0)scale_x_continuous部分

  • 我为您添加了一些示例图,您可以在其中查看结果和问题。
    1. 初始版本(如果我运行你的代码):
    Initial Version
    问题:无法正确看到 (0,0) 处的点。
    2. 扩展版本:
    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), ,expand = c(1.1, 0), labels=c("","","","","","","","","")) +
    labs(x="R.A.(°)", y="Decl. (°)",title="Map of the sky")
    Expand
    现在看起来相当不错。 x 轴扩展到两侧,点 (0,0) 现在清晰可见。
    但是注意力似乎只对自然数起作用(比如 expand = c(5,0) )。对于 1.1我在我的例子中选择了情节有些不同,y 轴似乎扭曲了。
    3.带有剪辑=“关闭”的版本:
    skydata <- data.frame(RA=c(0,180,360), Dec=c(0,10,20))
    ggplot(skydata) +
    geom_point(aes(RA,Dec)) +
    coord_map(projection="aitoff", clip = "off", 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")
    Clip off
    此版本不会扩展 x 轴,但可以确保 (0,0) 处的点不会被剪掉。 y 轴绝对没有失真。但看起来不如扩展的解决方案。

    关于r - 使用 Aitoff 投影在 x 轴的 "edges"上进行 map 切割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63476128/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com