具有 2 个数据集的 ggplot2 映射中的图例标签
Legend label in ggplot2 mapping with 2 datasets
我确定以前有人问过这个问题,但我在搜索中找不到。我有两个数据集,我打算使用 ggplot2
创建地图。我在让图例按我想要的方式出现时遇到问题。
示例代码:
#First dataset
lat<-as.numeric(c(42.279594, 37.335480, 42.652580, 42.331429, 32.897480, 40.785091))
lon<-as.numeric(c(-83.732124, -121.893028,-73.756233, -83.045753, -97.040443, -73.968285))
Location<-c("Ann Arbor, MI","San Joke, CA", "Albany, NY",
"Detroit, MI", "Dallas, TX","New York, NY")
Incidents<-as.numeric(c(21, 12, 9, 6, 5, 5))
df1<-cbind.data.frame(Location, Incidents, lat, lon)
#Second dataset
Location<-c("New York, NY","Los Angeles, CA", "Queens, NY",
"Minneapolis, MN", "Austin, TX","Bronx, NY")
lat<-as.numeric(c(40.71278, 34.05223, 40.72822, 44.97775, 30.26715, 40.84478))
lon<-as.numeric(c(-74.00594, -118.24368,-73.79485, -93.26501, -97.74306, -73.86483))
df2<-cbind.data.frame(Location, lat, lon)
#Map
library(ggplot2)
states <- map_data("state")
states <- states[order(states$order), ]
ggplot() +
geom_polygon(data=states, aes(long, lat, group=group),
size=0.1, fill="black", color="white", alpha=0.75) +
geom_point(data=df1, aes(lon, lat,size= Incidents), color="red", alpha =0.5) +
geom_point(data=df2, aes(lon, lat), color="green", alpha =0.5) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="bottom",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())
结果如下图:
问题是它缺少绿色的图例信息,这是有道理的,因为我没有将任何东西映射到美学上。但是我 运行 遇到了问题:
在这里,我将 color="green"
添加到 aes(lon, lat)
中,用于 df2
和 scale_color_manual(values = "green")
ggplot() +
geom_polygon(data=states, aes(long, lat, group=group),
size=0.1, fill="black", color="white", alpha=0.75) +
geom_point(data= df, aes(lon, lat,size= Incidents), color="red", alpha =0.5) +
geom_point(data=df2, aes(lon, lat, color="green"), alpha =0.5) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="bottom",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())
我的问题是图例中包含单词 "colour" 和 "green"。理想情况下,我希望单词 "colour" 被替换为单词 "places" 并且单词 "green" 被完全删除。我尝试了以下更改:
scale_color_manual(values = "green", label="places")
但这只是用 "green" 替换了 "places"。我希望将 "colour" 一词替换为 "places" 并且我不希望图例中的圆圈后面有任何标签。所以我尝试了以下方法。
places<-c("green","green","green","green","green","green")
df2<-cbind.data.frame(df2, green)
Location lat lon places
1 Ann Arbor, MI 42.27959 -83.73212 green
2 San Joke, CA 37.33548 -121.89303 green
3 Albany, NY 42.65258 -73.75623 green
4 Detroit, MI 42.33143 -83.04575 green
5 Dallas, TX 32.89748 -97.04044 green
6 New York, NY 40.78509 -73.96828 green
ggplot() +
geom_polygon(data=states, aes(long, lat, group=group),
size=0.1, fill="black", color="white", alpha=0.75) +
geom_point(data= df, aes(lon, lat,size= Incidents), color="red", alpha =0.5) +
geom_point(data=df2, aes(lon, lat, color=places), alpha =0.5) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="bottom",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())+ scale_color_manual(values = "green")
这让我有点明白了。如您所见,"colour" 已被 "places" 取代,但是,"green" 仍然存在。
尝试 scale_color_manual(values = "")
出现以下错误:
Error in grDevices::col2rgb(colour, TRUE) : invalid color name ''
另外请注意,我的两个点数据集包含不同类型的数据。对于一个依赖于变量大小来确定圆大小的数据集,在另一个数据集中,我只是简单地映射独立于任何其他决定大小的变量的位置。非常感谢任何帮助。
像这样的东西(基于答案here)应该有效:
ggplot() +
geom_polygon(data=states, aes(long, lat, group=group),
size=0.1, fill="black", color="white", alpha=0.75) +
geom_point(data=df1, aes(lon, lat,size= Incidents), color="red", alpha =0.5) +
geom_point(data=df2, aes(lon, lat, color="Places"), alpha =0.5) +
scale_color_manual(name = "Places", values = c("Places" = "green"), labels = c("")) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="bottom",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())
为了强制对 Places 进行美学映射,我将其放在 aes()
中并在 scale_color_manual()
中指定了映射。
我确定以前有人问过这个问题,但我在搜索中找不到。我有两个数据集,我打算使用 ggplot2
创建地图。我在让图例按我想要的方式出现时遇到问题。
示例代码:
#First dataset
lat<-as.numeric(c(42.279594, 37.335480, 42.652580, 42.331429, 32.897480, 40.785091))
lon<-as.numeric(c(-83.732124, -121.893028,-73.756233, -83.045753, -97.040443, -73.968285))
Location<-c("Ann Arbor, MI","San Joke, CA", "Albany, NY",
"Detroit, MI", "Dallas, TX","New York, NY")
Incidents<-as.numeric(c(21, 12, 9, 6, 5, 5))
df1<-cbind.data.frame(Location, Incidents, lat, lon)
#Second dataset
Location<-c("New York, NY","Los Angeles, CA", "Queens, NY",
"Minneapolis, MN", "Austin, TX","Bronx, NY")
lat<-as.numeric(c(40.71278, 34.05223, 40.72822, 44.97775, 30.26715, 40.84478))
lon<-as.numeric(c(-74.00594, -118.24368,-73.79485, -93.26501, -97.74306, -73.86483))
df2<-cbind.data.frame(Location, lat, lon)
#Map
library(ggplot2)
states <- map_data("state")
states <- states[order(states$order), ]
ggplot() +
geom_polygon(data=states, aes(long, lat, group=group),
size=0.1, fill="black", color="white", alpha=0.75) +
geom_point(data=df1, aes(lon, lat,size= Incidents), color="red", alpha =0.5) +
geom_point(data=df2, aes(lon, lat), color="green", alpha =0.5) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="bottom",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())
结果如下图:
问题是它缺少绿色的图例信息,这是有道理的,因为我没有将任何东西映射到美学上。但是我 运行 遇到了问题:
在这里,我将 color="green"
添加到 aes(lon, lat)
中,用于 df2
和 scale_color_manual(values = "green")
ggplot() +
geom_polygon(data=states, aes(long, lat, group=group),
size=0.1, fill="black", color="white", alpha=0.75) +
geom_point(data= df, aes(lon, lat,size= Incidents), color="red", alpha =0.5) +
geom_point(data=df2, aes(lon, lat, color="green"), alpha =0.5) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="bottom",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())
我的问题是图例中包含单词 "colour" 和 "green"。理想情况下,我希望单词 "colour" 被替换为单词 "places" 并且单词 "green" 被完全删除。我尝试了以下更改:
scale_color_manual(values = "green", label="places")
但这只是用 "green" 替换了 "places"。我希望将 "colour" 一词替换为 "places" 并且我不希望图例中的圆圈后面有任何标签。所以我尝试了以下方法。
places<-c("green","green","green","green","green","green")
df2<-cbind.data.frame(df2, green)
Location lat lon places
1 Ann Arbor, MI 42.27959 -83.73212 green
2 San Joke, CA 37.33548 -121.89303 green
3 Albany, NY 42.65258 -73.75623 green
4 Detroit, MI 42.33143 -83.04575 green
5 Dallas, TX 32.89748 -97.04044 green
6 New York, NY 40.78509 -73.96828 green
ggplot() +
geom_polygon(data=states, aes(long, lat, group=group),
size=0.1, fill="black", color="white", alpha=0.75) +
geom_point(data= df, aes(lon, lat,size= Incidents), color="red", alpha =0.5) +
geom_point(data=df2, aes(lon, lat, color=places), alpha =0.5) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="bottom",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())+ scale_color_manual(values = "green")
这让我有点明白了。如您所见,"colour" 已被 "places" 取代,但是,"green" 仍然存在。
尝试 scale_color_manual(values = "")
出现以下错误:
Error in grDevices::col2rgb(colour, TRUE) : invalid color name ''
另外请注意,我的两个点数据集包含不同类型的数据。对于一个依赖于变量大小来确定圆大小的数据集,在另一个数据集中,我只是简单地映射独立于任何其他决定大小的变量的位置。非常感谢任何帮助。
像这样的东西(基于答案here)应该有效:
ggplot() +
geom_polygon(data=states, aes(long, lat, group=group),
size=0.1, fill="black", color="white", alpha=0.75) +
geom_point(data=df1, aes(lon, lat,size= Incidents), color="red", alpha =0.5) +
geom_point(data=df2, aes(lon, lat, color="Places"), alpha =0.5) +
scale_color_manual(name = "Places", values = c("Places" = "green"), labels = c("")) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="bottom",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
plot.background=element_blank())
为了强制对 Places 进行美学映射,我将其放在 aes()
中并在 scale_color_manual()
中指定了映射。