Plot simple tanglegrams from two dendrograms

# tanglegram

Uses scipy and matplotlib to plot simple tanglegrams. Inspired by the amazing dendextend by Tal Galili.

## Installation

First, get PIP and then run in terminal:

pip3 install tanglegram -U


To install the bleeding-edge version from Github you can run:

pip3 install git+git://github.com/schlegelp/tanglegram@master


Attention: on Windows, the dependencies (i.e. Numpy, Pandas and SciPy) will likely fail to install automatically. Your best bet is to get a Python distribution that already includes them (e.g. Anaconda).

#### Dependencies

Installing via PIP should install all external dependencies. You may run into problems on Windows though. In that case, you need to install dependencies manually, here is a list of dependencies (check out install_requires in setup.py for version info):

## How it works

tanglegram exposes three functions:

1. tanglegram.plot plots a tanglegram (optionally untangling)
2. tanglegram.entanglement measures the entanglement between two linkages
3. tanglegram.untangle rotates dendrograms to minimize entanglement
import tanglegram as tg
import matplotlib.pyplot as plt
import pandas as pd

# Generate two distance matrices and just switch labels in one
labelsA= ['A', 'B', 'C', 'D']
labelsB= ['B', 'A', 'C', 'D']
data = [[ 0,  .1,  .4, .3],
[.1,   0,  .5, .6],
[ .4, .5,   0, .2],
[ .3, .6,  .2,  0]]

mat1 = pd.DataFrame(data,
columns=labelsA,
index=labelsA)

mat2 = pd.DataFrame(data,
columns=labelsB,
index=labelsB)

# Plot tanglegram
fig = tg.plot(mat1, mat2, sort=False)
plt.show()

# Plot again but this time try minimizing cross-over
fig = tg.plot(mat1, mat2, sort=True)
plt.show()


## Known Issues:

• layout does not scale well, i.e. small dendrograms look weird

This code is under GNU GPL V3

## Project details

Uploaded Source
Uploaded Python 3