ggplot2绘制概率密度图

Posted 智能先行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ggplot2绘制概率密度图相关的知识,希望对你有一定的参考价值。

以下绘图以Weibull分布(韦伯分布、威布尔分布)为例 

关于Weibull分布(韦伯分布、威布尔分布),请参考本人博客http://www.cnblogs.com/wwxbi/p/6141501.html

 

library(ggplot2)
# 这里的d和y都有大小顺序
d<- seq(0, 5, length.out=10000)
y<-dweibull(d, shape=5, scale=1, log = FALSE)
df<-data.frame(x=d,y)
ggplot(df,aes(x=d,y))+
  geom_line(colour="green")+
  ggtitle("Weibull distribution \\n 概率密度图")

 

# 这里的h没有大小顺序
h <- rweibull(100000, shape=5, scale=1)
ggplot(NULL,aes(x=h))+
  geom_histogram(binwidth = 0.01,fill="white",colour="red")+
  ggtitle("Weibull distribution \\n 直方图")

 

 

ggplot(NULL,aes(x=h))+
  geom_density(colour="green")+
  ggtitle("Weibull distribution \\n 概率密度图")

ggplot(NULL,aes(x=h))+
  geom_line(stat="density",colour="green")+
  ggtitle("Weibull distribution \\n 概率密度图")

 

library(sqldf)
library(ggplot2)

d<- seq(0, 5, length.out=10000)
df1<-data.frame(num=seq(0,5,length=10000),groupID="λ=1,k=0.5",rw=dweibull(d, scale=1,shape=0.5 ))
df2<-data.frame(num=seq(0,5,length=10000),groupID="λ=1,k=1",rw=dweibull(d, scale=1,shape=1 ))
df3<-data.frame(num=seq(0,5,length=10000),groupID="λ=1,k=1.5",rw=dweibull(d, scale=1,shape=1.5 ))
df4<-data.frame(num=seq(0,5,length=10000),groupID="λ=1,k=5",rw=dweibull(d, scale=1,shape=5 ))


df5<-sqldf("
           select num,groupID,rw from df1
           union all
           select num,groupID,rw from df2
           union all
           select num,groupID,rw from df3
           union all
           select num,groupID,rw from df4 ")

df<-subset(df5, rw <2 )

ggplot(df,aes(x=num,y=rw,group=factor(groupID),colour=factor(groupID)))+
  geom_line()+
  ggtitle("Weibull distribution \\n 概率密度图")

  

 

library(sqldf)
library(ggplot2)
df2<-data.frame(num=seq(0,5,length=10000),groupID="λ=1,k=1",rw=rweibull(10000, scale=1,shape=1 ))
df3<-data.frame(num=seq(0,5,length=10000),groupID="λ=1,k=1.5",rw=rweibull(10000, scale=1,shape=1.5 ))
df4<-data.frame(num=seq(0,5,length=10000),groupID="λ=1,k=5",rw=rweibull(10000, scale=1,shape=5 ))


df<-sqldf("
          select num,groupID,rw from df2
          union all
          select num,groupID,rw from df3
          union all
          select num,groupID,rw from df4 ")

ggplot(df,aes(x=rw,group=factor(groupID),colour=factor(groupID)))+
  geom_density()+
  ggtitle("Weibull distribution \\n 概率密度图")

 

library(sqldf) 
library(ggplot2) 

d<- seq(0, 5, length.out=10000) 
df1<-data.frame(num=seq(0,5,length=10000),groupID="λ=0.5,k=1",rw=dweibull(d, scale=0.5,shape=1 )) 
df2<-data.frame(num=seq(0,5,length=10000),groupID="λ=1,k=1",rw=dweibull(d, scale=1,shape=1 )) 
df3<-data.frame(num=seq(0,5,length=10000),groupID="λ=1.5,k=1",rw=dweibull(d, scale=1.5,shape=1 )) 
df4<-data.frame(num=seq(0,5,length=10000),groupID="λ=3,k=1",rw=dweibull(d, scale=3,shape=1 )) 


df5<-sqldf(" 
           select num,groupID,rw from df1 
           union all 
           select num,groupID,rw from df2 
           union all 
           select num,groupID,rw from df3 
           union all 
           select num,groupID,rw from df4 ") 

df<-df5 

ggplot(df,aes(x=num,y=rw,group=factor(groupID),colour=factor(groupID)))+ 
  geom_line()+ 
  ggtitle("Weibull distribution \\n 概率密度图") 

 

以上是关于ggplot2绘制概率密度图的主要内容,如果未能解决你的问题,请参考以下文章

R可视化ggplot2绘制重叠密度图(Overlay Density Plots)

R语言使用ggplot2包的快速可视化函数qplot绘制基础密度图实战

R语言使用ggplot2包的快速可视化函数qplot绘制密度图(主题轴标签设置)实战

R语言使用ggplot2包使用geom_density()函数绘制基础密度图实战(density plot)

R语言使用ggplot2包的快速可视化函数qplot绘制分组密度图(分组色彩线型配置)实战

用ggplot2绘制密度,x轴上没有线