【问题标题】:How to plot frequency as step curve in R如何在R中将频率绘制为阶跃曲线
【发布时间】:2016-10-06 22:10:05
【问题描述】:

我有一个如下图所示的数据框:

  ID AC         AF  Type
1 60  1 0.00352113 1
2 48  1 0.00352113 2
3 25  1 0.00352113 1
4 98  1 0.00352113 2
5 24  1 0.00352113 1
6 64  2 0.00704225 1

我需要在 X 轴上绘制一条 AF 的阶梯曲线,其频率在 Y 轴上以 TYPE 着色。我设法使用以下代码获得直方图:

ggplot(data, aes(x = AF,fill=TYPE))+geom_histogram(aes(y = ..count..),bins=40)

但是,我需要如下所示的曲线图而不是直方图:

有什么建议可以实现吗?

【问题讨论】:

    标签: r ggplot2 curve


    【解决方案1】:

    我们可以使用geom_linestat = 'count'

    首先我生成一些虚拟数据:

    set.seed(123)
    df1 <- data.frame(Type = sample(1:3, 100, replace = T),
                      AF = sample(1:10, 100, replace = T, 
                                  prob = seq(.8, .2, length.out = 10)))
    

    然后我们制作情节:

    ggplot(df1, aes(x = AF))+
        geom_line(stat = 'count', aes(group = Type, colour = factor(Type)))
    

    这是一个替代方案(@eipi 的 HT)

    set.seed(123)
    df1 <- data.frame(Type = sample(1:3, 1000, replace = T),
                      AF = round(rnorm(1000), 3))
    
    ggplot(df1, aes(x = AF))+
        geom_step(stat = 'bin', aes(group = Type, colour = factor(Type)),
                  bins = 35)
    

    【讨论】:

    • 我认为geom_step 是合适的几何图形,并且鉴于数据看起来是连续的,stat="bin"
    • @eipi10 谢谢。我已经编辑了我的答案。如果您想提交一个作为您自己的答案,我将删除我的答案。
    • 请保留您的答案。不用我加了。
    【解决方案2】:

    在常规的 graphics 库中,您可以这样做:

    set.seed(1)
    AF<-sample(1:20,1000,replace=TRUE)
    set.seed(2)
    TYPE<-sample(c(1:2),1000,replace = TRUE)
    
    plot(table(AF[which(TYPE==1)])/length(AF[which(TYPE==1)]),type="l",col="blue",
         ylab="Frequency of AF",xlab="AF")
    points(table(AF[which(TYPE==2)])/length(AF[which(TYPE==2)]),type="l")
    legend("bottomright",c("Type1","Type2"),lty=1,lwd=3,col=c("blue","black"))
    

    【讨论】:

      猜你喜欢
      • 2021-06-02
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 2015-09-25
      相关资源
      最近更新 更多