{ "info": { "author": "Rodrigo Garcia", "author_email": "rgarcia@iecologia.unam.mx", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3.5", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Information Analysis" ], "description": "# Pyveplot\n\nA nice way of visualizing complex networks are [Hiveplots](http://www.hiveplot.com/).\n\n\nThis library uses [svgwrite](http://svgwrite.readthedocs.org/en/latest/classes/shapes.html) \nto programmatically create images like the one bellow, a visualization of\na Barabasi-Albert network, in which nodes are categorized by degree\ninto high, medium and low.\n\n![an example hive plot generated with this library](https://gitlab.com/rgarcia-herrera/pyveplot/raw/master/ba_hiveplot.png)\n\nHere's the code that generated the figure:\n\n~~~ python\n from pyveplot import Hiveplot, Axis, Node\n import networkx as nx\n import random\n\n c = ['#e41a1c', '#377eb8', '#4daf4a',\n '#984ea3', '#ff7f00', '#ffff33',\n '#a65628', '#f781bf', '#999999',]\n\n # create hiveplot object\n h = Hiveplot('ba_hiveplot.svg')\n\n # create three axes, spaced at 120 degrees from each other\n h.axes = [Axis(start=20, angle=0,\n stroke=random.choice(c), stroke_width=1.1),\n Axis(start=20, angle=120,\n stroke=random.choice(c), stroke_width=1.1),\n Axis(start=20, angle=120 + 120,\n stroke=random.choice(c), stroke_width=1.1)\n ]\n\n # create a random Barabasi-Albert network\n g = nx.barabasi_albert_graph(100, 2)\n\n # sort nodes by degree\n k = list(nx.degree(g))\n k.sort(key=lambda tup: tup[1])\n\n # categorize them as high, medium and low degree\n hi_deg = [v[0] for v in k if v[1] > 7]\n md_deg = [v[0] for v in k if v[1] > 3 and v[1] <= 7]\n lo_deg = [v[0] for v in k if v[1] <= 3]\n\n # place these nodes into our three axes\n for axis, nodes in zip(h.axes,\n [hi_deg, md_deg, lo_deg]):\n circle_color = random.choice(c)\n for v in nodes:\n # create node object\n node = Node(radius=g.degree(v),\n label=\"node %s k=%s\" % (v, g.degree(v)))\n # add it to axis\n axis.add_node(v, node)\n # once it has x, y coordinates, add a circle\n node.add_circle(fill=circle_color, stroke=circle_color,\n stroke_width=0.1, fill_opacity=0.7)\n if axis.angle < 180:\n orientation = -1\n scale = 0.6\n else:\n orientation = 1\n scale = 0.35\n # also add a label\n node.add_label(\"node %s k=%s\" % (v, g.degree(v)),\n angle=axis.angle + 90 * orientation,\n scale=scale)\n\n # iterate through axes, from left to right\n for n in range(-1, len(h.axes) - 1):\n curve_color = random.choice(c)\n # draw curves between nodes connected by edges in network\n h.connect_axes(h.axes[n],\n h.axes[n+1],\n g.edges,\n stroke_width=0.5,\n stroke=curve_color)\n\n # save output\n h.save('ba_hiveplot.svg')\n~~~\n\n\n\n## Installation\n\nInstall library::\n\n $ pip install pyveplot\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://gitlab.com/rgarcia-herrera/pyveplot", "keywords": "", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "pyveplot", "package_url": "https://pypi.org/project/pyveplot/", "platform": "", "project_url": "https://pypi.org/project/pyveplot/", "project_urls": { "Homepage": "http://gitlab.com/rgarcia-herrera/pyveplot" }, "release_url": "https://pypi.org/project/pyveplot/1.0.0/", "requires_dist": [ "svgwrite" ], "requires_python": ">=3.6", "summary": "SVG Hiveplot Python API", "version": "1.0.0" }, "last_serial": 6001439, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "d6eb8325c3bff746e1395add16821b65", "sha256": "eb411bde48338cdd7de2438f24463a45b6ac77f70476b994c1b8f77eedb3eb18" }, "downloads": -1, "filename": "pyveplot-0.1.tar.gz", "has_sig": false, "md5_digest": "d6eb8325c3bff746e1395add16821b65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2336, "upload_time": "2015-05-26T01:44:05", "url": "https://files.pythonhosted.org/packages/89/07/1d490f1faf42f8dcf742b12a8968a23cae790e0768420aa1a56d61e5fe45/pyveplot-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "f4089ca45ed3a76fd500e92efa0f4bee", "sha256": "1486d1ebf6e05b9a321b3ed3a7f170cd180c340659e56440bfc79383f6bc1eaf" }, "downloads": -1, "filename": "pyveplot-0.2.tar.gz", "has_sig": false, "md5_digest": "f4089ca45ed3a76fd500e92efa0f4bee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2975, "upload_time": "2015-05-26T03:30:17", "url": "https://files.pythonhosted.org/packages/a9/8f/73b37e1b58a30fec40c4e18e466a440778aa9a0927e1bbf95c6daf144d55/pyveplot-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "23c5432aee2366474c9026df596ef374", "sha256": "16194382450b062fc83a2954c811059cae3cd3e14d56af3256b459678c707d9f" }, "downloads": -1, "filename": "pyveplot-0.3.tar.gz", "has_sig": false, "md5_digest": "23c5432aee2366474c9026df596ef374", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3005, "upload_time": "2015-05-26T03:59:09", "url": "https://files.pythonhosted.org/packages/1c/89/55c109531a9ec71e6e8b7bd7235933f84ca34657e8f5ac0f22ff4e63233e/pyveplot-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "e2ceda1ddab2b8c27a3abc55fc8fff7f", "sha256": "179ef5fd694ff43e74947938c206a12c400115ba9645d6c8fcb3c62fe397f89c" }, "downloads": -1, "filename": "pyveplot-0.4.tar.gz", "has_sig": false, "md5_digest": "e2ceda1ddab2b8c27a3abc55fc8fff7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3069, "upload_time": "2015-05-26T04:04:27", "url": "https://files.pythonhosted.org/packages/af/ed/418e8df4749da44b765636a35746a659e3e72db7e9680378af7ea1c48a95/pyveplot-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "d85e34251858a66aa7e7912451f9a5d3", "sha256": "dbd80e7af6018a0371b154d39302b5160a878190a45c38b19a2e35629c450181" }, "downloads": -1, "filename": "pyveplot-0.5.tar.gz", "has_sig": false, "md5_digest": "d85e34251858a66aa7e7912451f9a5d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3069, "upload_time": "2015-05-26T04:13:15", "url": "https://files.pythonhosted.org/packages/cf/a7/25741661d53c111f4edfa21c0bfb202e86f91047fd417ba67ed4321eadb0/pyveplot-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "ca3414bddb745e84fc14ec99828d9bd4", "sha256": "64908973012f7cf2a1159bed89fa99012c386bd2cd0eb8bd4ad8d30d785ced26" }, "downloads": -1, "filename": "pyveplot-0.6.tar.gz", "has_sig": false, "md5_digest": "ca3414bddb745e84fc14ec99828d9bd4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3082, "upload_time": "2015-06-19T05:03:58", "url": "https://files.pythonhosted.org/packages/17/9c/8bb8726f7016bf304073a9d77a74436f87e6e58abd399e1de55a9325ffae/pyveplot-0.6.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "17fc04427194977767ebf8e179575621", "sha256": "84d50c571010e887a11f0ef2471a34905d598517330915744720aaee17d89dba" }, "downloads": -1, "filename": "pyveplot-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "17fc04427194977767ebf8e179575621", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 17362, "upload_time": "2019-10-20T00:40:33", "url": "https://files.pythonhosted.org/packages/da/18/c68f70b21f678b7b41c8e3ddf04a48a401f3e9d4d88cec4d84818a20afe7/pyveplot-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "232cecd95bc47848f6128a87708d688a", "sha256": "3dac1a09935df744fe0d41a0049ecfbe35a3f33621ffc96a4e316f3c9f5942e9" }, "downloads": -1, "filename": "pyveplot-1.0.0.tar.gz", "has_sig": false, "md5_digest": "232cecd95bc47848f6128a87708d688a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5008, "upload_time": "2019-10-20T00:40:35", "url": "https://files.pythonhosted.org/packages/1b/9f/8daa0f2e740bc7fca68537c920f447893e6452d77acccdaea1b0b74877f1/pyveplot-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "17fc04427194977767ebf8e179575621", "sha256": "84d50c571010e887a11f0ef2471a34905d598517330915744720aaee17d89dba" }, "downloads": -1, "filename": "pyveplot-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "17fc04427194977767ebf8e179575621", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 17362, "upload_time": "2019-10-20T00:40:33", "url": "https://files.pythonhosted.org/packages/da/18/c68f70b21f678b7b41c8e3ddf04a48a401f3e9d4d88cec4d84818a20afe7/pyveplot-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "232cecd95bc47848f6128a87708d688a", "sha256": "3dac1a09935df744fe0d41a0049ecfbe35a3f33621ffc96a4e316f3c9f5942e9" }, "downloads": -1, "filename": "pyveplot-1.0.0.tar.gz", "has_sig": false, "md5_digest": "232cecd95bc47848f6128a87708d688a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 5008, "upload_time": "2019-10-20T00:40:35", "url": "https://files.pythonhosted.org/packages/1b/9f/8daa0f2e740bc7fca68537c920f447893e6452d77acccdaea1b0b74877f1/pyveplot-1.0.0.tar.gz" } ] }