[英]R Adding Legend to ggplot
我正在尝试创建一个图例来表示该图是如何进行颜色编码的。 然而,这个传说并没有出现。
这是否与当前情节已经占据了整个空间有关?
下面是我创建绘图的代码(并尝试添加图例):
cols <- c("50 miles"="#B10026","100 miles"="#FC4E2A","150 miles"="#FEB24C", "200 miles"="#FFEDA0")
hurricane_plot <- ggplot(data = US_subset_counties) +
geom_polygon(mapping = aes(x = long, y = lat, group = group), size = 0.2, color="gray", fill=NA) +
geom_polygon(data=counties_200, aes(x = long, y = lat, group = group), size = 0.2, fill="#FFEDA0") +
geom_polygon(data=counties_150, aes(x = long, y = lat, group = group), size = 0.2, fill="#FEB24C") +
geom_polygon(data=counties_100, aes(x = long, y = lat, group = group), size = 0.2, fill="#FC4E2A") +
geom_polygon(data=counties_50, aes(x = long, y = lat, group = group), size = 0.2, fill="#B10026") +
geom_polygon(data=US_subset_states, aes(x = long, y = lat, group = group), size = 0.2, color = "black", fill=NA) +
theme_bw() +
theme(panel.background = element_blank()) +
scale_colour_manual(name="Distance From Radius",values=cols)
hurricane_plot
提前致谢!
编辑:
在@Ben 发表评论后,我尝试将 fill 放入 aes 无济于事。 但是,当我将填充更改为 col 并使用指南时,这是我得到的结果:
如何将框和标签的颜色更改为上面的 cols 矢量,有没有办法删除我的绘图上的边框颜色?
这是我更新的代码:
hurricane_plot <- ggplot(data = US_subset_counties) +
geom_polygon(mapping = aes(x = long, y = lat, group = group), size = 0.2, color="gray", fill=NA) +
geom_polygon(data=counties_200, aes(x = long, y = lat, group = group, color="#FFEDA0"), size = 0.2, fill="#FFEDA0") +
geom_polygon(data=counties_150, aes(x = long, y = lat, group = group, color="#FEB24C"), size = 0.2, fill="#FEB24C") +
geom_polygon(data=counties_100, aes(x = long, y = lat, group = group, color="#FC4E2A"), size = 0.2, fill="#FC4E2A") +
geom_polygon(data=counties_50, aes(x = long, y = lat, group = group, color="#B10026"), size = 0.2, fill="#B10026") +
geom_polygon(data=US_subset_states, aes(x = long, y = lat, group = group), size = 0.2, color = "black", fill=NA) +
theme_bw() + theme(panel.background = element_blank()) +
guides(color=guide_legend("Distance From Radius"))
@艾伦-
这是一个可重复的示例,说明您在对美国州数据进行子集化后可能需要什么。 它像您所做的那样使用cols
, fill
aes 和scale_fill_manual
。 让我知道这是否是您的想法,希望对您有所帮助。
library(maps)
library(ggplot2)
us_states <- map_data("state")
states1 <- subset(us_states, region %in% c("california", "oregon", "washington"))
states2 <- subset(us_states, region %in% c("illinois", "indiana", "iowa"))
states3 <- subset(us_states, region %in% c("new york", "massachusetts", "connecticut"))
cols <- c("West"="#B10026","Midwest"="#FC4E2A","Northeast"="#FEB24C")
state_plot <- ggplot(data = us_states) +
geom_polygon(data=us_states, aes(x = long, y = lat, group = group), size = 0.2) +
geom_polygon(data=states1, aes(x = long, y = lat, group = group, fill="West"), size = 0.2) +
geom_polygon(data=states2, aes(x = long, y = lat, group = group, fill="Midwest"), size = 0.2) +
geom_polygon(data=states3, aes(x = long, y = lat, group = group, fill="Northeast"), size = 0.2) +
theme_bw() +
theme(panel.background = element_blank()) +
scale_fill_manual(name="Area of Country", values=cols)
state_plot
这是一个相关的方法,但简化了一点:
library(maps)
library(ggplot2)
library(tidyverse)
us_states <- map_data("state")
cols <- c("West"="#B10026","Midwest"="#FC4E2A","Northeast"="#FEB24C")
us_states <- us_states %>%
mutate(region_group = case_when(
region %in% c("california", "oregon", "washington") ~ "West",
region %in% c("illinois", "indiana", "iowa") ~ "Midwest",
region %in% c("new york", "massachusetts", "connecticut") ~ "Northeast",
TRUE ~ NA_character_
))
state_plot <- ggplot(data = us_states, aes(x = long, y = lat, group = group), size = 0.2) +
geom_polygon(aes(fill = region_group)) +
theme_bw() +
theme(panel.background = element_blank()) +
scale_fill_manual(name="Area of Country", values = cols)
state_plot
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.