r - data.table中以数据驱动的图名称

标签 r plot ggplot2 data.table

这是一个学习data.table包语法的个人项目。我正在尝试使用数据值来创建多个图形,并根据by组值来标记每个图形。例如,给定以下数据:

# Generate dummy data
require(data.table)

set.seed(222)
DT = data.table(grp=rep(c("a","b","c"),each=10), 
 x = rnorm(30, mean=5, sd=1), 
 y = rnorm(30, mean=8, sd=1))

setkey(DT, grp)

数据由3组(a,b和c)的随机x和y值组成。我可以使用以下代码创建所有值的格式化图:
# Example of plotting all groups in one plot
require(ggplot2)

p <- ggplot(data=DT, aes(x = x, y = y)) + 
  aes(shape = factor(grp))+
  geom_point(aes(colour = factor(grp), shape = factor(grp)), size = 3) +
  labs(title = "Group: ALL")
p

这将创建以下图:

相反,我想为每个by组创建一个单独的图,并将图标题从“Group:ALL”更改为“Group:a”,“Group:b”,“Group:c”等。数据的documentation .table说:

.BY is a list containing a length 1 vector for each item in by. This can be useful when by is not known in advance. The by variables are also available to j directly by name; useful for example for titles of graphs if j is a plot command, or to branch with if()



话虽这么说,我不明白如何使用.BY.SD为每个组创建单独的图。感谢您的帮助。

最佳答案

这是data.table解决方案,不过,这不是我推荐的解决方案:

make_plot <- function(dat, grp.name) {
  print(
    ggplot(dat, aes(x=x, y=y)) + 
    geom_point() + labs(title=paste0("Group: ", grp.name$grp))
  )
  NULL
}    
DT[, make_plot(.SD, .BY), by=grp]

对于此特定应用程序,您真正应该做的是@dmartin建议的内容。至少,那是我会做的。

关于r - data.table中以数据驱动的图名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21150347/

相关文章:

scala - Bluemix Apache Spark 服务 - 为 scala 绘图?

python - 矢量轴但 Matplotlib 散点图的栅格点

R Shiny app sliderInput 控制 GGplot 中的 x 轴

r - 根据未在 x、y、颜色映射/plot_ly 条件文本中使用的辅助子分组,有条件地为热图单元格分配颜色和标签

r - 计算 R 中的所有重复值

r - 让 Visual Studio 代码(自动)格式化 R 代码

r - 使用带有 transition_time 的 geom_map 得到错误 : Error in insert_points(polygon$x, polygon$y, splits, n)

c# - MonoTouch 核心图绑定(bind)

r - ggplot2 geom_line() 特定值之间的箭头方向

r - 使用子目录使用 knitr