首页>Program>source

我有这个数据框:

       Date Server FileSystem PercentUsed
1  12/1/2011      A          /          60
2   1/2/2012      A       /var          50
3   2/1/2012      A        tmp          90
4  2/10/2012      A        /db          86
5  2/13/2012      A       /app          90
6  12/1/2011      B         C:          67
7   1/2/2012      B         D:          67
8   2/1/2012      B         F:          34
9  2/10/2012      B   /restore          89
10 2/13/2012      B         G:          56
11 12/1/2011      C          /          90
12  1/2/2012      C       /tmp          78
13  2/1/2012      C      /data          67
14 2/10/2012      C   /Storage          34
15 2/13/2012      C  /database          12
dput(x)
structure(list(Date = structure(c(2L, 1L, 3L, 4L, 5L, 2L, 1L, 
3L, 4L, 5L, 2L, 1L, 3L, 4L, 5L), .Label = c("1/2/2012", "12/1/2011", 
"2/1/2012", "2/10/2012", "2/13/2012"), class = "factor"), Server = structure(c(1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("A", 
"B", "C"), class = "factor"), FileSystem = structure(c(1L, 9L, 
14L, 5L, 2L, 10L, 11L, 12L, 6L, 13L, 1L, 8L, 3L, 7L, 4L), .Label = c("/", 
"/app", "/data", "/database", "/db", "/restore", "/Storage", 
"/tmp", "/var", "C:", "D:", "F:", "G:", "tmp"), class = "factor"), 
    PercentUsed = c(60L, 50L, 90L, 86L, 90L, 67L, 67L, 34L, 89L, 
    56L, 90L, 78L, 67L, 34L, 12L)), .Names = c("Date", "Server", 
"FileSystem", "PercentUsed"), class = "data.frame", row.names = c(NA, 
-15L))

我想在每个 facet_wrap旁边放置一个图例 网格,它自己的 FileSystem

当我这样做时,它将图例放在所有 FileSystem的情节侧面 .有可能把 FileSystem 属于每个网格旁边的每个服务器?

ggplot(x, aes(Date, PercentUsed, group=1, colour=FileSystem)) + 
     geom_jitter(size=0.5) + geom_smooth(method="loess", se=T) + 
     facet_wrap(~Server, ncol=1)
最新回答
  • 2021-1-8
    1 #

    Meh,@ joran击败了我(我的 gridExtra 已经过时,但花了我10分钟才意识到).这是一个类似的解决方案,但是这只猫通常按 Server中的级别

    library(gridExtra)
    out <- by(data = x, INDICES = x$Server, FUN = function(m) {
          m <- droplevels(m)
          m <- ggplot(m, aes(Date, PercentUsed, group=1, colour = FileSystem)) + 
             geom_jitter(size=2) + geom_smooth(method="loess", se=T)
       })
    do.call(grid.arrange, out)
    # If you want to supply the parameters to grid.arrange
    do.call(grid.arrange, c(out, ncol=3))
    

  • 2021-1-8
    2 #

    最好的方法是使用 gridExtra 包装:

    library(gridExtra)
    xs <- split(x,f = x$Server)
    p1 <- ggplot(xs$A,aes(x = Date,y = PercentUsed,group = 1,colour = FileSystem)) + 
            geom_jitter(size=0.5) + 
            geom_smooth(method="loess", se=T) + 
            facet_wrap(~Server, ncol=1)
    p2 <- p1 %+% xs$B
    p3 <- p1 %+% xs$C
    grid.arrange(p1,p2,p3)
    

  • 2021-1-8
    3 #

    我们可以使用 每个组的绘图列表,然后使用cowplot :: plot_grid进行绘图.每个人都有自己的传说:

    # make list of plots
    ggList <- lapply(split(x, x$Server), function(i) {
      ggplot(i, aes(Date, PercentUsed, group = 1, colour = FileSystem)) + 
        geom_jitter(size = 2) +
        geom_smooth(method = "loess", se = TRUE)})
    # plot as grid in 1 columns
    cowplot::plot_grid(plotlist = ggList, ncol = 1,
                       align = 'v', labels = levels(x$Server))
    

    如@Axeman所建议,我们可以使用 facet_grid(~Server)添加标签 ,而不是 labels = levels(x$Server)

  • Spring Security 32 CSRF对多部分请求的支持
  • 最佳拟合调度算法