带有表达式和值的ggplot颜色标签

问题描述 投票:0回答:1

我有以下数据:

我正在为每个不同的

vds
绘制
V_gs
上的值,其中
V_gs
具有不同的颜色:

我的问题是,我希望颜色标签的格式像轴标签一样好。示例:

我尝试过使用:

    scale_colour_discrete(
    labels = {function(x) {
        value <- gsub(".*\\.\\.(\\+*)", "\\1", x)
        bquote('U[GS]' ~ ' = ' ~ .(value))}
      }
    ) +

但是我收到以下错误:

Error in rep(value, length.out = nrows) : 
  attempt to replicate an object of type 'language'

然后我尝试了

label_bquote()
并得到了相同的错误,但是使用了
'closure'

我是否走在正确的轨道上,或者是否有其他更好的方法来实现我想要的?

r ggplot2
1个回答
0
投票

您的示例数据是一张图片,所以我自己制作了。

您的代码不完整,因此我无法重现您的错误消息,这使得很难或不可能说出出了什么问题。但是,您提供的代码中确实有一个额外的左大括号。

无论如何,你都走在正确的道路上。

我简化了您的绘图语法,但需要对标签函数进行矢量化,因为该函数以某种方式为 2 个中断生成 3 个标签。

library(dplyr)
library(ggplot2)

data <- tibble(
  x = runif(100),
  y = runif(100),
  color = rep(c("V_.gs..3V", "V_.gs..5V"), 50)
)

data %>% 
  ggplot(aes(x, y, color = color)) + 
  geom_point() + 
  scale_colour_discrete(
    labels = function(x) {
      sapply(x, function(x) {
        value <- gsub(".*\\.\\.(\\+*)", "\\1", x)
        bquote(U[GS] == .(value))
      })
    }
  )

创建于 2024-04-18,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.