标签: dendrogram

从R中的族谱数据生成树状图

有没有办法生成树形图,其中图形的每个级别代表一代,并且每个级别只连接同一个父亲的儿子?

我试图使用R的hclust和绘图函数来生成父子谱系的树状图.期望的结果是树形图,其中每一代儿子被放置在他们父亲的同一条线上.

我希望hclust和"完整"方法允许我使用相异矩阵为同一个父亲的儿子分配0相异度分数,然后放在同一层级上,不包括数据集中的任何其他实体.这不起作用,在同一水平上有不同世代的儿子.

任何帮助是极大的赞赏!

以下是一些示例数据:

父亲,儿子
A,C
A,D
A,E
B,F
B,G
C,H
C,I
F,J
F,K
G,L

代理A有三个儿子:C,D和E; 和两个孙子通过C:H和I.

特工B有两个儿子:F和G; 共有三个孙子:J,K和L.

visualization r dendrogram

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

关于树状图的一些问题 - 蟒蛇(Scipy)

我是scipy的新手,但我设法得到了预期的树形图.我还有一些问题;

  1. 在树形图中,某些点之间的距离是0由于图像边界而不可见.如何移除边框并将y轴的下限设为-1,以便清晰可见.例如,这些点之间的距离是0(13,17),(2,10),(4,8,19)
  2. 如何修剪/截断特定距离.例如,修剪0.4
  3. 如何将这些集群(修剪后)写入文件

我的python代码:

import scipy
import pylab
import scipy.cluster.hierarchy as sch
import numpy as np

D = np.genfromtxt('LtoR.txt', dtype=None)
def llf(id):
    return str(id)
fig = pylab.figure(figsize=(10,10))
Y = sch.linkage(D, method='single')
Z1 = sch.dendrogram(Y,leaf_label_func=llf,leaf_rotation=90)
fig.show()
fig.savefig('dendrogram.png')
Run Code Online (Sandbox Code Playgroud)

树状图: 在此输入图像描述

谢谢.

python cluster-analysis dendrogram scipy

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

使用R中的层次聚类生成描绘数据集中的聚类的热图

树状图这是我能够生成的热图我正在尝试使用由蛋白质dna相互作用组成的数据集,对数据进行聚类并生成热图,该热图显示结果数据,使得数据看起来与在对角线上排列的聚类聚集在一起.我能够对数据进行聚类并生成该数据的树形图,但是当我使用R中的热图函数生成数据的热图时,聚类不可见.如果你看前两个图像,一个是我能够生成的树形图,第二个是我能够生成的热图,第三个是集群热图的一个例子,它显示了我对结果的期望粗略地看.从比较第二和第三张图像可以看出,很明显第三张图像中有簇,而第二张图像中没有簇. 示例热图

这是我的数据集的链接:http: //pastebin.com/wQ9tYmjy

我能够聚集数据并在R中生成一个好的:

args <- commandArgs(TRUE);

matrix_a <- read.table(args[1], sep='\t', header=T, row.names=1);

location <- args[2];

matrix_d <- dist(matrix_a);

hc <- hclust(matrix_d,"average");

mypng <- function(filename = "mydefault.png") {

png(filename)

}

options(device = "mypng")

plot(hc);

我也可以生成热图也可以:

matrix_a <- read.table("Arda_list.txt.binary.matrix.txt", sep='\t', header=T, row.names=1);

mtscaled <- as.matrix(scale(matrix_a))

heatmap(mtscaled, Colv=F, scale='none')

我试着按照以下帖子:http: //digitheadslabnotebook.blogspot.com/2011/06/drawing-heatmaps-in-r.html by Christopher Bare,但我遗漏了一些东西.任何想法,将不胜感激.我附上了我得到的热图的图像,以及树形图.图3取自Christopher Bare的帖子.谢谢

r cluster-analysis hierarchical-clustering dendrogram heatmap

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

Scipy树状图叶子标签颜色

是否可以为Scipy的树状图的叶子标签指定颜色?我无法从文档中找到它.这是我到目前为止所尝试的:

from scipy.spatial.distance import pdist, squareform
from scipy.cluster.hierarchy import linkage, dendrogram

distanceMatrix = pdist(subj1.ix[:,:3])
dendrogram(linkage(distanceMatrix, method='complete'), 
           color_threshold=0.3, 
           leaf_label_func=lambda x: subj1['activity'][x],
           leaf_font_size=12)
Run Code Online (Sandbox Code Playgroud)

谢谢.

python hierarchical-clustering dendrogram scipy

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

R树形图中叶子之间的较大字体和间距

我在R中有一个树状图,我无法正确使用它.

我会告诉你问题是什么,请查看:http://img.photobucket.com/albums/v699/rica01/Rplot-1.png

如何在叶子上制作标签,它们之间的间距更大,间距更大?

谢谢.

-Ricardo

tree r dendrogram dendextend

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

R将树状图切成最小的组

是否有一种简单的方法来计算hin的最小值,以cut产生给定最小尺寸的分组?

在此示例中,如果我希望每个集群至少包含十个成员,则应使用h = 3.80

