gpt4 book ai didi

r - 如何在与特定文本匹配的ggplot中突出显示geom_text

转载 作者:行者123 更新时间:2023-12-02 02:16:14 26 4
gpt4 key购买 nike

我想在 ggplot 散点图中突出显示某个文本。我的代码在这里

library(ggplot2)

labels <- c("green", "blue", "orange", "blue", "green","red","purple","black")
num_1 <- c(1,2,3,4,5,6,7,8)
num_2 <- c(5,9,3,7,4,3,1,8)
df <- data.frame(labels,num_1,num_2)

p <- ggplot(df, aes(num_1,num_2,label=labels)) + geom_text()
p

例如,我想通过将字体更改为粗体或将颜色更改为黄色来突出显示文本“绿色”。两者都有效,但我无法使其正常工作。我试过使用 gghighlight 但还没有找到让它工作的方法。

最佳答案

您的三个建议都有效。使用 gghighlight,您必须为要突出显示的数据点设置谓词:

library(ggplot2)

labels <- c("green", "blue", "orange", "blue", "green","red","purple","black")
num_1 <- c(1,2,3,4,5,6,7,8)
num_2 <- c(5,9,3,7,4,3,1,8)
df <- data.frame(labels,num_1,num_2)

ggplot(df, aes(num_1,num_2,label=labels)) +
geom_text() +
gghighlight::gghighlight(labels == "green")
#> Warning: Tried to calculate with group_by(), but the calculation failed.
#> Falling back to ungrouped filter operation...

如果你想留在 Vanilla ggplot2,你可以简单地在 aes() 函数中使用 ifelse():

ggplot(df, aes(num_1, num_2, label= labels)) +
geom_text(aes(fontface = ifelse(labels == "green", "bold", "plain")))

如果您想直接设置颜色,而不先将它们映射到比例尺,您可以使用 I() 函数来使用不映射/转换数据的恒等比例尺。

ggplot(df, aes(num_1, num_2, label= labels)) +
geom_text(aes(colour = I(ifelse(labels == "green", "yellow", "black"))))

reprex package 创建于 2021-04-16 (v1.0.0)

关于r - 如何在与特定文本匹配的ggplot中突出显示geom_text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67130069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com