此数据的来源是服务器性能指标。我的数字是平均值(os_cpu)和标准差(os_cpu_sd)。意思是显然不能讲述整个故事,所以我想添加标准偏差。我开始沿着geom_errorbar的路径,但我相信这是标准错误。绘制这些指标的可接受方式是什么?以下是一个可重复的例子:
DF_CPU <- structure(list(end = structure(c(1387315140, 1387316340, 1387317540,
1387318740, 1387319940, 1387321140, 1387322340, 1387323540, 1387324740,
1387325940, 1387327140, 1387328340, 1387329540, 1387330740, 1387331940,
1387333140, 1387334340, 1387335540, 1387336740, 1387337940, 1387339140,
1387340340, 1387341540, 1387342740, 1387343940, 1387345140, 1387346340,
1387347540, 1387348740, 1387349940), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), os_cpu = c(14.8, 15.5, 17.4, 15.6, 14.9, 14.6,
15, 15.2, 14.6, 15.2, 15, 14.5, 14.8, 15, 14.6, 14.9, 14.9, 14.4,
14.8, 14.9, 14.5, 15, 14.6, 14.5, 15.3, 14.6, 14.6, 15.2, 14.5,
14.5), os_cpu_sd = c(1.3, 2.1, 3.2, 3.3, 0.9, 0.4, 1.4, 1.5,
0.4, 1.6, 1, 0.4, 1.4, 1.4, 0.4, 1.3, 0.9, 0.4, 1.4, 1.3, 0.4,
1.7, 0.4, 0.4, 1.7, 0.4, 0.4, 1.7, 0.5, 0.4)), .Names = c("end",
"os_cpu", "os_cpu_sd"), class = "data.frame", row.names = c(1L,
5L, 9L, 13L, 17L, 21L, 25L, 29L, 33L, 37L, 41L, 45L, 49L, 53L,
57L, 61L, 65L, 69L, 73L, 77L, 81L, 85L, 89L, 93L, 97L, 101L,
105L, 109L, 113L, 117L))
head(DF_CPU)
end os_cpu os_cpu_sd
1 2013-12-17 21:19:00 14.8 1.3
5 2013-12-17 21:39:00 15.5 2.1
9 2013-12-17 21:59:00 17.4 3.2
13 2013-12-17 22:19:00 15.6 3.3
17 2013-12-17 22:39:00 14.9 0.9
ggplot(data=DF_CPU, aes(x=end, y=os_cpu)) +
geom_line()+
geom_errorbar(aes(ymin=os_cpu-os_cpu_sd,ymax=os_cpu+os_cpu_sd), alpha=0.2,color="red")
Per @ ari-b-friedman建议,这是geom_ribbon()的样子:
答案 0 :(得分:4)
你的问题主要是关于美学,所以意见会有所不同。说完了一些指导原则:
所以这段代码:
ggplot(data=DF_CPU, aes(x=end, y=os_cpu)) +
geom_point(size=3, shape=1)+
geom_line(linetype=2, colour="grey")+
geom_linerange(aes(ymin=os_cpu-1.96*os_cpu_sd,ymax=os_cpu+1.96*os_cpu_sd), alpha=0.5,color="blue")+
ylim(0,max(DF_CPU$os_cpu+1.96*DF_CPU$os_cpu_sd))+
stat_smooth(formula=y~1,se=TRUE,method="lm",linetype=2,size=1)+
theme_bw()
产生这个:
该图强调了超过20分钟间隔的cpu利用率(??)与监测的9小时期间的平均值没有明显偏差。参考线是平均利用率。错误栏已替换为geom_linerange(...)
,因为geom_errorbar(...)
中的水平栏不会增加任何内容并且会分散注意力。此外,您的原始图表使得看起来错误与实际利用率相比非常大,而事实并非如此。我将范围更改为+/- 1.96*sd
,因为它更接近95%CL。最后,x轴和y轴标签需要用描述性的东西替换,但我没有足够的信息来做到这一点。
答案 1 :(得分:2)
设计师的格言是“形式跟随功能”,这应该适用于图形。你想用你的阴谋做什么?你想回答的问题是什么?
如果是“cpu使用率是否随时间显着下降?”然后这个情节可能会做,并给出答案“否”。如果是“超过10秒的概率是否随时间而变化?”那么你需要为你的数据假设一个模型(例如像Normal(os_cpu,os_cpu_sd)那样简单的东西),然后绘制超越(尾部)概率。
无论如何,只是像你所做的那样绘制手段和信封总是一个公平的开始,至少回答“我的数据是什么样的?”的问题。并且“显然是错的?”