如何从字符向量中将表达式放入 ggplot title/label/legend 中?
How to put expression in ggplot title/label/legend from character vector?
我想用代码生成图例标签并将它们用作表达式,因为它们包含希腊字母和下标。但是标题也出现了同样的问题,并且更容易显示,所以我将在我的例子中使用它。
ggplot() + ggtitle(expression(beta[a]^{4}))
此代码按预期工作,我得到了一个带有 β 和下标和上标的漂亮标题。但是,如果我有一个字符串,我不能将它转换为一个表达式,或者至少它不能很好地显示在 ggplot 上。有谁知道如何 use/convert 字符类型向量作为 ggplot 的表达式?
title_expression <- "beta[a]^{4}"
ggplot() + ggtitle(as.expression(title_expression))
我的实际问题代码:
legend_labels <- c("beta[d]^{2}", "beta[d]^{3}")
dat <- data.frame(a = c(1,2,2,3), b = c("a", "a", "b", "b"))
ggplot(dat, aes(a, fill = b)) +
geom_histogram(bins = 3) +
scale_fill_manual(values = c("red", "blue"), labels = legend_labels)
创建表达式而不是字符串可能更可取。
如果要将字符串转为表达式,需要解析:
title_expression <- "beta[a]^{4}"
ggplot() + ggtitle(parse(text = title_expression))
dat <- data.frame(a = c(1,2,2,3), b = c("a", "a", "b", "b"))
legend_labels <- c("beta[d]^{2}", "beta[d]^{3}")
ggplot(dat, aes(a, fill = b)) +
geom_histogram(bins = 3) +
scale_fill_manual(values = c("red", "blue"),
labels = lapply(legend_labels, \(x) parse(text = x)))
如果您使用过时的 R 版本,请将 \(x)
替换为 function(x)
。
更新: 你可以使用 parse(text = ..)
ggplot(dat, aes(a, fill = b)) +
geom_histogram(bins = 3) +
scale_fill_manual(values = c("red", "blue"), labels = parse(text = legend_labels))
这里有一个方法 expression
legend_labels <- c(expression(beta[a]^4), expression(beta[a]^3))
dat <- data.frame(a = c(1,2,2,3), b = c("a", "a", "b", "b"))
ggplot(dat, aes(a, fill = b)) +
geom_histogram(bins = 3) +
scale_fill_manual(values = c("red", "blue"), labels = legend_labels)
我想用代码生成图例标签并将它们用作表达式,因为它们包含希腊字母和下标。但是标题也出现了同样的问题,并且更容易显示,所以我将在我的例子中使用它。
ggplot() + ggtitle(expression(beta[a]^{4}))
此代码按预期工作,我得到了一个带有 β 和下标和上标的漂亮标题。但是,如果我有一个字符串,我不能将它转换为一个表达式,或者至少它不能很好地显示在 ggplot 上。有谁知道如何 use/convert 字符类型向量作为 ggplot 的表达式?
title_expression <- "beta[a]^{4}"
ggplot() + ggtitle(as.expression(title_expression))
我的实际问题代码:
legend_labels <- c("beta[d]^{2}", "beta[d]^{3}")
dat <- data.frame(a = c(1,2,2,3), b = c("a", "a", "b", "b"))
ggplot(dat, aes(a, fill = b)) +
geom_histogram(bins = 3) +
scale_fill_manual(values = c("red", "blue"), labels = legend_labels)
创建表达式而不是字符串可能更可取。
如果要将字符串转为表达式,需要解析:
title_expression <- "beta[a]^{4}"
ggplot() + ggtitle(parse(text = title_expression))
dat <- data.frame(a = c(1,2,2,3), b = c("a", "a", "b", "b"))
legend_labels <- c("beta[d]^{2}", "beta[d]^{3}")
ggplot(dat, aes(a, fill = b)) +
geom_histogram(bins = 3) +
scale_fill_manual(values = c("red", "blue"),
labels = lapply(legend_labels, \(x) parse(text = x)))
如果您使用过时的 R 版本,请将 \(x)
替换为 function(x)
。
更新: 你可以使用 parse(text = ..)
ggplot(dat, aes(a, fill = b)) +
geom_histogram(bins = 3) +
scale_fill_manual(values = c("red", "blue"), labels = parse(text = legend_labels))
这里有一个方法 expression
legend_labels <- c(expression(beta[a]^4), expression(beta[a]^3))
dat <- data.frame(a = c(1,2,2,3), b = c("a", "a", "b", "b"))
ggplot(dat, aes(a, fill = b)) +
geom_histogram(bins = 3) +
scale_fill_manual(values = c("red", "blue"), labels = legend_labels)