使用ggplot2在直方图上绘制高斯并得到“错误长度(行)== 1并非正确”

时间:2018-11-13 09:34:01

标签: r ggplot2 histogram density-plot

我正在尝试使用R + ggplot2将高斯覆盖在直方图上。这是我之前做过很多次的绘图,但是现在我收到一条错误消息:“错误:length(rows)== 1不是TRUE。”

我的MWE:

library(ggplot2)
df <- data.frame("x" = rnorm(1000, 100,10)) # Sample data

p <- ggplot(df, aes(df$x, fill = ..density..))+
    geom_histogram(aes(y = ..density..), bins = 20)+
    stat_function(fun = dnorm, args = list(mean = mean(df$x), sd = sd(df$x)))+
    theme_bw()+
    theme(aspect.ratio = 1,
        panel.grid = element_blank(),
        legend.position = 'none')
p

再次,这是我以前做过的很多次。也许是因为我已经从工作计算机切换到家庭计算机了?我尝试更新所有软件包,但这似乎不起作用。我正在使用RStudio版本1.1.456,version的输出是:

platform       x86_64-pc-linux-gnu         
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          3                           
minor          4.4                         
year           2018                        
month          03                          
day            15                          
svn rev        74408                       
language       R                           
version.string R version 3.4.4 (2018-03-15)
nickname       Someone to Lean On

我试图从之前的帖子Getting error Error: length(rows) == 1 is not TRUE in Rdplyr Error: length(rows) == 1 is not TRUE in R中找到答案,但没有运气。任何帮助是极大的赞赏。预先谢谢你。

1 个答案:

答案 0 :(得分:0)

问题在于,您需要先传递fill,然后才能通过美学将y赋值给y。 这样工作

p <- ggplot(df, aes(x = x))+
  geom_histogram(aes(y = ..density.., fill = ..density..), bins = 20)+
  stat_function(fun = dnorm, args = list(mean = mean(df$x), sd = sd(df$x)))+
  theme_bw()+
  theme(aspect.ratio = 1,
        panel.grid = element_blank(),
        legend.position = 'none')
p

enter image description here