R 在ggplot2中将密度线添加到具有多个变量的直方图

R 在ggplot2中将密度线添加到具有多个变量的直方图,r,ggplot2,histogram,R,Ggplot2,Histogram,我有以下资料: A <- structure(c(9, 7, 9, 9, 9, 8, 9, 6, 4, 7, 9, 9, 9, 8, 7, 7, 9, 8, 8, 9, 5, 5, 8, 7, 5, 9, 9, 7, 7, 9, 8, 7, 8, 9, 4, 7, 9, 8, 6, 7, 7, 4, 8, 6, 9, 9, 8, 1, 9, 9, 9, 8, 9, 9, 6, 7, 4, 7, 9, 6, 6, 9, 9, 8, 6, 8, 7, 7, 7, 5, 9, 5, 7,

我有以下资料:

A <- structure(c(9, 7, 9, 9, 9, 8, 9, 6, 4, 7, 9, 9, 9, 8, 7, 7, 9, 
8, 8, 9, 5, 5, 8, 7, 5, 9, 9, 7, 7, 9, 8, 7, 8, 9, 4, 7, 9, 8, 
6, 7, 7, 4, 8, 6, 9, 9, 8, 1, 9, 9, 9, 8, 9, 9, 6, 7, 4, 7, 9, 
6, 6, 9, 9, 8, 6, 8, 7, 7, 7, 5, 9, 5, 7, 9, 8, 4, 9, 8, 8, 8, 
5, 8, 1, 7, 7, 5, 6, 9, 5, 9, 6, 9, 6, 9, 9, 9, 8, 9, 9, 9, 9, 
4, 6, 4, 8, 6, 8, 8, 7, 4, 6, 7, 4, 8, 8, 8, 7, 9, 3, 8, 8, 6, 
9, 8, 8, 6, 5, 8, 3, 8, 6, 8, 7, 7, 6, 9, 5, 9, 8, 7, 9, 7, 9, 
9, 8, 9, 6, 8, 9, 8, 6, 8, 9, 9, 9, 4, 8, 8, 5, 8, 7, 8, 8, 9, 
9, 6, 8, 5, 9, 8, 7, 9, 9, 7, 6, 8, 7, 7, 8, 9, 6, 7, 8, 9, 7, 
6, 6, 9, 7, 7, 8, 7, 7, 2, 4, 9, 9, 7, 7, 9, 7, 6, 9, 9, 8, 5, 
5), label = NA_character_, class = c("labelled", "numeric"))

B <- structure(c(9, 9, 9, 8, 8, 9, 6, 9, 8, 8, 6, 9, 9, 9, 6, 7, 9, 
7, 8, 9, 7, 9, 9, 8, 7, 9, 8, 7, 8, 9, 8, 9, 9, 9, 9, 7, 9, 7, 
8, 9, 7, 7, 8, 4, 6, 9, 7, 7, 9, 9, 9, 8, 9, 8, 9, 9, 4, 8, 9, 
8, 7, 9, 9, 8, 7, 8, 9, 8, 2, 7, 8, 8, 8, 8, 8, 6, 4, 9, 9, 8, 
3, 7, 3, 8, 8, 9, 7, 9, 5, 6, 7, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 
7, 3, 7, 9, 7, 7, 7, 8, 8, 9, 9, 8, 8, 9, 6, 9, 9, 6, 7, 8, 7, 
8, 9, 9, 7, 6, 8, 7, 9, 6, 5, 8, 8, 7, 9, 8, 9, 9, 7, 9, 7, 9, 
8, 7, 9, 4, 8, 7, 7, 9, 9, 9, 9, 9, 4, 9, 9, 6, 7, 6, 7, 8, 9, 
8, 9, 5, 9, 8, 8, 8, 9, 9, 6, 8, 8, 8, 8, 8, 8, 7, 8, 9, 9, 9, 
7, 4, 8, 7, 7, 9, 8, 8, 7, 5, 8, 9, 8, 8, 9, 8, 5, 8, 9, 8, 9, 
7), label = NA_character_, class = c("labelled", "numeric"))

library(ggplot2)

df <- data.frame(value = c(A, B), 
                 variable = rep(c("tax", "truth"), each = length(A)))

ggplot(df) + 
  geom_bar(aes(value, fill = variable), position = "dodge") + 
  scale_fill_manual(values = c(rgb(0,0,1,0.5), rgb(1,0,0,0.5))) + 
  theme(legend.title = element_blank(), legend.position = c(0.1, 0.85))
我还发现:

但我遇到了同样的问题


有人能解释一下我做错了什么吗?

您实际上需要将
y
设置为
。计数..
。我之所以知道这一点,是因为几个月前我有一个类似的问题,要做一个类似的阴谋。下面的代码用于添加密度曲线:

ggplot(df, aes(value, fill = variable)) +
    geom_density(aes(y = ..count..), size = 0.7, alpha = 0.3) +
    geom_bar(position = "dodge") + 
    scale_fill_manual(values = c(rgb(0,0,1,0.5), rgb(1,0,0,0.5))) + 
    theme(legend.title = element_blank(), legend.position = c(0.1, 0.85))

您实际上需要将
y
设置为
。计数..
。我之所以知道这一点,是因为几个月前我有一个类似的问题,要做一个类似的阴谋。下面的代码用于添加密度曲线:

ggplot(df, aes(value, fill = variable)) +
    geom_density(aes(y = ..count..), size = 0.7, alpha = 0.3) +
    geom_bar(position = "dodge") + 
    scale_fill_manual(values = c(rgb(0,0,1,0.5), rgb(1,0,0,0.5))) + 
    theme(legend.title = element_blank(), legend.position = c(0.1, 0.85))

非常感谢!有什么办法可以使线条变得更平滑吗?很可能,你可以检查一下
geom\u density
的参数,看看是否有与“平滑度”相关的东西我试过了哈哈,我想应该是
bw
。但是我不知道如何使用它。你可以将它设置为一个像
bw=1
(比这个更平滑)这样的数字或像
bw='bcv'
这样的选项,这是
stats
支持的带选择器的一个。通过查看
stats::bw.bcv
帮助文件,您可以了解每一项的含义
bcv
,对于有偏见的CV,也给出了一条更平滑的线条,我在缩写词上乱作一团,但
bw=1
正是我想要的。非常感谢你!非常感谢你!有什么办法可以使线条变得更平滑吗?很可能,你可以检查一下
geom\u density
的参数,看看是否有与“平滑度”相关的东西我试过了哈哈,我想应该是
bw
。但是我不知道如何使用它。你可以将它设置为一个像
bw=1
(比这个更平滑)这样的数字或像
bw='bcv'
这样的选项,这是
stats
支持的带选择器的一个。通过查看
stats::bw.bcv
帮助文件,您可以了解每一项的含义
bcv
,对于有偏见的CV,也给出了一条更平滑的线条,我在缩写词上乱作一团,但
bw=1
正是我想要的。非常感谢你!
ggplot(df, aes(value, fill = variable)) +
    geom_density(aes(y = ..count..), size = 0.7, alpha = 0.3) +
    geom_bar(position = "dodge") + 
    scale_fill_manual(values = c(rgb(0,0,1,0.5), rgb(1,0,0,0.5))) + 
    theme(legend.title = element_blank(), legend.position = c(0.1, 0.85))