标签: density-plot

ggplot中的密度图

假设我有以下数据集:

set.seed(seed=10)
n <- 10000
s.data <- data.frame(score = rnorm(n,500,100),
                     gender = sample(c("Male","Female"),size=n,replace=T,prob=c(.4,.6)),
                     major = sample(c("A","B","C","D"),size=n,replace=T,prob=c(.02,.25,.05,.68)))
Run Code Online (Sandbox Code Playgroud)

我创建以下直方图:

require(ggplot2)
ggplot(s.data, aes(x=score)) + facet_wrap(~ major) +
  geom_histogram(binwidth=50,colour="black", fill="white") 
Run Code Online (Sandbox Code Playgroud)

直方图1

由于我想了解有关主要A和C的更多细节,我绘制了一个密度直方图:

ggplot(s.data, aes(x=score)) + facet_wrap(~ major) +
  geom_histogram(binwidth=50,aes(y = ..density..),colour="black", fill="white") 
Run Code Online (Sandbox Code Playgroud)

直方图2 完美到现在为止.

当我尝试使用分类变量(而不是连续变量)做同样的事情时,我可以做频率但无法绘制密度:

ggplot(s.data, aes(gender)) + 
   geom_histogram(colour="black", fill="white") + 
   facet_wrap(~ major)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想要的.

但是我不知道这张图:

ggplot(s.data, aes(gender)) + 
       geom_histogram(aes(y = ..density..),colour="black", fill="white") + 
       facet_wrap(~ major)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有任何想法吗?提前致谢.

r frequency histogram ggplot2 density-plot

5
推荐指数
0
解决办法
116
查看次数

用透明颜色填充密度曲线

我有一个数据框,想要根据两列做一个叠加密度图.我希望颜色是透明的.我使用填充选项完成了此操作,并且基本上将填充分配为因子列.如果默认情况下有一个因子列,则所有填充都将是透明的.

但在这样的情况下,没有因素我们如何用透明填充它.

library("ggplot2")
vec1 <- data.frame(x=rnorm(2000, 0, 1))
vec2 <- data.frame(x=rnorm(3000, 1, 1.5))

ggplot() + geom_density(aes(x=x), fill="red", data=vec1) + 
  geom_density(aes(x=x), fill="blue", data=vec2)
Run Code Online (Sandbox Code Playgroud)

我尝试添加,geom_density(alpha=0.4)但它没有任何好处. 在此输入图像描述

r ggplot2 kernel-density density-plot

5
推荐指数
1
解决办法
8315
查看次数

R密度bw.SJ的误差

我使用密度函数与SJ方法:

rdat <- rnorm(111111)
density(rdat, bw = "sj")
Error in bw.SJ(x, method = "ste") : sample is too sparse to find TD
Run Code Online (Sandbox Code Playgroud)

它似乎在大样本上失败,说明样本太稀疏.这种情况以前也有人问在这里,但自2008年以来有什么改变?对于这个/变通办法有没有任何修复?

编辑:限制似乎是 46341

r density-plot

5
推荐指数
1
解决办法
664
查看次数

平滑密度图Mathematica

我正在将三列表导入Mathematica并使用它来制作密度图.但是,除非您以小增量获得非常大量的数据,否则密度图看起来是脱节的,显然不是连续的.

有没有办法或功能来平滑我的阴谋?

谢谢,本

plot wolfram-mathematica density-plot

4
推荐指数
1
解决办法
1650
查看次数

图例不显示ggplot2密度图中的线型

我用带有3个变量的数据框创建了一个带有ggplot的密度图.一条密度线是虚线,但图例显示该线的实线.

数据如下所示:

> head(df)
            R1          R2           R3
1  0.085383867  0.04366546  0.055320885
2  0.059148932  0.03477045  0.040804048
3 -0.181279986 -0.10189900 -0.097218145
4  0.002307494 -0.01137235 -0.003585813
5 -0.047816198 -0.04932982 -0.009389939
6  0.030535090  0.02544292  0.017650949
Run Code Online (Sandbox Code Playgroud)

该图的代码是:

