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

标签 r ggplot2 data-visualization

我想在 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/

相关文章:

R : catching errors in `nls`

r - 计算分组数据框中的滚动标准差

R 幂回归中 stat_smooth 和 lm (使用对数)之间的差异?

r - 通过忽略零长度变量最小化 ggplot 图的绘图大小

r - ggplot回归线的单独图例

r - 将 Rshiny 部署到 IBM Cloud 服务器

r - 无法为RStudio安装RHDFS(R版本3.3.1)

python - 在 matplotlib 中注释子图可将图形缩放到最大轴

python - 向 Bokeh 堆叠条形图添加交互

python - 如何使用 Matplotlib 在 Python 中将 for 循环中的自定义绘图添加/附加到单个子图?