# using iris data simply for reproducible example
data(iris)
d <- data.frame(scale(iris[,1:4]))
hc <- hclust(dist(d))
plot(hc)

cut(as.dendrogram(hc), h=3.79) # produces 5 groups; group 4 has 7 members

cut(as.dendrogram(hc), h=3.80) # produces 4 groups; no group has <10 members
Run Code Online (Sandbox Code Playgroud)

由于分割的高度在中给出hc$height,因此我可以使用创建一组候选值hc$height + 0.00001,然后在每个分割处循环进行切割。不过,我不明白如何解析簇大小members出的dendrogram类。例如,cut(as.dendrogram(hc), h=3.80)$lower[[1]]$members返回NULL,而不是所需的66。

请注意,这是一个比使用包将树状图切成R中最小簇大小的n棵树更简单的问题dynamicTreeCut; 在这里,我没有指定树木的数量,而只是指定了最小的群集大小。TYVM。

r dendrogram hclust

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

尝试打印树形图时出现节点堆栈溢出错误

我试图得到一个内部节点的高度dendrogramBFS顺序.

utils::str函数dendrogramBFS顺序打印.所以我认为我会使用它(将输出重定向到文件并对其进行一些解析以获取我需要的信息).

我的'dendrogram'2个分支机构和5902个成员总共可下载RDS文件链接:dendro.RDS.

当我尝试:

utils::str(dendro)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error in getOption("OutDec") : node stack overflow
Error during wrapup: node stack overflow
Run Code Online (Sandbox Code Playgroud)

我尝试使用一个简单的递归函数:

nodeHeights <- function(dendro){
  if(is.leaf(dendro))
    0
  else{
    cat(attr(dendro,"height"),"\n")
    max(nodeHeights(dendro[[1]]),nodeHeights(dendro[[2]]))+1
  }
}
Run Code Online (Sandbox Code Playgroud)

但是:nodeHeights(dendro)

抛出此错误:

Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
Error during wrapup: evaluation nested too deeply: infinite recursion / options(expressions=)?
Run Code Online (Sandbox Code Playgroud)

任何的想法?或任何建议如何获得的节点高度dendrogramBFS订单?

r dendrogram

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

具有分层聚类的堆叠条形图(树状图)

我正在尝试获取类似的内容,但不幸的是,我找不到任何可以使我用树状图绘制堆积条形图的软件包,如下所示:

树状图

有人知道怎么做吗?

r dendrogram bar-chart dendextend

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

交换Python scipy的树状图/链接的叶子

我为我的数据集生成了一个树状图,但我不满意如何对某些级别的拆分进行排序。因此,我正在寻找一种交换单个拆分的两个分支(或叶子)的方法。

如果我们看一下底部的代码和树状图,则有两个标签,11并且25与大集群的其余部分分开。我对此实在不满意,并希望带有1125的分支成为拆分的右分支,而集群的其余部分成为左分支。所示的距离将仍然相同,因此数据不会改变,只是美观。

能做到吗?如何?我特别适合手动干预,因为最佳叶子排序算法在这种情况下可能无法正常工作。

import numpy as np

# random data set with two clusters
np.random.seed(65)  # for repeatability of this tutorial
a = np.random.multivariate_normal([10, 0], [[3, 1], [1, 4]], size=[10,])
b = np.random.multivariate_normal([0, 20], [[3, 1], [1, 4]], size=[20,])
X = np.concatenate((a, b),)

# create linkage and plot dendrogram    
from scipy.cluster.hierarchy import dendrogram, linkage
Z = linkage(X, 'ward')

plt.figure(figsize=(15, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('sample index')
plt.ylabel('distance')
dendrogram(
    Z,
    leaf_rotation=90.,  # …
Run Code Online (Sandbox Code Playgroud)

python hierarchical-clustering matplotlib dendrogram scipy

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

绘制由 NetworkX Girvan-Newman 算法找到的社区的树状图

用于网络社区检测的 Girvan-Newman 算法:

通过逐步从原始图中移除边来检测社区。该算法会在每一步删除“最有价值”的边缘,传统上是具有最高中介中心性的边缘。当图表分解成碎片时,紧密结合的社区结构暴露出来,结果可以用树状图来描述。

在 NetworkX 中,实现返回集合元组上的迭代器。第一个元组是由 2 个社区组成的第一个切割,第二个元组是由 3 个社区组成的第二个切割,依此类推,直到最后一个元组具有 n 个单独节点(树状图的叶子)的 n 个集合。

import networkx as nx

G = nx.path_graph(10)
comp = nx.community.girvan_newman(G)
list(comp)
Run Code Online (Sandbox Code Playgroud)

[({0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}), ({0, 1}, {2, 3, 4}, {5, 6, 7, 8 , 9}), ({0, 1}, {2, 3, 4}, {5, 6}, {8, 9, 7}), ({0, 1}, {2}, {3, 4 }, {5, 6}, {8, 9, 7}), ({0, 1}, {2}, {3, 4}, {5, 6}, {7}, {8, 9}) , ({0}, …

python matplotlib dendrogram scipy networkx

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