我有this数据集并使用此R代码:
library(reshape2)
library(ggplot2)
library(RGraphics)
library(gridExtra)
long <- read.csv("long.csv")
ix <- 1:14
ggp2 <- ggplot(long, aes(x = id, y = value, fill = type)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = numbers), vjust=-0.5, position = position_dodge(0.9), size = 3, angle = 0) +
scale_x_continuous("Nodes", breaks = ix) +
scale_y_continuous("Throughput (Mbps)", limits = c(0,1060)) +
scale_fill_discrete(name="Legend",
labels=c("Inside Firewall (Dest)",
"Inside Firewall (Source)",
"Outside Firewall (Dest)",
"Outside Firewall (Source)")) +
theme_bw() +
theme(legend.position="right") +
theme(legend.title = element_text(colour="black", size=14, face="bold")) +
theme(legend.text = element_text(colour="black", size=12, face="bold")) +
facet_grid(type ~ .) +
plot(ggp2)
获得以下结果:
现在我需要在情节中添加95百分位数和5百分位数。数字在this数据集(NFPnumbers(95百分位数)和FPnumbers(5百分位数)列)中计算。
似乎boxplot()
可能在这里工作,但我不确定如何在ggplot中使用它。
stat_quantile(quantiles = c(0.05,0.95))
也可以正常工作,但函数会自行计算数字。我可以在这里使用我的号码吗?
我也尝试过:
geom_line(aes(x = id, y = long$FPnumbers)) +
geom_line(aes(x = id, y = long$NFPnumbers))
但结果看起来不够好。
geom_boxplot()
效果不佳:
geom_boxplot(aes(x = id, y = long$FPnumbers)) +
geom_boxplot(aes(x = id, y = long$NFPnumbers))
答案 0 :(得分:2)
有几个合适的geom,geom_errorbar
就是其中之一:
ggp2 + geom_errorbar(aes(ymax = NFPnumbers, ymin = FPnumbers), alpha = 0.5, width = 0.5)
我不知道是否有办法摆脱中心线。
答案 1 :(得分:1)
如果要为箱线图设置参数,还需要ymin
和ymax
值。由于它们不在数据集中,我计算了它们。
ggplot(long, aes(x = factor(id), y = value, fill = type)) +
geom_boxplot(aes(lower = FPnumbers, middle = value, upper = NFPnumbers, ymin = FPnumbers*0.5, ymax = NFPnumbers*1.2, fill = type), stat = "identity") +
xlab("Nodes") +
ylab("Throughput (Mbps)") +
scale_fill_discrete(name="Legend",
labels=c("Inside Firewall (Dest)", "Inside Firewall (Source)",
"Outside Firewall (Dest)", "Outside Firewall (Source)")) +
theme_bw() +
theme(legend.position="right",
legend.title = element_text(colour="black", size=14, face="bold"),
legend.text = element_text(colour="black", size=12, face="bold")) +
facet_grid(type ~ .)
结果:
在您提供的数据集中,您提供了value
,FPnumbers
&amp; NFPnumbers
个变量。作为FPnumbers
&amp; NFPnumbers
代表5和95百分位,我想平均值由value
表示。要使此解决方案有效,您需要为每个&#34; Node&#34;提供min
和max
值。我想你的原始数据中有它们。
但是,由于数据集中未提供这些内容,因此我根据FPnumbers
&amp; NFPnumbers
。 0.5
和1.2
的乘法因子是任意的。这只是创建虚构的min
和max
值的一种方式。