我正在对调查回复进行一系列双变量分类分析。由于某些响应更为常见,因此我使用geom_bars
密度比例,以便偏斜数据确实会扭曲差异。由于密度缩放应该强制总和为1或100%,我很困惑为什么条形总和大约为1.12。
该数据是4600份调查回复。我不确定如何举例说明实际上有助于重现图形差异的数据。如果没有大样本,就不值得谈论密度......数据是这样的,每个响应当然都有很多其他变量。
data <- data.frame(pm = c(1, 1, 2, 2, 2, 3),
wt = c(12, 16, 86, 56, 10, 34),
VA = c("Yes", "No", "No", "No", "Yes", "Yes"))
这是我用来绘制其中一个变量的代码的基本示例:
plot <-
ggplot(data,aes(factor(VA),weight=wt,fill=factor(pm))) +
geom_bar(aes(y=..density..,group=factor(pm)),
position="dodge")
我已经分别计算了下表,这些是我希望在图表中显示的值。
Available Not Available
Cash Ridership % 28.18 71.82
Pass Ridership % 52.40 47.60
10-Ride Ridership % 45.80 54.20
相反,现金的条形显示为32%和80%,而不是28%和72%。我以类似方式制作的所有其他图表都存在同样的问题,但直到这一点我才真正注意到。
答案 0 :(得分:0)
请注意,在?stat_bin
中,它说的是密度(强调我的)
bin中的点密度,缩放为整合到1
此外,width
的默认参数为width = 0.9
。因此,默认情况下,高度会缩放为总计1/0.9 = 1.111
。所以有两种可能的解决方案:
更改宽度
ggplot(data,aes(factor(VA), weight=wt, fill=factor(pm))) +
geom_bar(aes(y=..density.., group=factor(pm)),
position="dodge", width = 1)
重新调整密度
ggplot(data,aes(factor(VA), weight=wt, fill=factor(pm))) +
geom_bar(aes(y=..density..*.9, group=factor(pm)),
position="dodge")