R直方图具有密度曲线和半透明区域曲线

时间:2017-04-05 19:43:32

标签: r ggplot2

我正在使用我发现的程序,在附图中显示了直方图。我试图制作一个相同的但具有不同的数据集。但是,我一直得到非常奇怪的结果。数据表示每个年龄组的MVP获胜者数量。请注意,您必须滚动才能查看更多代码。

任何有助于弄清问题的人都会非常感激。

    df <- read.table(textConnection(
    'Age    Count
      20    2
      21    0
      22    2
      23    3
      24    6
      25    6
      26    9
      27    11
      28    7
      29    8
      30    6
      31    3
      32    2
      33    2
      34    1
      35    0
      36    2
      37    2
      38    1
      39    1'), header = TRUE)


    library(ggplot2)


    ggplot(df,aes(x=Age)) +
      geom_histogram()+
      labs(x="Age",
           y="Count",
           title="Age vs MLB MVP Count")


    ggplot(df,aes(x=Age)) +
      geom_histogram(binwidth=2,
        fill="cornsilk",color="black")+
        labs(x="Age",
           y="Count",
           title="Age vs MLB MVP Count")


    ggplot(df,aes(x=Age,..density..)) +
      geom_histogram(binwidth=2,
        fill="cornsilk",color="black")+
        labs(x="Age",
           y="Count",
           title="Age vs MLB MVP Count")



    histPlot <- ggplot(df,aes(x=Age,..density..))+ 
      geom_histogram(binwidth=2, fill="cornsilk",color="black")+  
      labs(x="Age",
           y="Count",
           title="Age vs MLB MVP Count")


    histPlot


    histPlot + geom_freqpoly(binwidth=2,color="red",size=1.2)


    histPlot + geom_line(stat="density",color="blue",size=1.2)+
      xlim(20,39)


    histPlot +
      geom_density(adjust=.4,fill="cyan",color="black",alpha=.40)+
      xlim(20,39)

Image

1 个答案:

答案 0 :(得分:2)

ggplot的直方图功能通常不适用于汇总数据。让你的例子很好地工作的一种粗略的方法就是重新创建非汇总数据:

df = data.frame(Age=rep(df$Age, df$Count))

然后你的图表就会通过。在实践中,您可能会以某种方式自己创建摘要,因此只需跳过汇总并将原始数据提供给ggplot。