在ggplot中绘制具有负侧和正侧的累积直方图?
Plotting cumulative histogram with negative and positive side in ggplot?
R version 3.1.1 (2014-07-10) Platform: i386-w64-mingw32/i386 (32-bit)
我正在使用 ggplot2
绘制直方图。目的是将负侧和正侧的累积直方图组合在一个图中。我可以很容易地分别为负面和正面绘制直方图,但是一旦我将它们组合起来,它就会变得一团糟。
示例数据:
df <- structure(list(NEG = c(-42.962, -1.86, -13.275, -56.188, -2.25,
-12.199, -3.953, -13.309, -4.512, -11.461, -19.813, -54.311,
-59.934, -7.045, -14.44, -40.829, -143.034, -233.009, -70.72,
-5.578), POS = c(180.328, 290.809, 156.894, 31.414, 629.74, 590.672,
268.89, 69.618, 415.007, 138.444, 10.139, 20.565, 106.027, 69.129,
19.809, 8.22, 53.711, 36.035, 11.694, 12.705)), .Names = c("NEG",
"POS"), row.names = c(NA, 20L), class = "data.frame")
正面的代码确实有效:
ggplot(df)+
geom_histogram(aes(x= POS, y=rev(cumsum(rev(..count..)))/4),binwidth=1)
消极方面的代码也有效:
ggplot(df)+
geom_histogram(aes(x= NEG, y=cumsum(..count..)/4),binwidth=1)
但是结合这两层会产生混乱:
ggplot(df)+
geom_histogram(aes(x= POS, y=rev(cumsum(rev(..count..)))/4),binwidth=1)+
geom_histogram(aes(x= NEG, y=cumsum(..count..)/4),binwidth=1)
希望你能帮帮我!
非常感谢!
问题在于,对于两层,累积总和是在整个 x-axis 上计算的。
ggplot(df)+
geom_histogram(aes(x= POS, y=ifelse(x>=0,
rev(cumsum(rev(..count..)))/4,
0)),
binwidth = 1)+
geom_histogram(aes(x= NEG, y=ifelse(x<=0,
cumsum(..count..)/4,
0)),
binwidth = 1)
R version 3.1.1 (2014-07-10) Platform: i386-w64-mingw32/i386 (32-bit)
我正在使用 ggplot2
绘制直方图。目的是将负侧和正侧的累积直方图组合在一个图中。我可以很容易地分别为负面和正面绘制直方图,但是一旦我将它们组合起来,它就会变得一团糟。
示例数据:
df <- structure(list(NEG = c(-42.962, -1.86, -13.275, -56.188, -2.25,
-12.199, -3.953, -13.309, -4.512, -11.461, -19.813, -54.311,
-59.934, -7.045, -14.44, -40.829, -143.034, -233.009, -70.72,
-5.578), POS = c(180.328, 290.809, 156.894, 31.414, 629.74, 590.672,
268.89, 69.618, 415.007, 138.444, 10.139, 20.565, 106.027, 69.129,
19.809, 8.22, 53.711, 36.035, 11.694, 12.705)), .Names = c("NEG",
"POS"), row.names = c(NA, 20L), class = "data.frame")
正面的代码确实有效:
ggplot(df)+
geom_histogram(aes(x= POS, y=rev(cumsum(rev(..count..)))/4),binwidth=1)
消极方面的代码也有效:
ggplot(df)+
geom_histogram(aes(x= NEG, y=cumsum(..count..)/4),binwidth=1)
但是结合这两层会产生混乱:
ggplot(df)+
geom_histogram(aes(x= POS, y=rev(cumsum(rev(..count..)))/4),binwidth=1)+
geom_histogram(aes(x= NEG, y=cumsum(..count..)/4),binwidth=1)
希望你能帮帮我!
非常感谢!
问题在于,对于两层,累积总和是在整个 x-axis 上计算的。
ggplot(df)+
geom_histogram(aes(x= POS, y=ifelse(x>=0,
rev(cumsum(rev(..count..)))/4,
0)),
binwidth = 1)+
geom_histogram(aes(x= NEG, y=ifelse(x<=0,
cumsum(..count..)/4,
0)),
binwidth = 1)