标签: density-plot

如何在R中叠加密度图?

我想用R覆盖同一设备上的2个密度图.我该怎么做?我搜索了网络,但我没有找到任何明显的解决方案(我对R来说很新).

我的想法是从文本文件(列)中读取数据然后使用

plot(density(MyData$Column1))
plot(density(MyData$Column2), add=T)
Run Code Online (Sandbox Code Playgroud)

这种精神......

提前致谢

plot r density-plot

74
推荐指数
5
解决办法
15万
查看次数

ggplot_stat_density2d用于生态分布

我试图描绘我正在阿拉伯/波斯湾研究的某些生物的生态分布.以下是我尝试过的代码示例:

背景层

library(ggplot2)
library(ggmap)

nc <- get_map("Persian Gulf", zoom = 6, maptype = 'terrain', language = "English")
ncmap <- ggmap(nc,  extent = "device")
Run Code Online (Sandbox Code Playgroud)

其他层

  ncmap+
    stat_density2d(data=sample.data3, aes(x=long, y=lat, fill=..level.., alpha=..level..),geom="polygon")+
    geom_point(data=sample.data3, aes(x=long, y=lat))+
    geom_point(aes(x =50.626444, y = 26.044472), color="red", size = 4)+
    scale_fill_gradient(low = "green", high = "red") + scale_alpha(range = c(0.00, 0.25), guide = FALSE)
Run Code Online (Sandbox Code Playgroud)

但是,我想用它stat_density2d来显示数百种物种的分布(在列中记录,例如SP1 ...... SPn),而不仅仅是显示纬度和经度.

此外,是否可以将我的热图限制在水体中?我将非常感谢我能得到的任何帮助和建议用上面的代码生成的图像

r ggplot2 density-plot

14
推荐指数
1
解决办法
390
查看次数

如何在ggplot中遮蔽部分密度曲线(没有y轴数据)

我正在尝试使用1000之间的一组随机数在R中创建密度曲线,并将小于或等于某个值的部分着色.有很多解决方案涉及geom_areageom_ribbon,但它们都需要一个yval,我没有(它只是1000个数字的向量).有关如何做到这一点的任何想法?

另外两个相关问题:

  1. 是否有可能对累积密度函数(我目前正在使用stat_ecdf它生成一个)做同样的事情,或者根本不用它?
  2. 有没有办法编辑geom_vline所以它只会达到密度曲线的高度,而不是整个y轴?

代码:( geom_area尝试编辑我发现的一些代码是失败的.如果我ymax手动设置,我只需要一个列占据整个图,而不仅仅是曲线下面的区域)

set.seed(100)

amount_spent <- rnorm(1000,500,150)
amount_spent1<- data.frame(amount_spent)
rand1 <- runif(1,0,1000)
amount_spent1$pdf <- dnorm(amount_spent1$amount_spent)

mean1 <- mean(amount_spent1$amount_spent)

#density/bell curve
ggplot(amount_spent1,aes(amount_spent)) +
   geom_density( size=1.05, color="gray64", alpha=.5, fill="gray77") +
   geom_vline(xintercept=mean1, alpha=.7, linetype="dashed", size=1.1, color="cadetblue4")+
   geom_vline(xintercept=rand1, alpha=.7, linetype="dashed",size=1.1, color="red3")+
   geom_area(mapping=aes(ifelse(amount_spent1$amount_spent > rand1,amount_spent1$amount_spent,0)), ymin=0, ymax=.03,fill="red",alpha=.3)+
   ylab("")+ 
   xlab("Amount spent on lobbying (in Millions USD)")+
   scale_x_continuous(breaks=seq(0,1000,100))
Run Code Online (Sandbox Code Playgroud)

r ggplot2 density-plot

12
推荐指数
1
解决办法
4460
查看次数

R:如何:使用gplot和geom_density绘制3d密度图

我正在尝试将多个密度图与叠加层结合起来.ggplot和geom_density可以完成这项任务,但密度相互叠加.这是重叠但不是3d

ggplot(all.complete, aes(x=humid_temp)) +  
  geom_density(aes(group=height, colour=height, fill=height.f, alpha=0.1)) + 
  guides(fill = guide_legend(override.aes = list(colour = NULL))) +
  labs(main="Temperature by Height", x="Temperature", y="Density")
Run Code Online (Sandbox Code Playgroud)

与此类似的是我正在努力实现的目标: 密度? 与3d叠加

就我而言,年份将由身高代替.

谢谢!!!

3d r density-plot

11
推荐指数
2
解决办法
6800
查看次数

使用ggplot2沿平滑曲线绘制直方图或密度

是否有通用的方法来绘制密度(小提琴图)或直方图,显示x沿平滑(x,y)曲线的分布?我使用这种方法来显示x何时存在多个组的边际分布(例如,一个面板上的不同曲线,由不同颜色描绘).

下面是一个使用Hmiscplsmo函数得到分层黄土曲线和尖峰直方图的示例,显示了sex特定的数据密度age.

require(Hmisc)
set.seed(1)
age <- rnorm(500, 50, 15)
y <- sample(0:1, 500, TRUE)
sex <- sample(c('female','male'), 500, TRUE)
plsmo(age, y, group=sex, col=1:2,
      datadensity=TRUE, scat1d.opts=list(nhistSpike=20))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r histogram ggplot2 density-plot

