r - 使用 R 在一张图中绘制多个列表

标签 r plot sar

我刚开始用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)
)

...其中星号 (*) 需要替换为有效的内容,以便一次绘制所有磁盘。我该如何实现?

谢谢和干杯, 丹尼尔

最佳答案

首先,我看不出您首先拆分原始 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)))
)

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

关于r - 使用 R 在一张图中绘制多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13846052/

相关文章:

r - 我在哪里可以找到 base 中 sample() 函数的源代码

r - 如何在美国 map 中将海洋着色为蓝色?

python - 在 Python 的 Line2D 中使用属性 "figsize"的等价物是什么

linux - 使用 sar、sysstat 获取每个进程的内存使用情况

linux - 在 Fedora 22 上使用 sar 命令会导致错误的内存统计信息

python - Python 中的 Blob (Lee Filter)

r - ggplot2中的geom_density和base R中的density的区别

R数据.表: adding new column for subset of rows conditional on all rows

R:计算数据帧中具有相同标识符的元素之间的偏移差异

matlab - MATLAB 中两个不同子图的相同 x 轴