我想使用ggplot在多个列上循环以创建多个绘图,但在for循环中使用占位符会改变ggplot的行为.

如果我有这个:

t <- data.frame(w = c(1, 2, 3, 4), x = c(23,45,23, 34), 
y = c(23,34,54, 23), z = c(23,12,54, 32))

这很好:

ggplot(data=t, aes(w, x)) + geom_line()

但这并不是:

i <- 'x'
ggplot(data=t, aes(w, i)) + geom_line()

如果我想最终在x,y和z上循环,这是个问题.

推荐答案

你只需要用aes_string而不是aes,就像这样:

ggplot(data=t, aes_string(x = "w", y = i)) + geom_line() 

请注意,w也需要指定为字符串.

R相关问答推荐

最优收敛

这两种创建S4对象的方法有何不同?

在数据表中呈现数学符号

任意列的欧几里得距离

在"gt"表中添加第二个"groupname_col",而不连接列值

如何使用R对每组变量进行随机化?

使用tidy—select创建一个新的带有mutate的摘要变量

如何得到R中唯一的组合群?

使用across,starts_with和ifelse语句变更多个变量

将. xlsx内容显示为HTML表

如何通过ggplot2添加短轴和删除长轴?

如何删除仅在数据集顶部和底部包含零的行

在GG图中绘制射线的自动程序

使用RSelenium在R中抓取Reddit时捕获多个标签

R -在先前group_by级别汇总时获取最大大小子组的计数

根据纬度和距离连接两个数据集

如何使用字符串从重复的模式中提取多个数字?

判断函数未加载R中的库

根据r中每行中的日期序列,使用列名序列创建新列

按镜像列值自定义行顺序