我正在与美国所有州和领地建立合唱团。我想用马里兰州/弗吉尼亚州沿海某处的星星代替华盛顿特区的形状。我使用以下代码生成一个星星,并使用状态名称,顶点等将其添加到我的小标题中。
star <- tribble(
~x, ~y, ~order, ~hole, ~piece, ~group, ~id,
1, 0, 1, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
0.3, -0.2, 2, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
0.3, -0.95, 3, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
-0.1, -0.375, 4, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
-0.8, -0.6, 5, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
-0.39, 0, 6, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
-0.8, 0.6, 7, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
-0.1, 0.375, 8, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
0.3, 0.95, 9, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
0.3, 0.2, 10, FALSE, 1, "Washington, D.C.", "Washington, D.C.",
1, 0, 11, FALSE, 1, "Washington, D.C.", "Washington, D.C."
) %>%
# rotate star by multiplying points by rotation matrix
mutate(long = x * cos(pi / 2) + y * -sin(pi / 2),
lat = x * sin(pi / 2) + y * cos(pi / 2)) %>%
# scale the plots big time
mutate(long = long,
lat = lat) %>%
# transpose the plot to near DC
mutate(long = long - 75,
lat = lat + 37) %>%
select(-x, -y)
这实际上有效!不幸的是,当我绘制地图时,由于coord_map(),所以投影了星星。下面是可重现示例的代码:
ggplot(star, aes(long, lat, group = group)) +
geom_polygon() +
scale_x_continuous(limits = c(-141, -55)) +
scale_y_continuous(limits = c(24, 50)) +
coord_map(projection = "albers", lat0 = 39, lat1 = 45)
这是完整图中的代码:
ccdf_map %>%
ggplot() +
geom_polygon(aes(long, lat, group = group, fill = `Job Search`), color =
"#ffffff", size = 0.25) +
geom_text(data = ccdf_labels, aes(long, lat, label = state_abbv), size = 4) +
scale_x_continuous(limits = c(-141, -55)) +
scale_y_continuous(limits = c(24, 50)) +
scale_fill_manual(values = c("#0a4c6a", "#1696d2", "#a2d4ec")) +
coord_map(projection = "albers", lat0 = 39, lat1 = 45)
我想要一颗星星,这是我的小动作的一部分,因此可以将填充与所有其他状态一起映射为美感。我希望星星投影为coord_equal(),而州投影为Albers等面积圆锥投影。我的想法是即使数据已经存储为相等,也要从Albers投影恒星中的点相等(反向投影),但是我不知道如何对恒星进行此操作,因为它是一个小点而不是形状文件。有什么想法吗?