R ggplot2控制图例列
我想使用R ggplot2控制图例列,r,ggplot2,R,Ggplot2,我想使用ggplot命令guides(fill=guide\u图例(ncol=3))在图例中的三列中显示我的离散类别 但理想情况下,我想 (强)>以一种有意义的方式组织图例键列< /强>(下面是所有否定类别左,0个单独在中间,右列中所有正值) b) 理想情况下,每列都有一个列标题(例如“正”、“无”、“负”) 目前,正如您所看到的,这些列只是按照因子级别的顺序组织的。 有什么办法吗 非常感谢你的帮助 library(tidyverse) map_data("world")
ggplot
命令guides(fill=guide\u图例(ncol=3))
在图例中的三列中显示我的离散类别
但理想情况下,我想
(强)>以一种有意义的方式组织图例键列< /强>(下面是所有否定类别左,0个单独在中间,右列中所有正值)
b) 理想情况下,每列都有一个列标题(例如“正”、“无”、“负”) 目前,正如您所看到的,这些列只是按照因子级别的顺序组织的。 有什么办法吗 非常感谢你的帮助library(tidyverse)
map_data("world") %>%
distinct(region) -> regions
set.seed(1)
regions %>%
mutate(value = sample(-3:3,rep(nrow(regions)),replace=TRUE),
value = factor(value)) %>%
full_join(map_data("world"),by="region") -> world
ggplot(world) +
geom_polygon(aes(x=long,y=lat,group=group,fill=value)) +
guides(fill=guide_legend(ncol=3)) +
coord_quickmap() +
theme_void()+
scale_fill_brewer(palette = "RdBu")+
theme(legend.position = "bottom")
您可以尝试
ggnewscale
软件包的new\u scale\u fill
功能
library(ggnewscale)
pal_rdbu <- scales::brewer_pal(palette = "RdBu")(7)
ggplot(world) +
geom_polygon(aes(x=long,y=lat,group=group,fill=value)) +
coord_quickmap() +
theme_void()+
scale_fill_manual(name = "positive", breaks = 3:1,
values=c(NA,NA,NA,NA,pal_rdbu[5:7]))+
new_scale_fill() +
geom_polygon(aes(x=long,y=lat,group=group,fill=value)) +
scale_fill_manual( name = "neutral", breaks = 0,
values=c(NA,NA,NA,pal_rdbu[4],NA,NA,NA)) +
new_scale_fill() +
geom_polygon(aes(x=long,y=lat,group=group,fill=value)) +
scale_fill_manual( name = "negative", breaks = -1:-3,
values=c(pal_rdbu[1:3],NA,NA,NA,NA)) +
theme(legend.position = "bottom",
legend.direction = 'vertical')
库(ggnewscale)
pal_rdbu为了使列对齐,您可以在0之前和之后向因子添加空级别,以强制1和2到第三列。你必须使用刻度填充手册并在那些额外的级别上使用NA。