【问题标题】:Plot multiple lists in one graph using R使用 R 在一张图中绘制多个列表
【发布时间】:2012-12-12 18:15:25
【问题描述】:

我刚开始使用R,所以请多多包涵……

目前我正在尝试可视化 SAR 在 Linux 服务器上收集的一些磁盘性能数据。 CSV 数据的标题如下所示:

timestamp; DEV; tps; rd_sec/s; wr_sec/s; avgrq-sz; avgqu-sz; await, svctm; %util

DEV 代表我用来分组数据的设备名称:

disks <- split(x = dkstbl, f = dsktbl[, "DEV"])

使用带有操作库的 RStudio,我绘制了以下图:

manipulate(
  plot(disks[disk][[1]]$tps[time], 
       disks[disk][[1]]$await[time], 
       xlim = c(0,max(disks[disk][[1]]['tps'])), 
       ylim = c(0,max(disks[disk][[1]]['await'])),
       main = paste(disk,disks[disk][[1]]$X00.00.01[time]),
       xlab = 'IOPS',
       ylab = 'AWAIT'
       ), 
  time = slider(1, 1000),
  disk = picker(as.list(names(disks)))
)

这几乎就是我想要的,但仍然不完全是。我想要的应该包含一个图上所有磁盘的数据,并且可能看起来像这样:

manipulate(
  plot(disks[*][[1]]$tps[time], 
       disks[*][[1]]$await[time], 
       xlim = c(0,max(disks[*][[1]]['tps'])), 
       ylim = c(0,max(disks[*][[1]]['await'])),
       main = paste(disks[*][[1]]$X00.00.01[time]),
       xlab = 'IOPS',
       ylab = 'AWAIT'
       ), 
  time = slider(1, 1000)
)

... 星号 (*) 需要替换为可以一次绘制所有磁盘的东西。我如何做到这一点?

感谢和干杯, 丹尼尔

【问题讨论】:

  • +1 让我注意到manipulate
  • 嗨,丹尼尔,这似乎是一个很好的问题。有机会发布一些数据吗?你可以使用dput()
  • 你好里卡多!当然,你去:pastebin.com/UjAqFD7T
  • 您可能还想拥有拆分后的数据:pastebin.com/XwijqD8i

标签: r plot sar


【解决方案1】:

首先,我看不出你为什么要拆分原始 data.frame。

其次,如果我理解正确,您想查看所有磁盘上的观察结果,在一个特定的时间点,对吧?

所以我认为以下解决了您的问题:

disk <- do.call("rbind", disks)
manipulate(
  plot(disk$tps[disk$Time==time],
     disk$await[disk$Time==time],
     xlim = c(0,max(disk$tps)),
     ylim = c(0,max(disk$await)),
     main = "All disks",
     xlab = 'IOPS',
     ylab = 'AWAIT'
  ),
  time = picker(as.list(levels(disk$Time)))
)

人们应该努力让事情变得简单......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-03
    • 2019-10-26
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    相关资源
    最近更新 更多