gpt4 book ai didi

r - ggplot2 中的 geom_map 边界 - 重新审视

转载 作者:行者123 更新时间:2023-12-04 10:40:44 24 4
gpt4 key购买 nike

我在 this question 中遇到与 @Mike 类似的问题.问题是如何设置 map 中区域的轮廓颜色。

建议的解决方案是添加一个 geom_polygon绘制边界。只要绘制了整个区域,这就会起作用。当试图限制到一个子区域时,多边形被奇怪地绘制(大概是因为某些顶点被丢弃)。使用标准 geom_map例子:

# Create example data
ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))
values <- data.frame(id = ids, value = c(3, 3.1, 3.1, 3.2, 3.15, 3.5))
positions <- data.frame(
id = rep(ids, each = 4),
x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3, 0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5, 2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
)

# Plot data
ggplot(values, aes(fill = value)) +
geom_map(aes(map_id = id), map = positions) +
geom_polygon(aes(x,y,group=id), fill = NA, colour = 'red', data = positions) +
expand_limits(positions) +
ylim(0, 3)

一种可能的解决方法是使用 geom_map 中的颜色美学然后使用 scale_colour_manual 手动选择轮廓颜色, 如下:
ggplot(values, aes(fill = value)) + 
geom_map(aes(map_id = id, colour = 'white'), map = positions) +
scale_colour_manual(values=c('white')) +
expand_limits(positions) +
ylim(0, 3)

所以我有两个问题:
  • 为什么geom_polygon限制轴限制时无法正常工作?
  • 有没有比这里显示的更优雅的解决方案来为轮廓着色?

  • 下面是绘图输出。提前谢谢了。

    Did not work properly using geom_polygon
    Works but is not very elegant

    最佳答案

    我相信你是正确的,为什么它不起作用。使用 xlim 限制 x 或 y 限制或 ylim在绘图之前剪辑数据。这最终会从多边形中省略一些顶点,因此某些东西不会被绘制。

    这就是为什么有 coord_cartesian ,它允许您在不裁剪数据的情况下调整 x 和 y 范围。它将“放大”到正确的区域,而不是裁剪然后绘图。

    所以,而不是 ylim , 试试 + coord_cartesian(ylim = c(0,3)) .

    关于r - ggplot2 中的 geom_map 边界 - 重新审视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572878/

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