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

标签 r ggplot2 textcolor donut-chart ggrepel

我正在使用 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, 30, 59, 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", "Corey", "Sibley", "Kate"),
                n = c(10, 30, 59, 1),
                prop = c(10, 30, 59, 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, "%"), color = "white"), force_pull = 100, 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, 30, 59, 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

关于r - 如何仅在 geom_label_repel() 中更改文本颜色而不是线条颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68036507/

相关文章:

r - 获取矩阵每一列中第一次出现值的索引

r - GGplot2 geom_text() 的最小尺寸

Android - 如何更改 TimePicker 中的 textColor?

r - 如何仅在动物园对象的一列上使用 rollmean 函数?

删除重复项,同时保留 R 中的 NA

r - R中的交互式图形

r - geom_segment 箭头设置 - 头部与线宽度相同

r - 多元回归模型过滤估计的点须图

c++ - 如何将用户输入的颜色传递给 textcolor()?

android - 根据解析的 xml 值更改 TextView 文本颜色