0

我正在尝试使用 ggplot 绘制一个包含三条线的图表。但后来我希望能够打开或关闭这些线,这样当我看到一个过于拥挤的图时,我可以隐藏一些数据系列。我似乎无法弄清楚如何使用 rstudio 的包含复选框的操作包来做到这一点(或者即使它可能)。有人可以告诉我如何使用这个包或其他包吗?谢谢

代码:

manipulate((ggplot(MeanFrameMelt, aes(x=variable, y=value, 
           color=id))+ geom_point()), 
           id = checkbox(FALSE, "File1"))

MeanFrameMelt(数据):

id  variable    value
1   file1   V1  0.04114207
2   file2   V1  0.31830645
3   file3   V1  0.05797068
4   file1   V2  0.04138554
5   file2   V2  0.31510753
6   file3   V2  0.05830449
7   file1   V3  0.04157882
8   file2   V3  0.31220430
9   file3   V3  0.05865419
10  file1   V4  0.04177334
11  file2   V4  0.31117608
12  file3   V4  0.05900918
4

3 回答 3

2

This is not really a manipulate question, but rather a question of you have 3 Boolean values to use when creating your plot expression. How to do it? The checkbox call creates these. The following doesn't exactly answer your specific question, but shows how to make this less confusing -- just add the lines one by one at the expense of being elegant. This could be done with RStudio, but I'm using a version of manipulate that works without RStudio:

require(gWidgets2) ## from github
options(guiToolkit="Qt") ## other choices too
source(system.file("examples", "manipulate.R", package="gWidgets2"))

manipulate({
  plot(mpg ~ wt, mtcars)
  if(do_lm)
    abline(lm(mpg ~ wt, mtcars))
  if(do_loess)
    with(mtcars, lines(lowess(wt, mpg)))
  ## ...
},
           do_lm=checkbox("Add regression line"),
           do_loess = checkbox("Add lowess fit")
           )
于 2012-12-13T19:11:09.440 回答
1

这是一种使用tkexampTeachingDemos 包中的函数的方法,而不是manipulate

library(TeachingDemos)
tklist <- rep( list(list('checkbox',init="T")), 3 )
names(tklist) <- levels( MeanFrameMelt$id )

tkfun <- function(...) {
    w <- c(...)
    w2 <- names(w)[w]
    df <- MeanFrameMelt[ MeanFrameMelt$id %in% w2, ]
    print(ggplot(df, aes(x=variable, y=value,
                  color=id)) + geom_point() )
}

tkexamp( tkfun, tklist )

或者如果最后一行是:

tkexamp( tkfun, list(id=tklist), plotloc='left' )

其他更熟悉 ggplot2 的人需要插话如何修改它,以使颜色保持不变,并且可选地 y 限制保持不变。

编辑

这是一个版本的函数,即使不显示某些值,也可以保持颜色和 y 限制相同:

tkfun <- function(...) {
  w <- c(...)
  w2 <- names(w)[w]
  df <- MeanFrameMelt[ MeanFrameMelt$id %in% w2, ]
  print(ggplot(df, aes(x=variable, y=value, colour=id)) + geom_point() +
    scale_colour_discrete(drop=FALSE) + 
    ylim(range(MeanFrameMelt$value))
  )
}
于 2012-12-13T18:00:37.787 回答
0

这是我根据 Rstudio 的示例条形图得出的一件事:

manipulate(
   barplot(as.matrix(longley[,factor]), 
           beside = TRUE, main = factor),
   factor = picker(1,2,2:3))

如果您选择第三个选项 ,2:3它将绘制两组数据。据推测,同样的诡计可以用于其他情节类型。我很想看看其他人能想出什么。

更新:以下工作,虽然有点笨拙:

manipulate(matplot(foo[,1],foo[,c(which(c(fp2,fp3)==1))],t='l'), 
           fp2 = checkbox(TRUE,'col2') ,
           fp3 = checkbox(TRUE,'col3'))

fp4如果您希望每个评论有 3 个复选框,则 需要一行。

注意——我在 Rstudio 的论坛上发布了一个问题,因为我在尝试将复选框输出分配给向量时收到错误消息,即fpick[4]=checkbox(TRUE,'col4')

于 2012-12-13T15:19:08.017 回答