相关疑难解决方法(0)

在python中绘制数据矩阵的层次聚类结果

如何在值矩阵之上绘制树形图,在Python中适当地重新排序以反映聚类?一个例子如下图:

https://publishing-cdn.elifesciences.org/07103/elife-07103-fig6-figsupp1-v2.jpg

我使用scipy.cluster.dendrogram来制作树形图并对数据矩阵执行层次聚类.然后,我如何将数据绘制为矩阵,其中行已重新排序以反映在特定阈值处切割树状图所引起的聚类,并将树状图绘制在矩阵旁边?我知道如何在scipy中绘制树形图,而不是如何在其旁边的右侧比例尺绘制数据的强度矩阵.

任何有关这方面的帮助将不胜感激.

python cluster-analysis machine-learning matplotlib scipy

48
推荐指数
2
解决办法
3万
查看次数

如何使用极坐标绘制scipy.hierarchy.dendrogram?

我正在尝试将以下资源调整到这个问题:

Python之间的坐标转换

https://matplotlib.org/gallery/pie_and_polar_charts/polar_scatter.html

我似乎无法获得坐标将树状图形状转移到极坐标.

有谁知道如何做到这一点?我知道networkx中有一个实现,但是需要构建一个图形,然后使用pygraphviz后端来获取位置.

有没有办法将树状图笛卡尔坐标转换为极坐标matplotlibnumpy

import requests
from ast import literal_eval
import matplotlib.pyplot as plt
import numpy as np 

def read_url(url):
    r = requests.get(url)
    return r.text

def cartesian_to_polar(x, y):
    rho = np.sqrt(x**2 + y**2)
    phi = np.arctan2(y, x)
    return(rho, phi)

def plot_dendrogram(icoord,dcoord,figsize, polar=False):
    if polar:
        icoord, dcoord = cartesian_to_polar(icoord, dcoord)
    with plt.style.context("seaborn-white"):
        fig = plt.figure(figsize=figsize)
        ax = fig.add_subplot(111, polar=polar)
        for xs, ys in zip(icoord, dcoord):
            ax.plot(xs,ys, color="black")
        ax.set_title(f"Polar= {polar}", fontsize=15)

# Load the dendrogram data …
Run Code Online (Sandbox Code Playgroud)

python plot dendrogram polar-coordinates cartesian-coordinates

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

如何从Python生成D3.js循环树形图代码

使用D3.js生成下图.

在此输入图像描述

根据这里的代码:

<!DOCTYPE html>
<meta charset="utf-8">
<title>Flare Dendrogram</title>
<style>

.node circle {
  fill: #fff;
  stroke: steelblue;
  stroke-width: 1.5px;
}

.node {
  font: 10px sans-serif;
}

.link {
  fill: none;
  stroke: #ccc;
  stroke-width: 1.5px;
}

</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>

var radius = 960 / 2;

var cluster = d3.layout.cluster()
    .size([360, radius - 120]);

var diagonal = d3.svg.diagonal.radial()
    .projection(function(d) { return [d.y, d.x / 180 * Math.PI]; });

var svg = d3.select("body").append("svg")
    .attr("width", radius * 2)
    .attr("height", radius * …
Run Code Online (Sandbox Code Playgroud)

javascript python plot d3.js

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