小编Dav*_*rts的帖子

计算直方图或密度函数中的峰值

似乎已经存在很多"密度函数峰值"线程,但我没有看到具体解决这一点.如果我错过了,很抱歉复制.

My problem: Given a vector of 1000 values (sample attached), I would like to identify the peaks in the histogram or density function of the data. From the image of the sample data below , I can see peaks in the histogram at ~0, 6200, and 8400. But I need the obtain the exact values of these peaks, preferably in a simple procedure as I have several thousand of these vectors to process.

历史和密度函数

I originally started working with the …

r histogram

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

R - 使用矩阵布局绘制多个栅格

在R(Win64)中,我试图使用layout()命令在一个绘图窗口中绘制光栅图像和直方图的组合,并使用定义布局的矩阵.这是一些简化数据的示例代码:

library(raster)

r <- raster(ncols=5, nrows=5, xmn=1, xmx=5, ymn=1, ymx=5)
rast1 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))
rast2 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))
rast3 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25))

layout(matrix(c(1,2,3,4,1,2,3,5,1,2,3,6), 3, 4, byrow=T))
layout.show(6)

plot(rast1, axes=F, ann=F, legend=F, box=F, useRaster=T)
plot(rast2, axes=F, ann=F, legend=F, box=F, useRaster=T)
plot(rast3, axes=F, ann=F, legend=F, box=F, useRaster=T)
hist(rnorm(100), ann=F, axes=F)
hist(rnorm(100), ann=F, axes=F)
hist(rnorm(100), ann=F, axes=F)
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在尝试绘制三个光栅图像(rast1,rast2,rast3),每个图像跨越1列,每行3行,旁边有3个直方图,每个直方图跨越1列和1行.layout.show()命令给出了这个想法.

当我运行此代码时,似乎第一个绘图(栅格)命令也会重置绘图窗口的布局,导致所有后续绘图在标准3x4网格中绘制(第5个绘图现在与第一个绘图重叠).布局设置似乎很合理,因为我可以在适当的布局中绘制六个直方图.但是光栅图弄得很糟糕.

我怀疑{raster}中的plot()命令有些东西正在弄乱layout()命令,但我不知道为什么或如何.有没有其他方法来实现这种布局?另一个基于栅格的命令?有没有办法重置栅格图之间的布局?

提前致谢.

layout plot r raster matrix

6
推荐指数
1
解决办法
3391
查看次数

树形图边缘(分支)颜色匹配尖端(叶子)颜色(猿包装)

我正在尝试使用ape包中的plot.phylo命令为R中的系统发育类型图的边(线)添加颜色.这个例子是针对"粉丝"类型的情节,虽然我希望这种方法与"phylogram类型"或其他类似.

library('ape')
hc <- hclust(dist(USArrests), "ave")
plot(as.phylo(hc), type="fan")
Run Code Online (Sandbox Code Playgroud)

使用tip.color选项与cutree命令相结合,基于一组组向提示(标签)添加颜色是没有问题的.

hc.cuts <- cutree(hc, k=5)
plot(as.phylo(hc), type="fan", tip.color=rainbow(5)[hc.cuts])
Run Code Online (Sandbox Code Playgroud)

edge.color选项定义边缘的颜色,但在需要许多颜色时不以logincal方式定义.

plot(as.phylo(hc), type="fan", tip.color=rainbow(5)[hc.cuts], edge.color=rainbow(5)[hc.cuts])
Run Code Online (Sandbox Code Playgroud)

但是,一旦树形图的分支指定给定的组,我希望边缘匹配终端尖端颜色.在给定的示例中,朝向红色和蓝色组,第一级边缘将保持黑色(因为它朝向两组:红色和蓝色),但是超出此范围的边缘将与最终的尖端颜色相同.

我怀疑关键在于弄清楚as.phylo对象中$ edge值的排序,但我自己无法想象.谢谢.

r dendrogram phylogeny dendextend

6
推荐指数
1
解决办法
1871
查看次数

设置起点和终点的旅行推销员 (TSP)

我正在使用 R 中的 TSP 包解决旅行商问题,但试图实现预定的起点和终点。

该包显然允许设置旅程的起点,如下所述: 如何使用 R 中的 TSP 包指定起始城市

想知道是否有人知道设置终点的方法。我了解 TSP 本质上是开放式的,因此可能无法预设端点。在这种情况下,我对另一种最近邻方法持开放态度,该方法会产生类似的结果(按多元相似性/距离进行排序,并设置起点和终点)。

这是一个快速示例:

dat <- data.frame(X=sample(0:100,n)/100,Y=sample(0:100,n)/100,Z=sample(0:100,n)/100)
dat$SUM <- rowSums(dat)

startPoint <- which.min(dat$SUM) # Lowest sum
endPoint   <- which.max(dat$SUM) # Highest sum

tsp <- solve_TSP(TSP(ddat), method="nearest_insertion", start=startPoint)

tsp[1]==startPoint
> TRUE

tsp[n]==endPoint
> FALSE
Run Code Online (Sandbox Code Playgroud)

不幸的是,“nearest_insertion”方法(和任何其他非随机方法)总是返回相同的路径,所以端点永远不会改变。因此,我可以删除 start= 选项,更改为随机起点方法,然后将其放入 while() 循环中,并希望它最终收敛于解决方案:

while(tsp[1]!=startPoint | tsp[n]!=endPoint){
  tsp <- solve_TSP(TSP(dist(dat[c("X","Y","Z")])), method="two_opt")
}

tsp[n]==endPoint
> TRUE
Run Code Online (Sandbox Code Playgroud)

即使对于大数据,这似乎也能一致且非常快速地工作,而且我还没有遇到随机生成的数据集挂起循环。但是使用更优雅(更少蛮力)的方法会很好。有什么想法吗?

r traveling-salesman nearest-neighbor

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