{ "info": { "author": "Daniel Hitchcock", "author_email": "daniel.s.hitchcock@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Plotxel\n\n*Control your plots down to the pixel!* \nEver have trouble moving a chart to the right? Moving your axis up? Getting rid of ticks? Then try out Plotxel!\n\nIt's wordy, slow, and unnecessary 99% of the time. But that 1%, you'll be glad you have Plotxel.\n\n## Installation\n\n pip3 install plotxel\n\n## Example\n\n![Example Image](https://github.com/danhitchcock/plotxel/wiki/example2.png)\n```python\nfrom plotxel import Plotxel, Axis\n\nx = Plotxel() # our main drawing canvas in x, y\n\n# add some data as a series. The series name, the x data, and y data\nseries1 = [i for i in range(10)]\nx.add_data('series1', series1, series1)\nx.add_data('series2', [1, 2, 3, 4, 5, 10], [5, 2, 1, 4, 3, 10])\nx.add_data('series3', [10, 5, 4, 3, 2, 1], [5, 2, 1, 4, 3, 10])\n\n# left plot -- its name, type, and data it's linked to\nplot1 = x.add_drawable(\"plot1\", \"Scatter\", [\"series1\", 'series2', 'series3'])\nplot1.title = 'Analysis of Goose Encounters'\nplot1.pos = [60, 50]\nplot1.title_offset = 23\nplot1.marker_opacity = {.5} # this must be a set so it can iterate through data. Will make this more intuitive\n\n# right plot and its position. Same data as plot1\nplot2 = x.add_drawable(\"plot2\", \"Scatter\", \"series1\")\n# set a bunch of attributes at once!\nplot2.setattrs(\n ylim=[-1, 10],\n xlim=[-1, 10],\n pos=[450, 50],\n marker_shape='square',\n marker_fill_color=(255, 0, 0),\n title='Analysis of Goose Encounters (red)',\n line_width = 0\n)\n\n# add some axes, and link them to our plots. It will copy the size, position, scale, and limits of whichever plot it is linked to\nax1 = x.add_drawable(\"ax1\", 'YAxis', link_to=\"plot1\")\nax1.axis_offset = 10\nax1.title_offset = 25 # distance from the ticks. Will have an auto feature in the future!\nax1.title = \"Near Death Experiences With Geese\"\n\n# all other axes, let's put them flush with the graph by changing the default\n# defaults are copied at the time the object is initialized, so this won't affect ax1\nAxis.defaults['axis_offset'] = -1\nax1b = x.add_drawable('ax1b', 'XAxis', link_to='plot1')\n\n# you can keep setting attributes in bulk\nax1r = x.add_drawable('ax1r', 'YAxis', link_to='plot1', title_offset=20)\nax1r.setattrs(\n side='right',\n title_offset=20,\n title='Ax1 Right Title'\n)\n\nax1t = x.add_drawable('ax1t', 'XAxis', link_to='plot1')\nax1t.setattrs(\n side='top',\n title=''\n)\n\n# or use the constructor!\nx.add_drawable(\"ax2\", 'YAxis', link_to=\"plot2\", title_offset=20, side='right', axis_offset=10)\n\nax3 = x.add_drawable(\"ax3\", 'XAxis', link_to=\"plot2\")\nax3.setattrs(\n side='bottom',\n axis_offset=10,\n title=\"Number of Freaking Geese\",\n)\n\n\n# I think I would prefer axes to be blue!\nAxis.defaults['color'] = (0, 0, 255)\n\n# let's add some bar chart data. Since it's a vertical bar chart, we will pull Y data\n# the labels aren't implemented quite yet\nx.add_data('bar_data', ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], [1, 9, 4, 5, 3, 6, 2])\nx.add_data('bar_data2', ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], [1, 7, 4, 3, 4, 5, 1])\nx.add_data('bar_data3', ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], [-3, 14, 2, 1, 2, 7, 9])\n\nplot3 = x.add_drawable('bar1', 'Bar', ['bar_data', 'bar_data2', 'bar_data3'])\n# or unpack a dict\nplot3_attrs = {\n 'pos': (150, 300),\n 'dim': (500, 150),\n 'ylim': [-5, 15],\n 'group_spacing': 30,\n 'bar_spacing': 0,\n 'title': 'Safely Navigating Geese'\n}\nplot3.setattrs(**plot3_attrs)\n\nx.add_drawable('ax4', 'YAxis', link_to=\"bar1\", title='Likelihood of Goose Attack', title_offset=25)\n# x.add_drawable('ax5', 'XAxis', link_to='bar1', title='Day of Week', title_offset=5)\n\n# coming soon, Jupyter magic!\n# x.anti_aliasing=False\nx.show()\n\n# or for SVG\n# svg_html = x.draw()\n\n# or for image in BytesIO / save to filename\n# x.render(filename='example2.png')\n```\n\n\n\n\nThis program is being developed based on my own needs, and unfortunately I don't do a lot of plotting today, therefore I don't need a lot of features.\n\nIn any case, I'll be prioritizing features, up next is bar charts and histograms! \n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/danhitchcock/plotxel", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "plotxel", "package_url": "https://pypi.org/project/plotxel/", "platform": "", "project_url": "https://pypi.org/project/plotxel/", "project_urls": { "Homepage": "https://github.com/danhitchcock/plotxel" }, "release_url": "https://pypi.org/project/plotxel/0.0.9/", "requires_dist": [ "svgwrite", "cairosvg", "Pillow" ], "requires_python": "", "summary": "A wordy but intuitive plotting library.", "version": "0.0.9" }, "last_serial": 5279612, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ac4a9979b44affd1a3084328ecdcc828", "sha256": "c36be55c0c9e7767ce9825cb534d4c3a6582070599f7a6b088a130818daece9d" }, "downloads": -1, "filename": "plotxel-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ac4a9979b44affd1a3084328ecdcc828", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7190, "upload_time": "2019-04-19T15:16:10", "url": "https://files.pythonhosted.org/packages/4b/41/e980fb009ef7321ac5ea22ffba9f05fc65f3edf6ce66ef7880ed128a46dd/plotxel-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63d38f32619b4874eaf480225bd42133", "sha256": "d1dc69d198f553cc3c1ad6707cdfc21b4eda4c726800a78a3e6a0bb6894f02ac" }, "downloads": -1, "filename": "plotxel-0.0.1.tar.gz", "has_sig": false, "md5_digest": "63d38f32619b4874eaf480225bd42133", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6010, "upload_time": "2019-04-19T15:16:12", "url": "https://files.pythonhosted.org/packages/f4/04/f84a983e4faf5fb102d7f7b8271334237ccc682b6d5dd0fc75666d491d8d/plotxel-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8aca002d62b6db80af57fd4f0768f68f", "sha256": "cd4566aa9443f6bcf6f40a38ae8ab81d9cc273ebba8f09240e2f3ad592d2d19a" }, "downloads": -1, "filename": "plotxel-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8aca002d62b6db80af57fd4f0768f68f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7186, "upload_time": "2019-04-19T15:20:13", "url": "https://files.pythonhosted.org/packages/29/b7/397d32c393c7e437d0b0ac25d828b59e855ccb9420f15b88960c199e3d62/plotxel-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27838b6394ab58a7c94958e048f5b4a6", "sha256": "89d489ae45ddb364f2dbe5531a23038e7df23f96e4464c8efe68beeec8f97cca" }, "downloads": -1, "filename": "plotxel-0.0.2.tar.gz", "has_sig": false, "md5_digest": "27838b6394ab58a7c94958e048f5b4a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5995, "upload_time": "2019-04-19T15:20:15", "url": "https://files.pythonhosted.org/packages/7e/3b/c346c3f2f2b6a79a9e35d7f83d9f88ae0cea169c1fff311279ca79cd28b5/plotxel-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "9fc1ad6db910e4115a11af550c2acdf0", "sha256": "d0d194f1f9de16ef8c02ed2a55588b0f6c2954087098427b679f39471e4ff9ee" }, "downloads": -1, "filename": "plotxel-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9fc1ad6db910e4115a11af550c2acdf0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7508, "upload_time": "2019-04-19T16:13:43", "url": "https://files.pythonhosted.org/packages/a1/94/cbad6c5e21f9ca80cd1f61d1b49c656ee89048000e26166b2bde511d483b/plotxel-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d51b5a3576f2d1f036c8aed1e05f80fe", "sha256": "9d4253d1ac60d2c73180207676593d81da020b723f961a3a0509c7c94a618cf3" }, "downloads": -1, "filename": "plotxel-0.0.3.tar.gz", "has_sig": false, "md5_digest": "d51b5a3576f2d1f036c8aed1e05f80fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6306, "upload_time": "2019-04-19T16:13:45", "url": "https://files.pythonhosted.org/packages/b2/20/2695fbde7e13a04b7afa6429767130bf76668ad197914d882a223277c980/plotxel-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "423601a6865e56f30e402999b63b8412", "sha256": "145f622f765740362a9e3e18283ba125d194f8a64f453ee81038391891a38e73" }, "downloads": -1, "filename": "plotxel-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "423601a6865e56f30e402999b63b8412", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11537, "upload_time": "2019-05-11T15:38:20", "url": "https://files.pythonhosted.org/packages/d5/01/9e6d331f645b35817a025d53f0f52bd5dfaa243f44c85e4029753621bd98/plotxel-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdf99acccd779dfb529ad14d663faa08", "sha256": "b3d8ec8281f4da126eb73e879e76d0abc7486ced99f6723606e6e17e6c1306de" }, "downloads": -1, "filename": "plotxel-0.0.4.tar.gz", "has_sig": false, "md5_digest": "cdf99acccd779dfb529ad14d663faa08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11919, "upload_time": "2019-05-11T15:38:22", "url": "https://files.pythonhosted.org/packages/8f/8b/40b8989c699a216d343a277b6dac0787fdfcdabeeb6688aed09d4d6686f3/plotxel-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "aa8b9218474817af8710541f3e4134da", "sha256": "40afdc4d974a4779dca0534bc32f225126cc7d23455ebcdaa0fd81e55e2823bf" }, "downloads": -1, "filename": "plotxel-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "aa8b9218474817af8710541f3e4134da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11823, "upload_time": "2019-05-11T17:36:52", "url": "https://files.pythonhosted.org/packages/ee/1d/7ac8bb112d7cea1c2458d09bc68d3737f8e4c0fdeebd7c4dc0e06a97d36b/plotxel-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0c24facd878b80474f9943b53586631", "sha256": "cb85f50dacbfc4161ce416466049f6f04b3801d9918063509c4fe5ef761ea3b1" }, "downloads": -1, "filename": "plotxel-0.0.5.tar.gz", "has_sig": false, "md5_digest": "d0c24facd878b80474f9943b53586631", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12203, "upload_time": "2019-05-11T17:36:53", "url": "https://files.pythonhosted.org/packages/47/53/6e41d1338adb5531232552ab0ec33520960d8d66d2b3fa6b446912503bfd/plotxel-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "6a16781c6ede5b88daa500fa1f587fa9", "sha256": "49b28daa8c9781585be9fd715617c8b82b0589ec4dd5b19ae2f2f17e07d5f3c2" }, "downloads": -1, "filename": "plotxel-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "6a16781c6ede5b88daa500fa1f587fa9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14290, "upload_time": "2019-05-12T19:43:18", "url": "https://files.pythonhosted.org/packages/03/9f/b141e70eb1af4bcebdaef4297d4c2cec13a6037dcb4f9e044102a1eeafc7/plotxel-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "094459a8057af85df8728eeedba42ccc", "sha256": "04f92f745b270702095229f550cafcd2d2538e0df7be534fdf39e37e4778548b" }, "downloads": -1, "filename": "plotxel-0.0.6.tar.gz", "has_sig": false, "md5_digest": "094459a8057af85df8728eeedba42ccc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13439, "upload_time": "2019-05-12T19:43:19", "url": "https://files.pythonhosted.org/packages/b7/2b/c42f4dd0e8be2b9665cf35a254d01a002694cff9a415f53aba2c256c5e65/plotxel-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "d6e9764270b80df856c88780d77b4f6d", "sha256": "88d6fded09cf571150f6f0f4c0a3a82862fbc66e7680dd6c3efd219393b99ec6" }, "downloads": -1, "filename": "plotxel-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "d6e9764270b80df856c88780d77b4f6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16442, "upload_time": "2019-05-16T16:32:39", "url": "https://files.pythonhosted.org/packages/b6/3f/fa21e20f809ab647b5de98f90154232ce06f10bdfed08f0e7fd341cbac35/plotxel-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24c24667898a2774b52dcb4bf2217400", "sha256": "adace3eb04bdc49464b7d60758858abae8ffdfa55456de75bf44ad80f1544c86" }, "downloads": -1, "filename": "plotxel-0.0.7.tar.gz", "has_sig": false, "md5_digest": "24c24667898a2774b52dcb4bf2217400", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15618, "upload_time": "2019-05-16T16:32:41", "url": "https://files.pythonhosted.org/packages/a8/41/9bebb488d7cba2d659f99e48009e58541e10db75e61f72a179c39d4c72b4/plotxel-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "2faa9056a4531506595f08b2b4891104", "sha256": "a477b0246f4e2be93b533c79da2c6429bfcc7af78fa19aec210380f409db2c69" }, "downloads": -1, "filename": "plotxel-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "2faa9056a4531506595f08b2b4891104", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16444, "upload_time": "2019-05-16T17:10:49", "url": "https://files.pythonhosted.org/packages/af/79/94dd9728ae689a411c129911a71c777551ef3cb39ea3eeab06ba588c0c41/plotxel-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72cf03aa7ccfe537fd5fa8011003826a", "sha256": "ca7709a972c82084577763b47c6d09d38104a86d099e130e2de99e54e9ed974d" }, "downloads": -1, "filename": "plotxel-0.0.8.tar.gz", "has_sig": false, "md5_digest": "72cf03aa7ccfe537fd5fa8011003826a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15615, "upload_time": "2019-05-16T17:10:50", "url": "https://files.pythonhosted.org/packages/1e/1d/b4a5b3636729fa5d4c027d14feddb5f0473bff8233bc79daf86348ac7129/plotxel-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "754b3bc642aeb7d5a0617db08a1f754f", "sha256": "2e0bf3f0df70da613620fe6074197dc67f9c5e6268511fbf53c95a2056360a9b" }, "downloads": -1, "filename": "plotxel-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "754b3bc642aeb7d5a0617db08a1f754f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16458, "upload_time": "2019-05-16T22:40:12", "url": "https://files.pythonhosted.org/packages/53/47/6d3ff2a6766ac216a0d8cbb2162c9aaf4a8ceae9045086f4cc13b81e2378/plotxel-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aabbccc9d0e282e0d63f67ded3bcd735", "sha256": "503e3d12b48eb4a4f400126b95317a254b9dd399942bfb5e1a01142dee61573a" }, "downloads": -1, "filename": "plotxel-0.0.9.tar.gz", "has_sig": false, "md5_digest": "aabbccc9d0e282e0d63f67ded3bcd735", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15637, "upload_time": "2019-05-16T22:40:13", "url": "https://files.pythonhosted.org/packages/1e/b8/27ba6cf9f7a86fdf4dbf1c0db7c854e64656ad9dfa256de775e21a907a82/plotxel-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "754b3bc642aeb7d5a0617db08a1f754f", "sha256": "2e0bf3f0df70da613620fe6074197dc67f9c5e6268511fbf53c95a2056360a9b" }, "downloads": -1, "filename": "plotxel-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "754b3bc642aeb7d5a0617db08a1f754f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16458, "upload_time": "2019-05-16T22:40:12", "url": "https://files.pythonhosted.org/packages/53/47/6d3ff2a6766ac216a0d8cbb2162c9aaf4a8ceae9045086f4cc13b81e2378/plotxel-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aabbccc9d0e282e0d63f67ded3bcd735", "sha256": "503e3d12b48eb4a4f400126b95317a254b9dd399942bfb5e1a01142dee61573a" }, "downloads": -1, "filename": "plotxel-0.0.9.tar.gz", "has_sig": false, "md5_digest": "aabbccc9d0e282e0d63f67ded3bcd735", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15637, "upload_time": "2019-05-16T22:40:13", "url": "https://files.pythonhosted.org/packages/1e/b8/27ba6cf9f7a86fdf4dbf1c0db7c854e64656ad9dfa256de775e21a907a82/plotxel-0.0.9.tar.gz" } ] }