r - 将字符串解析为更新 ggplot theme() 的参数

标签 r ggplot2

最终目标是创建一个 Shiny 的应用程序,其中用户输入字符串以“panel.grid.minor = element_line(colour = 'red')”格式返回,并且更新了 ggplot 主题。因此,我尝试解析该字符串以更新主题。

这是原始情节:

library(ggplot2)
library(rlang)
theme_set(theme_dark())
ggplot(mpg, aes(displ, hwy, colour = class))+
  geom_point()

在这个简化的示例中,我想动态地将次要网格线更改为红色。这是我到目前为止使用 parse_expr()eval_tidy() 所得到的,但不起作用。任何帮助将不胜感激,谢谢!

library(ggplot2)
library(rlang)
theme_set(theme_dark())

x <- "panel.grid.minor = element_line(colour = 'red')"

theme_update(eval_tidy(parse_expr(x)))
ggplot(mpg, aes(displ, hwy, colour = class)) +
  geom_point()

最佳答案

在 Twitter 的帮助下,我找到了解决方案!

单个参数(panel.grid.minor)

library(ggplot2)
library(rlang)
theme_set(theme_dark())
x <- "theme_update(panel.grid.minor = element_line(colour = 'red'))"
eval_tidy(parse_expr(x))
ggplot(mpg, aes(displ, hwy, colour = class)) +
  geom_point()

多个参数(panel.grid.minor 和 panel.background)

library(ggplot2)
library(rlang)
theme_set(theme_dark())
x <- "theme_update(panel.grid.minor = element_line(colour = 'red'), panel.background = element_rect(fill = 'cyan'))"
eval_tidy(parse_expr(x))
ggplot(mpg, aes(displ, hwy, colour = class)) +
  geom_point()

关于r - 将字符串解析为更新 ggplot theme() 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75947767/

相关文章:

r - 创建一个新列,其中每个元素是其他两列的子集计数,无循环

r - 使用乘数 ggplot2 转换轴标签

r - 用样条线连接点

r - 使用 4000 条记录计算 Moran's I

r - R OpenCPU可以同时处理多少个请求

R:如何将列添加到数据框中,每行中包含其所有先前行的累计总和?

r - 控制主要网格线的长度 - ggplot2

R 包在描述中声明作者

r - 如何按区域为 map 添加颜色?

r - Alpha 不适用于 ggplot 散点图中的所有点