如何仅在 geom_label_repel() 中更改文本颜色而不是线条颜色

问题描述

我正在使用 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)

enter image description here

但是,如果我把它放在 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)

我想要白色文本、黑色线条,并且没有出现在第二个中的一侧的“白色”图例。 (另外,在第二个中,它使橙色标签中的文本完全消失,这是不可取的)。

enter image description here

解决方法

想通了!还有另一个参数--segement.color--设置线(段)颜色。 colorsegment.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)

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...