问题描述
我正在使用 geom_label_repel(),我正在尝试将标签的文本颜色更改为白色,但将线条保持为黑色。当我尝试将颜色命令放在 aes() 之外时,它会使线条和文本变白:
在 aes() 之外使用颜色参数
library(dplyr)
library(ggplot2)
library(ggrepel)
data <- tibble(name = c("Justin","Corey","Sibley","Kate"),n = c(10,30,59,1),prop = c(10,1)) %>%
dplyr::arrange(desc(name)) %>%
dplyr::mutate(text_y = cumsum(prop)-prop/2)
my_colors <- c("#00A3AD","#FF8200","#753BBD","#6CC24A")
ggplot(data,aes(x = 2,y = prop,fill = name)) +
geom_bar(stat = "identity",color = "white") +
coord_polar(theta = "y",start = 0)+
geom_label_repel(aes(y = text_y,label = paste0(n,"\n",prop,"%")),force_pull = 100,nudge_x = 1,color = "white") +
scale_fill_manual(values = my_colors) +
theme_void() +
xlim(.5,2.5)
但是,如果我把它放在 aes() 中,它就全是……橙色?
在 aes() 中使用颜色参数
library(dplyr)
library(ggplot2)
library(ggrepel)
data <- tibble(name = c("Justin","#6CC24A")
ggplot(data,"%"),color = "white"),nudge_x = 1) +
scale_fill_manual(values = my_colors) +
theme_void() +
xlim(.5,2.5)
我想要白色文本、黑色线条,并且没有出现在第二个中的一侧的“白色”图例。 (另外,在第二个中,它使橙色标签中的文本完全消失,这是不可取的)。
解决方法
想通了!还有另一个参数--segement.color
--设置线(段)颜色。 color
和 segment.color
都应该在 geom_label_repel()
函数内设置,但在 aes()
函数之外设置:
library(dplyr)
library(ggplot2)
library(ggrepel)
my_colors <- c("#00A3AD","#FF8200","#753BBD","#6CC24A")
data <- tibble(name = c("Justin","Corey","Sibley","Kate"),n = c(10,30,59,1),prop = c(10,1)) %>%
dplyr::arrange(desc(name)) %>%
dplyr::mutate(text_y = cumsum(prop)-prop/2)
ggplot(data,aes(x = 2,y = prop,fill = name)) +
geom_bar(stat = "identity",color = "white") +
coord_polar(theta = "y",start = 0)+
geom_label_repel(aes(y = text_y,label = paste0(n,"\n",prop,"%")),force_pull = 100,nudge_x = 1,color="white",segment.color="black") +
scale_fill_manual(values = my_colors) +
theme_void() +
xlim(.5,2.5)