11
推荐指数
1
解决办法
962
查看次数

在Matlab中使用密度绘制散点图

我想在一个图中垂直绘制数据集1和数据集2.不幸的是,数据很大,所以它只是一个点的污点,无法看到密度.我尝试了hist3和其他建议,但它覆盖了我的数据集,并且分箱看起来很糟糕.

是否有另一种绘制散点密度图的方法?它真的没有Matlab功能吗?如果没有,我可以使用哪个程序轻松生成这样的情节?

这两个例子之间的混合:

例1

示例2 http://www.bcgsc.ca/people/malachig/htdocs/alexa_platform/alexa_seq/FL_Trans/images/HS1361/ExonRegionVsGeneExpression_Log2.jpeg

matlab plot density-plot

10
推荐指数
1
解决办法
3万
查看次数

geom_density()图中的多个组

我试图在一个geom_density()图中绘制3组.

数据采用长格式:

MEI Count   Region
-2.031  10  MidWest
-1.999  0   MidWest
-1.945  15  MidWest
-1.944  1   MidWest
-1.875  6   MidWest
-1.873  10  MidWest
-1.846  18  MidWest
Run Code Online (Sandbox Code Playgroud)

Region是变量,因此还有South和NorthEast值,代码如下:

ggplot(d, aes(x=d$MEI, group=d$region)) + 
  geom_density(adjust=2) + 
  xlab("MEI") +
  ylab("Density")
Run Code Online (Sandbox Code Playgroud)

情节但只有一个密度不是3

更近一步

在此输入图像描述

在此输入图像描述

r ggplot2 density-plot

8
推荐指数
2
解决办法
1万
查看次数

使用ggplot2中的计数数据向直方图添加密度线

我想在直方图中添加密度线(实际上是正常密度).

假设我有以下数据.我可以通过ggplot2以下方式绘制直方图:

set.seed(123)    
df <- data.frame(x = rbeta(10000, shape1 = 2, shape2 = 4))

ggplot(df, aes(x = x)) + geom_histogram(colour = "black", fill = "white", 
                                        binwidth = 0.01) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我可以使用以下方法添加密度线:

ggplot(df, aes(x = x)) + 
  geom_histogram(aes(y = ..density..),colour = "black", fill = "white", 
                 binwidth = 0.01) + 
  stat_function(fun = dnorm, args = list(mean = mean(df$x), sd = sd(df$x)))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但这不是我真正想要的,我希望这个密度线适合计数数据.

我发现了一个类似的帖子(HERE)提供了解决这个问题的方法.但它在我的情况下不起作用.我需要一个任意的扩展因子来得到我想要的东西.这根本不是一般化的:

ef <- 100 # Expansion factor

ggplot(df, aes(x = x)) + 
  geom_histogram(colour = "black", fill = "white", …
Run Code Online (Sandbox Code Playgroud)

r histogram ggplot2 density-plot

8
推荐指数
1
解决办法
8446
查看次数

有关如何使用ggplot2绘制mixEM类型数据的任何建议

我有一个从原始数据中获得的1m记录样本.(供您参考,您可以使用可能产生大致相似分布的虚拟数据

b <- data.frame(matrix(rnorm(2000000, mean=c(8,17), sd=2)))
c <- b[sample(nrow(b), 1000000), ]
Run Code Online (Sandbox Code Playgroud)

我认为直方图是两个对数正态分布的混合,我试图使用EM算法使用以下代码拟合求和的分布:

install.packages("mixtools")
lib(mixtools)
#line below returns EM output of type mixEM[] for mixture of normal distributions
c1 <- normalmixEM(c, lambda=NULL, mu=NULL, sigma=NULL) 
plot(c1, density=TRUE)
Run Code Online (Sandbox Code Playgroud)

第一个图是对数似然图,第二个图(如果再次点击返回),给出类似于以下密度曲线:

混合物模型密度曲线

正如我所提到的,c1的类型为mixEM [],而plot()函数可以容纳它.我想用颜色填充密度曲线.这很容易使用ggplot2()但ggplot2()不支持mixEM []类型的数据并抛出此消息:

"ggplot不知道如何处理类mixEM的数据"我还能采取其他方法解决这个问题吗?任何建议都非常感谢!!

谢谢!

r em ggplot2 density-plot mixture-model

7
推荐指数
2
解决办法
3059
查看次数

ggplot2密度与密度函数有何不同?

为什么以下情节看起来不同?两种方法似乎都使用高斯内核.

如何ggplot2计算密度?

library(fueleconomy)

d <- density(vehicles$cty, n=2000)
ggplot(NULL, aes(x=d$x, y=d$y)) + geom_line() + scale_x_log10()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ggplot(vehicles, aes(x=cty)) + geom_density() + scale_x_log10()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


更新:

这个问题的解决方案已经在SO上出现,但是ggplot2传递给R stats密度函数的具体参数仍然不清楚.

一种替代的解决方案是从GGPLOT2情节直提取密度数据,如图这里

r ggplot2 density-plot

7
推荐指数
1
解决办法
817
查看次数

标签 统计

density-plot ×10

r ×9

ggplot2 ×7

histogram ×2

plot ×2

3d ×1

em ×1

matlab ×1

mixture-model ×1