├── .binstar.yml ├── .gitignore ├── .travis.yml ├── LICENSE ├── MANIFEST.in ├── README.md ├── appveyor.yml ├── build.sh ├── codecov.yml ├── environment.yml ├── examples └── protein_graphs │ ├── Make Protein Graph Hiveplot.ipynb │ ├── hiv1_homology_model.pkl │ └── protein_graph.pdf ├── hiveplot ├── __init__.py ├── hiveplot.py └── test_hiveplot.py ├── requirements.txt ├── setup.cfg ├── setup.py ├── test.sh └── tests ├── test_data ├── Tests.ipynb └── test_graph.pkl └── test_import.py /.binstar.yml: -------------------------------------------------------------------------------- 1 | 2 | ## The package attribute specifies a binstar package namespace to build the package to. 3 | ## This can be specified here or on the command line 4 | package: hiveplot 5 | 6 | ## You can also specify the account to upload to, 7 | ## you must be an admin of that account, this 8 | ## defaults to your user account 9 | user: ericmjl 10 | 11 | ## You can give install_channels, the channels needed for 12 | ## install and build. For example, the r channel is needed for 13 | ## r builds. Channel 'defaults' is always added. 14 | install_channels: 15 | - ericmjl 16 | 17 | #=============================================================================== 18 | # Build Matrix Options 19 | # These options may be a single item, a list or empty 20 | # The resulting number of builds is [platform * engine * envvars] 21 | #=============================================================================== 22 | 23 | ## The platforms to build on. 24 | ## platform defaults to linux-64 25 | platform: 26 | - linux-64 27 | - linux-32 28 | ## The engine are the inital conda packages you want to run with 29 | engine: 30 | # - python=2 31 | - python=3 32 | ## The envvars param is an environment variable list 33 | # envvars: 34 | # - MY_ENV=A CC=gcc 35 | # - MY_ENV=B 36 | 37 | #=============================================================================== 38 | # Script options 39 | # These options may be broken out into the before_script, script and after_script 40 | # or not, that is up to you 41 | #=============================================================================== 42 | 43 | ## Run before the script 44 | # before_script: 45 | # - echo "before_script!" 46 | ## Put your main computations here! 47 | script: 48 | - echo "This is my binstar build!" 49 | ## This will run after the script regardless of the result of script 50 | ## BINSTAR_BUILD_RESULT=[succcess|failure] 51 | # after_script: 52 | # - echo "The build was a $BINSTAR_BUILD_RESULT" | tee artifact1.txt 53 | ## This will be run only after a successful build 54 | # after_success: 55 | # - echo "after_success!" 56 | ## This will be run only after a build failure 57 | # after_failure: 58 | # - echo "after_failure!" 59 | 60 | #=============================================================================== 61 | # Build Results 62 | # Build results are split into two categories: artifacts and targets 63 | # You may omit either key and stiff have a successful build 64 | # They may be a string, list and contain any bash glob 65 | #=============================================================================== 66 | 67 | ## Build Targets: Upload these files to your binstar package 68 | ## build targets may be a list of files (globs allows) to upload 69 | ## The special build targets 'conda' and 'pypi' may be used to 70 | ## upload conda builds 71 | ## e.g. conda is an alias for /opt/anaconda/conda-bld//*.tar.bz2 72 | build_targets: 73 | - conda 74 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Custom stuff 2 | hiveplot/bin/* 3 | 4 | # Python stuff 5 | *.egg-info 6 | build/* 7 | dist/* 8 | 9 | # Byte-compiled / optimized / DLL files 10 | __pycache__/ 11 | *.py[cod] 12 | *$py.class 13 | 14 | # C extensions 15 | *.so 16 | 17 | # Distribution / packaging 18 | .Python 19 | env/ 20 | build/ 21 | develop-eggs/ 22 | dist/ 23 | downloads/ 24 | eggs/ 25 | .eggs/ 26 | lib/ 27 | lib64/ 28 | parts/ 29 | sdist/ 30 | var/ 31 | *.egg-info/ 32 | .installed.cfg 33 | *.egg 34 | 35 | # PyInstaller 36 | # Usually these files are written by a python script from a template 37 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 38 | *.manifest 39 | *.spec 40 | 41 | # Installer logs 42 | pip-log.txt 43 | pip-delete-this-directory.txt 44 | 45 | # Unit test / coverage reports 46 | htmlcov/ 47 | .tox/ 48 | .coverage 49 | .coverage.* 50 | .cache 51 | nosetests.xml 52 | coverage.xml 53 | *,cover 54 | 55 | # Translations 56 | *.mo 57 | *.pot 58 | 59 | # Django stuff: 60 | *.log 61 | 62 | # Sphinx documentation 63 | docs/_build/ 64 | 65 | # PyBuilder 66 | target/ 67 | 68 | # Ipython Notebook 69 | .ipynb_checkpoints 70 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | # We don't actually use the Travis Python, but this keeps it organized. 4 | - "3.5" 5 | install: 6 | # We do this conditionally because it saves us some downloading if the 7 | # version is the same. 8 | - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh; 9 | - bash miniconda.sh -b -p $HOME/miniconda 10 | - export PATH="$HOME/miniconda/bin:$PATH" 11 | - hash -r 12 | - conda config --set always_yes yes --set changeps1 no 13 | - conda update -q conda 14 | 15 | # Useful for debugging any issues with conda 16 | - conda info -a 17 | 18 | # Install Python, py.text, and required packages. 19 | - conda env create -f environment.yml 20 | - source activate hiveplot 21 | - python setup.py install 22 | 23 | script: 24 | # Your test script goes here 25 | - pycodestyle hiveplot/ 26 | - pycodestyle tests/ 27 | - py.test tests/ 28 | 29 | after_success: 30 | - bash <(curl -s https://codecov.io/bash) 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Eric Ma 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include requirements.txt 2 | include README.md 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hiveplot 2 | 3 | Hive Plots in using Python & matplotlib! 4 | 5 | pypi page: https://pypi.python.org/pypi/hiveplot 6 | 7 | ## Badges 8 | 9 | - [![Code Issues](https://www.quantifiedcode.com/api/v1/project/d5a88f4523c04e7294fc5dd58c1edee6/badge.svg)](https://www.quantifiedcode.com/app/project/d5a88f4523c04e7294fc5dd58c1edee6) (QuantifiedCode) 10 | - [![Build Status](https://travis-ci.org/ericmjl/hiveplot.svg?branch=master)](https://travis-ci.org/ericmjl/hiveplot) (Travis CI) 11 | 12 | ## How to install hiveplot 13 | 14 | To install `hiveplot`, you need to have `matplotlib` installed - that's the only dependency required. If you are using `networkx` to create your graphs, you will need that as well. 15 | 16 | To run one of the notebook examples, you may need to install the [Protein Interaction Network](https://github.com/ericmjl/protein-interaction-network) package from GitHub. 17 | 18 | ## How to use hiveplot 19 | 20 | Hive Plots are used for visualizing large network data in a rational way. Hive Plots are non-trivial to create, but I have made this Python package to help boil it down to the essentials. 21 | 22 | The original creator of Hive Plots is Martin Krzywinski of the BCGSC. His website is at: http://mkweb.bcgsc.ca 23 | 24 | An example graph is available in the `test` folder. Alternatively, you can view the IPython notebook online: http://nbviewer.ipython.org/github/ericmjl/hiveplot/blob/master/test/test_data/Tests.ipynb 25 | 26 | To start, I assume that you have some network data. In your network data, you will have nodes and edges. 27 | 28 | Firstly, decide how you will group your nodes. Hive plots work best with up to 3 groups. Secondly, decide how you will order your nodes along each group. A common ordering is by degree centrality, which is how hiveplot currently does it automatically. Together, you can put together the first parameter put into hiveplot, which is a dictionary of `{group:[list_of_nodes]}`. 29 | 30 | Example code: 31 | 32 | ## assume that you have a graph called G 33 | nodes = dict() 34 | nodes['group1'] = [(n,d) for n, d in G.nodes(data=True) if d == some_criteria()] 35 | nodes['group2'] = [(n,d) for n, d in G.nodes(data=True) if d == other_criteria()] 36 | nodes['group3'] = [(n,d) for n, d in G.nodes(data=True) if d == third_criteria()] 37 | 38 | You may wish to sort your nodes by some criteria. 39 | 40 | for group, nodelist in nodes.items(): 41 | nodes[group] = sorted(nodelist, key=keyfunc()) 42 | ... 43 | 44 | Note: `keyfunc()` might work on the node attributes `d`. That is why we included the `d` dictionary of attributes inside. 45 | 46 | Finally, you will need to get just the node ids out. 47 | 48 | nodes[group] = [n for n, d in nodes[group]] 49 | 50 | Next, you will need to group your edges. Do this in a similar fashion as nodes. 51 | 52 | edges = dict() 53 | edges['group1'] = [(u,v,d) for u,v,d in G.edges(data=True) if d == some_criteria()] 54 | ... 55 | 56 | Finally, you will need a color map for the nodes and edges respectively. 57 | 58 | nodes_cmap = dict() 59 | nodes_cmap['group1'] = 'green' 60 | nodes_cmap['group2'] = 'red' 61 | nodes_cmap['group3'] = 'blue' 62 | 63 | edges_cmap = dict() 64 | edges_cmap['group1'] = 'green' 65 | ... 66 | 67 | Once all of this is setup, you can plot the Hive Plot! 68 | 69 | h = HivePlot(nodes, edges, nodes_camp, edges_cmap) 70 | h.draw() 71 | 72 | All contributions to improve the package are welcome! 73 | 74 | ## Change Log 75 | 76 | 0.1.8.2: 77 | 78 | 1. Changed the setup script to use `MANIFEST.in`. 79 | 80 | 0.1.7.4: 81 | 82 | 1. Fixed a bug that would cause drawing to not work on Python 3 `dict_key` objects do not have a `.index(item)` the way `lists` have. 83 | 84 | 0.1.7.1: 85 | 86 | 1. Changed all tabs into four spaces. 87 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericmjl/hiveplot/f465a7118b7f005c83ab054d400deb02bd9f7410/appveyor.yml -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | cd dist/ 2 | rm * 3 | cd .. 4 | python setup.py sdist bdist_wheel 5 | twine upload dist/* -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | # Initialized as an empty file. 2 | -------------------------------------------------------------------------------- /environment.yml: -------------------------------------------------------------------------------- 1 | name: hiveplot 2 | dependencies: 3 | - matplotlib 4 | - mkl 5 | - numpy 6 | - openssl 7 | - pip 8 | - python=3.5 9 | - readline 10 | - setuptools 11 | - tk 12 | - wheel 13 | - xz 14 | - zlib 15 | - pip: 16 | - pytest 17 | -------------------------------------------------------------------------------- /examples/protein_graphs/Make Protein Graph Hiveplot.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "%matplotlib inline" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": { 18 | "collapsed": true 19 | }, 20 | "outputs": [], 21 | "source": [ 22 | "from hiveplot import HivePlot\n", 23 | "import networkx as nx\n", 24 | "import matplotlib.pyplot as plt" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 3, 30 | "metadata": { 31 | "collapsed": false 32 | }, 33 | "outputs": [ 34 | { 35 | "name": "stderr", 36 | "output_type": "stream", 37 | "text": [ 38 | "/Users/ericmjl/anaconda/lib/python3.5/site-packages/sklearn/preprocessing/data.py:583: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", 39 | " warnings.warn(DEPRECATION_MSG_1D, DeprecationWarning)\n", 40 | "/Users/ericmjl/anaconda/lib/python3.5/site-packages/sklearn/preprocessing/data.py:583: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", 41 | " warnings.warn(DEPRECATION_MSG_1D, DeprecationWarning)\n" 42 | ] 43 | }, 44 | { 45 | "data": { 46 | "text/plain": [ 47 | "" 48 | ] 49 | }, 50 | "execution_count": 3, 51 | "metadata": {}, 52 | "output_type": "execute_result" 53 | } 54 | ], 55 | "source": [ 56 | "p = nx.read_gpickle('hiv1_homology_model.pkl')\n", 57 | "p" 58 | ] 59 | }, 60 | { 61 | "cell_type": "code", 62 | "execution_count": 4, 63 | "metadata": { 64 | "collapsed": false 65 | }, 66 | "outputs": [ 67 | { 68 | "data": { 69 | "text/plain": [ 70 | "('B62ILE',\n", 71 | " {'chain_id': 'B',\n", 72 | " 'features': array([[ 0. , 0. , 0. , 0. ,\n", 73 | " 0. , 0. , 0. , 0. ,\n", 74 | " 0. , 0. , 0. , 1. ,\n", 75 | " 0. , 0. , 0. , 0. ,\n", 76 | " 0. , 0. , 0. , 0. ,\n", 77 | " 0. , 0. , 0. , -0.13533789,\n", 78 | " -0.2123377 , 6. , 36.98579247, 0. ,\n", 79 | " 0. , 1. , 0. , 0. ,\n", 80 | " 0. , 0. , 1. , 0. ]]),\n", 81 | " 'resi_name': 'ILE',\n", 82 | " 'resi_num': 62,\n", 83 | " 'x': 19.75,\n", 84 | " 'y': 16.239999999999998,\n", 85 | " 'z': 28.93})" 86 | ] 87 | }, 88 | "execution_count": 4, 89 | "metadata": {}, 90 | "output_type": "execute_result" 91 | } 92 | ], 93 | "source": [ 94 | "p.nodes(data=True)[0]" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 5, 100 | "metadata": { 101 | "collapsed": false 102 | }, 103 | "outputs": [], 104 | "source": [ 105 | "nodes = dict()\n", 106 | "nodes['chainA'] = [n for n, d in p.nodes(data=True) if d['chain_id'] == 'A']\n", 107 | "nodes['chainB'] = [n for n, d in p.nodes(data=True) if d['chain_id'] == 'B']\n", 108 | "\n", 109 | "edges = dict()\n", 110 | "edges['all'] = [(u, v, d) for u, v, d in p.edges(data=True)]\n", 111 | "\n", 112 | "nodes_cmap = dict()\n", 113 | "nodes_cmap['chainA'] = 'red'\n", 114 | "nodes_cmap['chainB'] = 'blue'" 115 | ] 116 | }, 117 | { 118 | "cell_type": "code", 119 | "execution_count": 6, 120 | "metadata": { 121 | "collapsed": false 122 | }, 123 | "outputs": [ 124 | { 125 | "data": { 126 | "image/png": "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\n", 127 | "text/plain": [ 128 | "" 129 | ] 130 | }, 131 | "metadata": {}, 132 | "output_type": "display_data" 133 | } 134 | ], 135 | "source": [ 136 | "h = HivePlot(nodes, edges, nodes_cmap)\n", 137 | "h.draw()\n", 138 | "plt.savefig('protein_graph.pdf')" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": null, 144 | "metadata": { 145 | "collapsed": true 146 | }, 147 | "outputs": [], 148 | "source": [] 149 | } 150 | ], 151 | "metadata": { 152 | "kernelspec": { 153 | "display_name": "Python 3", 154 | "language": "python", 155 | "name": "python3" 156 | }, 157 | "language_info": { 158 | "codemirror_mode": { 159 | "name": "ipython", 160 | "version": 3 161 | }, 162 | "file_extension": ".py", 163 | "mimetype": "text/x-python", 164 | "name": "python", 165 | "nbconvert_exporter": "python", 166 | "pygments_lexer": "ipython3", 167 | "version": "3.5.1" 168 | } 169 | }, 170 | "nbformat": 4, 171 | "nbformat_minor": 0 172 | } 173 | -------------------------------------------------------------------------------- /examples/protein_graphs/hiv1_homology_model.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericmjl/hiveplot/f465a7118b7f005c83ab054d400deb02bd9f7410/examples/protein_graphs/hiv1_homology_model.pkl -------------------------------------------------------------------------------- /examples/protein_graphs/protein_graph.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericmjl/hiveplot/f465a7118b7f005c83ab054d400deb02bd9f7410/examples/protein_graphs/protein_graph.pdf -------------------------------------------------------------------------------- /hiveplot/__init__.py: -------------------------------------------------------------------------------- 1 | from .hiveplot import HivePlot 2 | -------------------------------------------------------------------------------- /hiveplot/hiveplot.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import matplotlib.pyplot as plt 3 | import matplotlib.patches as patches 4 | 5 | from matplotlib.path import Path 6 | 7 | 8 | class HivePlot(object): 9 | """ 10 | The HivePlot class will take in the following and return 11 | a hive plot: 12 | - nodes: a dictionary of nodes, in which there are at most 3 keys 13 | in the dictionary, and the nodes are sorted in a 14 | pre-specified order. One common grouping is by a node 15 | attribute and one possible ordering is by degree centrality. 16 | 17 | - edges: a dictionary of {group:edgelist}, where each edgelist is a 18 | list of (u,v,d) tuples (in NetworkX style), where u and v are 19 | the nodes to join, and d are the node attributes. 20 | 21 | The user will have to pre-sort and pre-group the nodes, and pre-map 22 | the edge color groupings. This code will determine the positioning 23 | and exact drawing of the edges. 24 | 25 | Hive plots are non-trivial to construct. These are the most important 26 | features one has to consider: 27 | - Grouping of nodes: 28 | - at most 3 groups. 29 | - Ordering of nodes: 30 | - must have an ordinal or continuous node attribute 31 | - Cross-group edges: 32 | - Undirected is easier to draw than directed. 33 | - Directed is possible. 34 | - Within-group edges: 35 | - Requires the duplication of an axis. 36 | """ 37 | 38 | def __init__(self, nodes, edges, node_colormap, edge_colormap=None, 39 | linewidth=0.5, is_directed=False, scale=10, ax=None, 40 | fig=None): 41 | super(HivePlot, self).__init__() 42 | self.nodes = nodes # dictionary of {group:[ordered_nodes] list} 43 | self.edges = edges # dictionary of {group:[(u,v,d)] tuples list} 44 | 45 | # boolean of whether graph is supposed to be directed or not 46 | self.is_directed = is_directed 47 | if fig is None: 48 | self.fig = plt.figure(figsize=(8, 8)) 49 | else: 50 | self.fig = fig 51 | if ax is None: 52 | self.ax = self.fig.add_subplot(111) 53 | else: 54 | self.ax = ax 55 | self.scale = scale 56 | self.dot_radius = self.scale / float(4) 57 | self.internal_radius = scale ** 2 58 | self.linewidth = linewidth 59 | self.node_colormap = node_colormap # dictionary of node_group:color 60 | self.edge_colormap = edge_colormap # dictionary of edge_group:color 61 | 62 | self.major_angle = 0 63 | self.initialize_major_angle() 64 | self.minor_angle = 0 65 | self.initialize_minor_angle() 66 | 67 | """ 68 | Steps in graph drawing: 69 | 1. Determine the number of groups. This in turn determines the number of 70 | axes to draw, and the major angle between the axes. 71 | 72 | 2. For each group, determine whether there are edges between members of 73 | the same group. 74 | a. If True: 75 | - Duplicate the axis by shifting off by a minor angle. 76 | - Draw each axis line, with length proportional to number of 77 | nodes in the group: 78 | - One is at major angle + minor angle 79 | - One is at major angle - minor angle 80 | - Draw in the nodes. 81 | b. If False: 82 | - Draw the axis line at the major angle. 83 | - Length of axis line is proportional to the number of nodes in 84 | the group 85 | - Draw in the nodes. 86 | 87 | 3. Determine which node group is at the 0 radians position. The angles 88 | that are calculated will have to be adjusted for whether it is at 2*pi 89 | radians or at 0 radians, depending on the angle differences. 90 | 91 | 4. For each edge, determine the radial position of the start node and end 92 | node. Compute the middle angle and the mean radius of the start and 93 | end nodes. 94 | """ 95 | 96 | def simplified_edges(self): 97 | """ 98 | A generator for getting all of the edges without consuming extra 99 | memory. 100 | """ 101 | for group, edgelist in self.edges.items(): 102 | for u, v, d in edgelist: 103 | yield (u, v) 104 | 105 | def initialize_major_angle(self): 106 | """ 107 | Computes the major angle: 2pi radians / number of groups. 108 | """ 109 | num_groups = len(self.nodes.keys()) 110 | self.major_angle = 2 * np.pi / num_groups 111 | 112 | def initialize_minor_angle(self): 113 | """ 114 | Computes the minor angle: 2pi radians / 3 * number of groups. 115 | """ 116 | num_groups = len(self.nodes.keys()) 117 | 118 | self.minor_angle = 2 * np.pi / (6 * num_groups) 119 | 120 | def set_minor_angle(self, angle): 121 | """ 122 | Sets the major angle of the hive plot. I have restricted this to be 123 | less than the major angle. 124 | """ 125 | assert angle < self.major_angle,\ 126 | "Minor angle cannot be greater than the major angle." 127 | 128 | self.minor_angle = angle 129 | 130 | def plot_radius(self): 131 | """ 132 | Computes the plot radius: maximum of length of each list of nodes. 133 | """ 134 | plot_rad = 0 135 | for group, nodelist in self.nodes.items(): 136 | proposed_radius = len(nodelist) * self.scale 137 | if proposed_radius > plot_rad: 138 | plot_rad = proposed_radius 139 | return plot_rad + self.internal_radius 140 | 141 | def axis_length(self, group): 142 | """ 143 | Computes the length of the axis for a given group. 144 | """ 145 | return len(self.nodes[group]) 146 | 147 | def has_edge_within_group(self, group): 148 | """ 149 | Checks whether there are within-group edges or not. 150 | """ 151 | assert group in self.nodes.keys(),\ 152 | "{0} not one of the group of nodes".format(group) 153 | nodelist = self.nodes[group] 154 | for n1, n2 in self.simplified_edges(): 155 | if n1 in nodelist and n2 in nodelist: 156 | return True 157 | 158 | def plot_axis(self, rs, theta): 159 | """ 160 | Renders the axis. 161 | """ 162 | xs, ys = get_cartesian(rs, theta) 163 | self.ax.plot(xs, ys, 'black', alpha=0.3) 164 | 165 | def plot_nodes(self, nodelist, theta, group): 166 | """ 167 | Plots nodes to screen. 168 | """ 169 | for i, node in enumerate(nodelist): 170 | r = self.internal_radius + i * self.scale 171 | x, y = get_cartesian(r, theta) 172 | circle = plt.Circle(xy=(x, y), radius=self.dot_radius, 173 | color=self.node_colormap[group], linewidth=0) 174 | self.ax.add_patch(circle) 175 | 176 | def group_theta(self, group): 177 | """ 178 | Computes the theta along which a group's nodes are aligned. 179 | """ 180 | for i, g in enumerate(self.nodes.keys()): 181 | if g == group: 182 | break 183 | 184 | return i * self.major_angle 185 | 186 | def add_axes_and_nodes(self): 187 | """ 188 | Adds the axes (i.e. 2 or 3 axes, not to be confused with matplotlib 189 | axes) and the nodes that belong to each axis. 190 | """ 191 | for i, (group, nodelist) in enumerate(self.nodes.items()): 192 | theta = self.group_theta(group) 193 | 194 | if self.has_edge_within_group(group): 195 | theta = theta - self.minor_angle 196 | self.plot_nodes(nodelist, theta, group) 197 | 198 | theta = theta + 2 * self.minor_angle 199 | self.plot_nodes(nodelist, theta, group) 200 | 201 | else: 202 | self.plot_nodes(nodelist, theta, group) 203 | 204 | def find_node_group_membership(self, node): 205 | """ 206 | Identifies the group for which a node belongs to. 207 | """ 208 | for group, nodelist in self.nodes.items(): 209 | if node in nodelist: 210 | return group 211 | 212 | def get_idx(self, node): 213 | """ 214 | Finds the index of the node in the sorted list. 215 | """ 216 | group = self.find_node_group_membership(node) 217 | return self.nodes[group].index(node) 218 | 219 | def node_radius(self, node): 220 | """ 221 | Computes the radial position of the node. 222 | """ 223 | return self.get_idx(node) * self.scale + self.internal_radius 224 | 225 | def node_theta(self, node): 226 | """ 227 | Convenience function to find the node's theta angle. 228 | """ 229 | group = self.find_node_group_membership(node) 230 | return self.group_theta(group) 231 | 232 | def draw_edge(self, n1, n2, d, group): 233 | """ 234 | Renders the given edge (n1, n2) to the plot. 235 | """ 236 | start_radius = self.node_radius(n1) 237 | start_theta = self.node_theta(n1) 238 | 239 | end_radius = self.node_radius(n2) 240 | end_theta = self.node_theta(n2) 241 | 242 | start_theta, end_theta = self.correct_angles(start_theta, end_theta) 243 | start_theta, end_theta = self.adjust_angles(n1, start_theta, n2, 244 | end_theta) 245 | 246 | middle1_radius = np.min([start_radius, end_radius]) 247 | middle2_radius = np.max([start_radius, end_radius]) 248 | 249 | if start_radius > end_radius: 250 | middle1_radius, middle2_radius = middle2_radius, middle1_radius 251 | 252 | middle1_theta = np.mean([start_theta, end_theta]) 253 | middle2_theta = np.mean([start_theta, end_theta]) 254 | 255 | startx, starty = get_cartesian(start_radius, start_theta) 256 | middle1x, middle1y = get_cartesian(middle1_radius, middle1_theta) 257 | middle2x, middle2y = get_cartesian(middle2_radius, middle2_theta) 258 | # middlex, middley = get_cartesian(middle_radius, middle_theta) 259 | endx, endy = get_cartesian(end_radius, end_theta) 260 | 261 | verts = [(startx, starty), 262 | (middle1x, middle1y), 263 | (middle2x, middle2y), 264 | (endx, endy)] 265 | codes = [Path.MOVETO, Path.CURVE4, Path.CURVE4, Path.CURVE4] 266 | 267 | path = Path(verts, codes) 268 | if self.edge_colormap is None: 269 | edgecolor = 'black' 270 | else: 271 | edgecolor = self.edge_colormap[group] 272 | patch = patches.PathPatch(path, lw=self.linewidth, facecolor='none', 273 | edgecolor=edgecolor, alpha=0.3) 274 | self.ax.add_patch(patch) 275 | 276 | def add_edges(self): 277 | """ 278 | Draws all of the edges in the graph. 279 | """ 280 | for group, edgelist in self.edges.items(): 281 | for (u, v, d) in edgelist: 282 | self.draw_edge(u, v, d, group) 283 | 284 | def draw(self): 285 | """ 286 | The master function that is called that draws everything. 287 | """ 288 | self.ax.set_xlim(-self.plot_radius(), self.plot_radius()) 289 | self.ax.set_ylim(-self.plot_radius(), self.plot_radius()) 290 | 291 | self.add_axes_and_nodes() 292 | self.add_edges() 293 | 294 | self.ax.axis('off') 295 | 296 | def adjust_angles(self, start_node, start_angle, end_node, end_angle): 297 | """ 298 | This function adjusts the start and end angles to correct for 299 | duplicated axes. 300 | """ 301 | start_group = self.find_node_group_membership(start_node) 302 | end_group = self.find_node_group_membership(end_node) 303 | 304 | if start_group == 0 and end_group == len(self.nodes.keys())-1: 305 | if self.has_edge_within_group(start_group): 306 | start_angle = correct_negative_angle(start_angle - 307 | self.minor_angle) 308 | if self.has_edge_within_group(end_group): 309 | end_angle = correct_negative_angle(end_angle + 310 | self.minor_angle) 311 | 312 | elif start_group == len(self.nodes.keys())-1 and end_group == 0: 313 | if self.has_edge_within_group(start_group): 314 | start_angle = correct_negative_angle(start_angle + 315 | self.minor_angle) 316 | if self.has_edge_within_group(end_group): 317 | end_angle = correct_negative_angle(end_angle - 318 | self.minor_angle) 319 | 320 | elif start_group < end_group: 321 | if self.has_edge_within_group(end_group): 322 | end_angle = correct_negative_angle(end_angle - 323 | self.minor_angle) 324 | if self.has_edge_within_group(start_group): 325 | start_angle = correct_negative_angle(start_angle + 326 | self.minor_angle) 327 | 328 | elif end_group < start_group: 329 | if self.has_edge_within_group(start_group): 330 | start_angle = correct_negative_angle(start_angle - 331 | self.minor_angle) 332 | if self.has_edge_within_group(end_group): 333 | end_angle = correct_negative_angle(end_angle + 334 | self.minor_angle) 335 | 336 | return start_angle, end_angle 337 | 338 | def correct_angles(self, start_angle, end_angle): 339 | """ 340 | This function corrects for the following problems in the edges: 341 | """ 342 | # Edges going the anti-clockwise direction involves angle = 0. 343 | if start_angle == 0 and (end_angle - start_angle > np.pi): 344 | start_angle = np.pi * 2 345 | if end_angle == 0 and (end_angle - start_angle < -np.pi): 346 | end_angle = np.pi * 2 347 | 348 | # Case when start_angle == end_angle: 349 | if start_angle == end_angle: 350 | start_angle = start_angle - self.minor_angle 351 | end_angle = end_angle + self.minor_angle 352 | 353 | return start_angle, end_angle 354 | 355 | 356 | """ 357 | Global helper functions go here. 358 | """ 359 | 360 | 361 | def get_cartesian(r, theta): 362 | """ 363 | Given a radius and theta, return the cartesian (x, y) coordinates. 364 | """ 365 | x = r*np.sin(theta) 366 | y = r*np.cos(theta) 367 | 368 | return x, y 369 | 370 | 371 | def correct_negative_angle(angle): 372 | """ 373 | Corrects a negative angle to a positive one. 374 | """ 375 | if angle < 0: 376 | angle = 2 * np.pi + angle 377 | else: 378 | pass 379 | 380 | return angle 381 | -------------------------------------------------------------------------------- /hiveplot/test_hiveplot.py: -------------------------------------------------------------------------------- 1 | from .hiveplot import get_cartesian 2 | import numpy as np 3 | 4 | 5 | def test_get_cartesian(): 6 | """ 7 | Test for get_cartesian() function. 8 | """ 9 | r = 10 10 | theta = 23 11 | 12 | observed = get_cartesian(r, theta) 13 | actual = (r * np.sin(theta), r * np.cos(theta)) 14 | 15 | assert np.allclose(observed[0], actual[0]) 16 | assert np.allclose(observed[1], actual[1]) 17 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | matplotlib>=2.0.0 2 | pycodestyle==2.3.1 3 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [bdist_wheel] 2 | # This flag says that the code is written to work on both Python 2 and Python 3 | # 3. If at all possible, it is good practice to do this. If you cannot, you 4 | # will need to generate wheels for each Python version that you support. 5 | universal=1 6 | 7 | [metadata] 8 | description-file = README.md -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup # Always prefer setuptools over distutils 2 | from pip.req import parse_requirements 3 | 4 | install_reqs = parse_requirements('requirements.txt', session=False) 5 | reqs = [str(ir.req) for ir in install_reqs] 6 | 7 | print(reqs) 8 | 9 | packages = ['hiveplot'] 10 | 11 | setup(name='hiveplot', 12 | version='2017.10.17.21.07', 13 | author='Eric J. Ma', 14 | author_email='ericmajinglong@gmail.com', 15 | description=("Hive plots in Python!"), 16 | license="MIT", 17 | keywords="network visualization, matplotlib, hiveplot", 18 | url='https://github.com/ericmjl/hiveplot', 19 | packages=packages, 20 | maintainer='Eric J. Ma', 21 | maintainer_email='ericmajinglong@gmail.com', 22 | install_requires=reqs, 23 | long_description='A utility for making hive plots in matplotlib.', 24 | classifiers=["Topic :: Scientific/Engineering :: Visualization"] 25 | ) 26 | -------------------------------------------------------------------------------- /test.sh: -------------------------------------------------------------------------------- 1 | py.test --cov --cov-report term-missing -------------------------------------------------------------------------------- /tests/test_data/Tests.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 10, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import networkx as nx\n", 12 | "import numpy as np\n", 13 | "\n", 14 | "from hiveplot import HivePlot\n", 15 | "\n", 16 | "%matplotlib inline" 17 | ] 18 | }, 19 | { 20 | "cell_type": "markdown", 21 | "metadata": {}, 22 | "source": [ 23 | "# Test Set Minor Angle" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 11, 29 | "metadata": { 30 | "collapsed": false 31 | }, 32 | "outputs": [], 33 | "source": [ 34 | "G = nx.read_gpickle('test_graph.pkl')" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 12, 40 | "metadata": { 41 | "collapsed": false 42 | }, 43 | "outputs": [], 44 | "source": [ 45 | "groups = [1,2,3]\n", 46 | "\n", 47 | "nodes = dict()\n", 48 | "\n", 49 | "for g in groups:\n", 50 | " nodes[g] = [n for n, d in G.nodes(data=True) if d['group'] == g]\n", 51 | " \n", 52 | "nodes_cmap = dict(zip(groups, ['red', 'green', 'blue']))\n", 53 | "\n", 54 | "edges = dict()\n", 55 | "edges['group1'] = []\n", 56 | "for u,v,d in G.edges(data=True):\n", 57 | " edges['group1'].append((u,v,d))" 58 | ] 59 | }, 60 | { 61 | "cell_type": "code", 62 | "execution_count": 13, 63 | "metadata": { 64 | "collapsed": false 65 | }, 66 | "outputs": [ 67 | { 68 | "data": { 69 | "image/png": "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\n", 70 | "text/plain": [ 71 | "" 72 | ] 73 | }, 74 | "metadata": {}, 75 | "output_type": "display_data" 76 | } 77 | ], 78 | "source": [ 79 | "h = HivePlot(nodes, edges, nodes_cmap)\n", 80 | "h.set_minor_angle(np.pi / 32)\n", 81 | "h.draw()" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 14, 87 | "metadata": { 88 | "collapsed": false 89 | }, 90 | "outputs": [], 91 | "source": [ 92 | "# Add edge attribute for grouping.\n", 93 | "for sc, sk, d in G.edges(data=True):\n", 94 | " if sc > sk:\n", 95 | " G.edge[sc][sk]['order'] = 'backward'\n", 96 | " if sk > sc:\n", 97 | " G.edge[sc][sk]['order'] = 'forward'\n", 98 | " \n", 99 | "G.edges(data=True)\n", 100 | "\n", 101 | "edges = dict()\n", 102 | "for sc, sk, d in G.edges(data=True):\n", 103 | " if d['order'] not in edges.keys():\n", 104 | " edges[d['order']] = []\n", 105 | " edges[d['order']].append((sc, sk, d))" 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "execution_count": 15, 111 | "metadata": { 112 | "collapsed": false 113 | }, 114 | "outputs": [ 115 | { 116 | "data": { 117 | "image/png": "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\n", 118 | "text/plain": [ 119 | "" 120 | ] 121 | }, 122 | "metadata": {}, 123 | "output_type": "display_data" 124 | } 125 | ], 126 | "source": [ 127 | "# Test Edges colormap\n", 128 | "edge_cmap = dict()\n", 129 | "edge_cmap['forward'] = 'red'\n", 130 | "edge_cmap['backward'] = 'blue'\n", 131 | "\n", 132 | "h = HivePlot(nodes, edges, nodes_cmap, edge_cmap)\n", 133 | "h.set_minor_angle(np.pi / 32)\n", 134 | "h.draw()" 135 | ] 136 | }, 137 | { 138 | "cell_type": "markdown", 139 | "metadata": {}, 140 | "source": [ 141 | "# Test Two Groups Only" 142 | ] 143 | }, 144 | { 145 | "cell_type": "code", 146 | "execution_count": 16, 147 | "metadata": { 148 | "collapsed": false 149 | }, 150 | "outputs": [ 151 | { 152 | "data": { 153 | "text/plain": [ 154 | "{'backward': [('h', 'a', {'order': 'backward'})],\n", 155 | " 'forward': [('c', 'e', {'order': 'forward'}),\n", 156 | " ('a', 'c', {'order': 'forward'})]}" 157 | ] 158 | }, 159 | "execution_count": 16, 160 | "metadata": {}, 161 | "output_type": "execute_result" 162 | } 163 | ], 164 | "source": [ 165 | "groups = [1, 3]\n", 166 | "\n", 167 | "nodes = dict()\n", 168 | "for g in groups:\n", 169 | " nodes[g] = [n for n, d in G.nodes(data=True) if d['group'] == g]\n", 170 | " \n", 171 | "nodes_cmap = dict(zip(groups, ['red', 'blue']))\n", 172 | "\n", 173 | "edges = dict()\n", 174 | "edges['forward'] = []\n", 175 | "edges['backward'] = []\n", 176 | "for u,v,d in G.edges(data=True):\n", 177 | " if G.node[u]['group'] in groups and G.node[v]['group'] in groups:\n", 178 | " if d['order'] == 'forward':\n", 179 | " edges['forward'].append((u,v,d))\n", 180 | " else:\n", 181 | " edges['backward'].append((u,v,d))\n", 182 | " \n", 183 | "\n", 184 | "\n", 185 | "edge_cmap = dict()\n", 186 | "edge_cmap['forward'] = 'red'\n", 187 | "edge_cmap['backward'] = 'blue'\n", 188 | "edges" 189 | ] 190 | }, 191 | { 192 | "cell_type": "code", 193 | "execution_count": 17, 194 | "metadata": { 195 | "collapsed": false 196 | }, 197 | "outputs": [ 198 | { 199 | "data": { 200 | "text/plain": [ 201 | "{1: ['b', 'c', 'a'], 3: ['h', 'e']}" 202 | ] 203 | }, 204 | "execution_count": 17, 205 | "metadata": {}, 206 | "output_type": "execute_result" 207 | } 208 | ], 209 | "source": [ 210 | "nodes" 211 | ] 212 | }, 213 | { 214 | "cell_type": "code", 215 | "execution_count": 18, 216 | "metadata": { 217 | "collapsed": false 218 | }, 219 | "outputs": [ 220 | { 221 | "data": { 222 | "image/png": "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\n", 223 | "text/plain": [ 224 | "" 225 | ] 226 | }, 227 | "metadata": {}, 228 | "output_type": "display_data" 229 | } 230 | ], 231 | "source": [ 232 | "h = HivePlot(nodes, edges, nodes_cmap, edge_cmap)\n", 233 | "h.set_minor_angle(np.pi / 32)\n", 234 | "h.draw()" 235 | ] 236 | }, 237 | { 238 | "cell_type": "code", 239 | "execution_count": null, 240 | "metadata": { 241 | "collapsed": false 242 | }, 243 | "outputs": [], 244 | "source": [] 245 | }, 246 | { 247 | "cell_type": "code", 248 | "execution_count": null, 249 | "metadata": { 250 | "collapsed": false 251 | }, 252 | "outputs": [], 253 | "source": [] 254 | } 255 | ], 256 | "metadata": { 257 | "kernelspec": { 258 | "display_name": "Python 3", 259 | "language": "python", 260 | "name": "python3" 261 | }, 262 | "language_info": { 263 | "codemirror_mode": { 264 | "name": "ipython", 265 | "version": 3 266 | }, 267 | "file_extension": ".py", 268 | "mimetype": "text/x-python", 269 | "name": "python", 270 | "nbconvert_exporter": "python", 271 | "pygments_lexer": "ipython3", 272 | "version": "3.5.1" 273 | } 274 | }, 275 | "nbformat": 4, 276 | "nbformat_minor": 0 277 | } 278 | -------------------------------------------------------------------------------- /tests/test_data/test_graph.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ericmjl/hiveplot/f465a7118b7f005c83ab054d400deb02bd9f7410/tests/test_data/test_graph.pkl -------------------------------------------------------------------------------- /tests/test_import.py: -------------------------------------------------------------------------------- 1 | def test_import(): 2 | from hiveplot import HivePlot 3 | --------------------------------------------------------------------------------