在ggplot中评估字符串表达式

evaluate string expression in ggplot

我想将 label_format 表达式传递给 ggplot,但出现错误

#toy df
df <- data.frame(
  x = 1:10,
  y = seq(0.1,1,by=0.1),
  label_format = "scales::percent_format(accuracy=0.1)"
)

ggplot(df,aes(x=x,y=y))+
  geom_point()+
  scale_y_continuous(label=!! rlang::parse_expr( label_format))

Error in parse_exprs(x) : object 'label_format' not found

我想评估字符串以得到带有格式化 y 轴的图表:

ggplot(df,aes(x=x,y=y))+
  geom_point()+
  scale_y_continuous(label=scales::percent_format(accuracy = 0.1))

天平无法访问全局数据来评估存储在数据列中的表达式。不过,您可以使用未解析的表达式,如下所示:

library(ggplot2)

df <- data.frame(
  x = 1:10,
  y = seq(0.1,1,by=0.1)
)

label_format <- "scales::percent_format(accuracy=0.1)"

ggplot(df,aes(x=x,y=y))+
  geom_point()+
  scale_y_continuous(label= eval(parse(text = label_format)))

reprex package (v2.0.1)

创建于 2022-01-13