的真實平均洽我有一個載體geom_vline平均不與矢量
var = c(5, 3, 6, 0, 1, 1, 1, 0, 4, 2, 1, 3, 3, 6, 3, 15, 1, 0, 2, 3,
1, 0, 0, 3, 2, 3, 2, 2, 2, 4, 4, 0, 1, 0, 2, 2, 5, 3, 3, 1, 0,
1, 1, 6, 4, 3, 0, 7, 4, 2, 3, 3, 0, 1, 1, 3, 4, 5, 2, 1, 3, 10,
13, 3, 1, 4, 5, 3, 1, 1, 5, 4, 2, 1, 6, 1, 2, 3, 5, 8, 3, 1,
7, 4, 0, 1, 7, 1, 3, 4, 3, 5, 3, 2, 1, 1, 9, 2, 0, 4, 3, 5)
我使用ggplot和繪圖中位數的垂直線繪製直方圖的分佈。 var的中位數等於3
groupMedian <- median(var)
print(groupMedian)
df <- data.table(x = var)
df <- df[, .N, by=x]
df$x <- factor(df$x, levels=c(0:25))
p <- ggplot(df, aes(x=x, y=N)) +
geom_bar(stat="identity", width=1.0,
colour = "darkgreen",
fill = 'lightslateblue')
p <- p + labs(title = "Var Histogram",
x = "x",
y = "Frequency") +
scale_x_discrete(drop=FALSE) +
geom_vline(xintercept=groupMedian,
colour = 'red', size = 2)
p = p + coord_cartesian(ylim=c(0, 50)) +
scale_y_continuous(breaks=seq(0, 50, 2))
p = p + theme(panel.grid.major =
element_line(colour = "black", linetype = "dotted"))
ggsave("barplot.png", p, width=8, height=4, dpi=120)
print(p)
中值是3,但該行被放置在2
我使用
p = p+ geom_vline(data=var,
aes(xintercept = median),
colour = 'red', size = 2)
的問題是,你轉身x軸成的一個因素。 R以索引1開始,而不是0,所以第三個級別的值爲2.這裏是證明:'levels(df $ x)[3]'產生'[1]「2」' – Chase 2014-09-29 20:46:10
@Chase是除了像 geom_vline(xintercept = groupMedian +1) – DataTx 2014-09-29 20:51:56
肯定 - 只是概述了我如何處理這個問題,避免轉換因子。 – Chase 2014-09-29 20:54:10