gpt4 book ai didi

r - ggplot2 中的多线时间序列图

转载 作者:行者123 更新时间:2023-12-04 10:09:23 25 4
gpt4 key购买 nike

我有一个包含两列的数据框,“主机”和“日期”;它描述了在七个月内的特定日期针对许多不同服务器的一系列网络攻击。

这是数据的样子,

> china_atks %>% head(100)
host date
1 groucho-oregon 2013-03-03
2 groucho-oregon 2013-03-03
...
46 groucho-singapore 2013-03-03
48 groucho-singapore 2013-03-04
...

其中“groucho-oregon”、“groucho-signapore”等是攻击目标服务器的主机名。

大约有 190,000 条记录,时间跨度为 03/03/2013 到 08/09/2013,例如

> unique(china_atks$date)
[1] "2013-03-03" "2013-03-04" "2013-03-05" "2013-03-06" "2013-03-07"
"2013-03-08" "2013-03-09"
[8] "2013-03-10" "2013-03-11" "2013-03-12" "2013-03-13" "2013-03-14"
"2013-03-15" "2013-03-16"
[15] "2013-03-17" "2013-03-18" "2013-03-19" "2013-03-20" "2013-03-21"
"2013-03-22" "2013-03-23"
...

我想创建一个多线时间序列图表,以可视化每个服务器在日期范围内每天收到的攻击次数,但我不知道如何将数据传递给 ggplot 以实现此目的.有九个唯一的主机名,因此图表将显示九行。

谢谢!

最佳答案

这是执行此操作的一种方法。

首先按日期总结计数频率。

library(plyr)
df <- plyr::count(da,c("host", "date"))

然后进行绘图。

ggplot(data=df, aes(x=date, y=freq, group=1)) + 
geom_line(aes(color = host))

数据

 da <- structure(list(host = structure(1:4, .Label = c("groucho-eu", 
"groucho-oregon", "groucho-singapore", "groucho-tokyo"), class = "factor"),
date = structure(c(1L, 1L, 1L, 1L), .Label = "2013-03-03", class = "factor"),
freq = c(1L, 4L, 2L, 1L)), .Names = c("host", "date", "freq"
), row.names = c(NA, -4L), class = "data.frame")

关于r - ggplot2 中的多线时间序列图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49601970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com