如何在 R 中的 ggplot2 中更改 geom_text 中的字体颜色?

Posted

技术标签:

【中文标题】如何在 R 中的 ggplot2 中更改 geom_text 中的字体颜色?【英文标题】:How to change font color in geom_text in ggplot2 in R? 【发布时间】:2017-05-23 08:11:59 【问题描述】:

我正在使用 geom_bar 在 ggplot2 中生成一些基本的条形图。我希望在每个条形上方以相同颜色列出数字,并且我正在使用 geom_text。我正在使用scale_fill_manual(values = alpha(c("#000000", "#FF5733"))) 填充这些条形图。我遇到的问题是条形上方的文本没有更改为自定义颜色。保留默认的 R 颜色。

library(ggplot2)
Area <- c("Option1", "Option2", "Option3")
Count <- c(193, 56, 4,240, 10, 25)
Type <- c("car", "car", "car", "bike", "bike", "bike")
p <- data.frame(Area, Count, Type)

ggplot(p, aes(x=Area, y=Count, color=Type)) + 
        geom_bar(stat="identity", position="dodge", aes(fill=Type), color="black")  +
        scale_fill_manual(values = alpha(c("#000000", "#FF5733"))) +
        geom_text(aes(label=Count), position=position_dodge(width = 0.9), vjust=-0.40)

我尝试了以下方法无济于事:

    在某一时刻,我决定如果我可以让文本变黑,我会接受它并继续前进,但是当我这样做时,定位失败并将两个文本居中以一个“选项”而不是保留文本在他们各自的栏上。

    geom_text(aes(label=Count), color="black", position=position_dodge(width = 0.9), vjust=-0.40)

    然后我尝试了这个:

    geom_text(aes(label=Count, color=c("#000000", "#FF5733")), position=position_dodge(width = 0.9), vjust=-0.40)

我在此调整中收到以下错误:错误:美学必须是长度 1 或与数据相同 (6):标签、颜色、x、y

我认为这是因为有 6 个条形,但只指定了 2 种颜色。但是,当我再添加 4 次颜色时,它就离我想要的更远了。

我尝试发布图片,但我还没有足够的积分!对不起!

感谢您提供的所有帮助。我正在运行 RStudio:

R 版本 3.2.3 (2015-12-10) 平台:x86_64-apple-darwin13.4.0(64位) 运行于:OS X 10.11.6 (El Capitan) [1] ggplot2_2.1.0

和平。

【问题讨论】:

【参考方案1】:

尝试将colour 选项添加到geom_text 美学映射,并将您的自定义颜色分配给Typescale_colour_manual 的两个因子水平

ggplot(p, aes(x=Area, y=Count, color=Type)) + 
        geom_bar(stat="identity", position="dodge", aes(fill=Type), color="black")  +
    scale_fill_manual(values = alpha(c("#000000", "#FF5733"))) +
    geom_text(aes(label=Count, colour=Type), 
             position=position_dodge(width = 0.9), 
             vjust=-0.40) +
    scale_colour_manual(values=c("#000000", "#FF5733"))

【讨论】:

这很好,解决了问题。我没想到要手动设置刻度颜色。

以上是关于如何在 R 中的 ggplot2 中更改 geom_text 中的字体颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 ggplot2 geom_raster 中的插值/平滑

使用ggplot2更改R中的x轴刻度标签[重复]

R语言ggplot2可视化:为图像中的均值竖线中位数竖线 geom_vline添加图例(legend)

如何将使用 geom_label() 制作的标签的文本居中,其垂直位置已被 vjust 更改? (ggplot2 包)

ggplotly 无法从 R 中的 ggplot 识别 geom_rect 填充

使用 ggplot2 将平均值添加到 R 中的分组箱形图