如何解决关于在R中使用ggplot2获得正确的轴标题
我想为数据框中的每一列绘制一个箱形图。所以我创建了一个函数来做到这一点。我的数据集如下所示:
set.seed(123)
x1=rnorm(100,1)
x2=rnorm(100,0.5)
x3=rnorm(100,0.6)
data_x=data.frame(x1,x2,x3)
datax_long=data_x %>% gather(x_val,value,x1:x3)
> head(datax_long)
x_val value
1 x1 -0.56047565
2 x1 -0.23017749
3 x1 1.55870831
4 x1 0.07050839
5 x1 0.12928774
6 x1 1.71506499
我创建了以下功能来实现我的目的。
plot_fun=function(var,low_lim,upp_lim,coef,data)
{
plt=ggplot(data,aes(x = coef,y =var,color=var)) +
stat_summary(geom = "errorbarh",fun.min = function(z) quantile(z,low_lim),fun = mean,fun.max = function(z) quantile(z,upp_lim)) +
stat_summary(geom = "point",fun = mean)
print(plt + labs(y=var)+labs(colour = var))
}
plot_fun(datax_long$x_val,0.025,0.975,datax_long$value,datax_long)
在上面的输出中,y轴的标签应该是“ x_val”而不是x1。另外,图例的标题也应该是“ x_val”而不是x1。
谢谢。
解决方法
尝试一下。您可以将函数与字符串一起用于name变量。然后,您的其余代码将正常工作。这里的代码:
#Function
plot_fun=function(var,low_lim,upp_lim,coef,data)
{
plt=ggplot(data,aes_string(x = coef,y =var,color=var)) +
stat_summary(geom = "errorbarh",fun.min = function(z) quantile(z,low_lim),fun = mean,fun.max = function(z) quantile(z,upp_lim)) +
stat_summary(geom = "point",fun = mean)
print(plt + labs(y=var)+labs(colour = var))
}
#Apply
plot_fun('x_val',0.025,0.975,datax_long$value,datax_long)
输出:
,使用一些整洁的评估可以这样实现:
- 与其传递矢量,不如将要绘制的变量传递给函数。
- 在函数内部,您可以使用curl-curly-operator
{{
调用这些变量。 - 对于标签,我们必须将变量名转换为可以使用
as_label(enquo(...))
实现的字符串。
library(tidyverse)
set.seed(123)
x1=rnorm(100,1)
x2=rnorm(100,0.5)
x3=rnorm(100,0.6)
data_x=data.frame(x1,x2,x3)
datax_long=data_x %>% gather(x_val,value,x1:x3)
plot_fun=function(data,var,upp_lim)
{
plt = ggplot(data,aes(x = {{coef}},y = {{var}},color = {{var}})) +
stat_summary(geom = "errorbarh",fun = mean)
plt + labs(y = as_label(enquo(var)),colour = as_label(enquo(var)))
}
plot_fun(datax_long,x_val,0.975)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。