ggplot(data=df)+
  stat_density(aes(x=R1, colour="rho = -0,6"), adjust=4, lwd=0.5, geom="line", position="identity")+
  stat_density(aes(x=R2, colour="rho = 0,6"), adjust=4, lwd=0.5, geom="line", position="identity")+
  stat_density(aes(x=R3, colour="rho = 0"), linetype=2, adjust=4, lwd=0.5, geom="line", position="identity")+
  xlim(-0.5, 0.5)+
  xlab("Renditen")+
  ylab("Dichte")+
  ggtitle("Renditeverteilung im Heston-Modell")+
  theme(plot.title=element_text(face="bold", size=16, vjust=2), axis.title.x=element_text(vjust=-1, size=12), 
          axis.title.y=element_text(vjust=-0.25, size=12), legend.text=element_text(size=12), legend.title=element_text(size=12), legend.margin=unit(1.5, "cm"),
          legend.key.height=unit(1.2, "line"), legend.key.size=unit(0.4, "cm"), …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 legend-properties density-plot

4
推荐指数
1
解决办法
3935
查看次数

重叠堆积密度图

我正在尝试使用R的本机plot命令获得与此图相似的图。

在此处输入图片说明

我可以使用下面的代码得到类似的结果,但是,我希望密度多边形重叠。有人可以建议一种方法吗?

data = lapply(1:5, function(x) density(rnorm(100, mean = x)))

par(mfrow=c(5,1))
for(i in 1:length(data)){
  plot(data[[i]], xaxt='n', yaxt='n', main='', xlim=c(-2, 8), xlab='', ylab='', bty='n', lwd=1)
  polygon(data[[i]], col=rgb(0,0,0,.4), border=NA)
  abline(h=0, lwd=0.5)
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

plot r density-plot probability-density stacked-chart

4
推荐指数
1
解决办法
1152
查看次数

sm.density.compare():在单个图中显示多个密度估计

我试图在R中叠加三个不同的密度图来创建一个显示所有三条线的图(叠加).我已经sm安装/加载了包,但我尝试使用它与我的数据无济于事.我创建了三个单独的数据图,只需使用density()和绘制值.我的代码看起来像这样:

library(sm)

set.seed(0)
x <- rnorm(100, 0, 1)
y <- rnorm(126, 0.3, 1.2)
z <- rnorm(93, -0.5, 0.7)
dx <- density(x)
dy <- density(y)
dz <- density(z)

plot(dx)
plot(dy)
plot(dz)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用sm.density.compare()叠加图形时:

sm.density.compare(dx,dy,model="equal")
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

sm.density.compare(dx,dy,model ="equal")
出错:sm.density.compare只能处理1-d数据跟踪:

有谁知道如何解决这个问题?我研究了很多但没有成功.我是R的新手,可以真正使用帮助.

r density-plot

4
推荐指数
1
解决办法
6795
查看次数

将 vline 添加到 geom_density 和均值 R 的阴影置信区间

通过不同的帖子看完后,我发现了如何的均值V线增加密度图如图所示这里。使用上述链接中提供的数据:

1) 如何使用 geom_ribbon 在平均值周围添加 95% 的置信区间?CI 可以计算为

#computation of the standard error of the mean
sem<-sd(x)/sqrt(length(x))
#95% confidence intervals of the mean
c(mean(x)-2*sem,mean(x)+2*sem)
Run Code Online (Sandbox Code Playgroud)

2)如何将vline限制在曲线下的区域?您将在下图中看到曲线外的 vline 图。

可以在https://www.dropbox.com/s/bvvfdppekbjyjh0/test.csv?dl=0找到非常接近我的实际问题的示例数据

样地

更新

使用上面链接中的真实数据,我使用@beetroot 的答案尝试了以下操作。

# Find the mean of each group
dat=me
library(dplyr)
library(plyr)
cdat <- ddply(data,.(direction,cond), summarise, rating.mean=mean(rating,na.rm=T))# summarize by season and variable
cdat

#ggplot
p=ggplot(data,aes(x = rating)) + 
  geom_density(aes(colour = cond),size=1.3,adjust=4)+
  facet_grid(.~direction, scales="free")+
  xlab(NULL) + ylab("Density")
p=p+coord_cartesian(xlim = c(0, 130))+scale_color_manual(name="",values=c("blue","#00BA38","#F8766D"))+
  scale_fill_manual(values=c("blue", "#00BA38", "#F8766D"))+
  theme(legend.title = element_text(colour="black", size=15, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 density-plot

4
推荐指数
1
解决办法
5290
查看次数

在 geom_密度_脊上画线

我试图在 ggridges 的密度图中画一条线

library(ggplot2)
library(ggridges)
ggplot(iris, aes(x = Sepal.Length, y = Species)) + 
  geom_density_ridges(rel_min_height = 0.01)
Run Code Online (Sandbox Code Playgroud)

指示最高点并标记该点的 x 值。像下面这样的东西。非常感谢任何有关实现此目标的建议

在此输入图像描述

r ggplot2 density-plot

4
推荐指数
1
解决办法
2968
查看次数

如何在单个 ggplot2 中对齐图层(密度图和垂直线)

我正在尝试调整同时使用stat_function和的图的图层geom_vline。我的问题是垂直线与绿色区域不完全对齐:

具有垂直线的密度图(未对齐)

在此处输入图片说明

这篇文章中,我看到了一个对齐两个单独绘图的解决方案,但是,在我的情况下,我想在同一个绘图中对齐。

all_mean <- mean(mtcars$wt,na.rm = T)%>% round(2)
all_sd <- sd(mtcars$wt,na.rm = T)%>% round(2)
my_score <- mtcars[1,"wt"]


dd <- function(x) { dnorm(x, mean=all_mean, sd=all_sd) }

z <- (my_score - all_mean)/all_sd

pc <- round(100*(pnorm(z)), digits=0)

t1 <- paste0(as.character(pc),"th percentile")

p33 <- all_mean + (qnorm(0.3333) * all_sd)
p67 <- all_mean + (qnorm(0.6667) * all_sd)

funcShaded <- function(x, lower_bound) {
  y = dnorm(x, mean = all_mean, sd = all_sd)
  y[x < lower_bound] <- NA
  return(y)
} …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 density-plot

4
推荐指数
1
解决办法
163
查看次数