相关疑难解决方法(0)

如何使用变量在ggplot中指定列名

我有一个ggplot命令

ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) )
Run Code Online (Sandbox Code Playgroud)

在一个函数内部.但我希望能够使用该函数的参数来挑选要用作颜色和组的列.即我想要这样的东西

f <- function( column ) {
    ...
    ggplot( rates.by.groups, aes(x=name, y=rate, colour= ??? , group=??? ) )
}
Run Code Online (Sandbox Code Playgroud)

因此ggplot中使用的列由参数确定.例如对于f("majr")我们得到了效果

ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) )
Run Code Online (Sandbox Code Playgroud)

但对于f("性别"),我们得到了效果

  ggplot( rates.by.groups, aes(x=name, y=rate, colour=gender, group=gender) )
Run Code Online (Sandbox Code Playgroud)

我试过的一些事情:

ggplot( rates.by.groups, aes(x=name, y=rate, colour= columnName , group=columnName ) )
Run Code Online (Sandbox Code Playgroud)

不工作.也没有

e <- environment() 
ggplot( rates.by.groups, aes(x=name, y=rate, colour= columnName , group=columnName ), environment=e )
Run Code Online (Sandbox Code Playgroud)

r ggplot2 r-faq

84
推荐指数
5
解决办法
4万
查看次数

循环的多个图表列表(ggplot2) - 列出被覆盖的元素

(非常新手,所以请原谅任何混乱/明显的错误)

目标:一个循环,允许我绘制多个地图,显示D网格单元格的密度数据(),跨越多个月和季节.每个月,季节等的数据分为8个单独的列; 循环将遍历数据框的列(DF)

尝试:将循环的每次迭代中的绘图添加到列表中,以便可以调用所有绘图以在多面板图中显示.

out <- NULL
 for(i in 1:8){

  D <- DF[,i]
  x <- names(DF)[i]

  p <-ggplot() + geom_polygon(data=DF, aes(x=long, y=lat, group=Name, fill=D), colour    = "lightgrey") +labs(title=x)

out[[i]]<- p

print(p)

}
Run Code Online (Sandbox Code Playgroud)

问题:即使print(p)为每次迭代产生正确的图,但列表中的图out仅显示最终循环中的数据.

因此,当我尝试使用grid.arrange"out"中的图时,所有图表都显示相同的数据(来自第8列); 但是,这些图确实保留了正确的标题.当我试图调出每个情节时 - 例如,print(out[[1]])显示相同的情节 - 除了标题标签 - 如print(out[[8]]).

似乎列表中的前一个元素被每个循环覆盖了吗?但是,图表的标题似乎正确显示.

我如何构建out列表有什么明显的错误吗?如何避免每个以前的图被覆盖?

r ggplot2

3
推荐指数
1
解决办法
3590
查看次数

标签 统计

ggplot2 ×2

r ×2

r-faq ×1