{ "info": { "author": "Jonas Bystr\u00f6m", "author_email": "highfestiva@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Finance Plot\nPlotting financial data in Python for the most part sucks. [mpl_finance](https://github.com/matplotlib/mpl_finance) is horribly slow --\nand plotly too -- when displaying 100k candlesticks or more.\n\nMeet Finance Plotter, or finplot! It utilizes pyqtgraph underneath, which to my surprise was an excellent library. Finance Plot is built\nto immitate matplotlib's api, but with better default looks and much better performance.\n\nAlso included is some zooming+scaling logic, so you won't get that \"panning all over the place\" feeling as one normally finds in\nmost non-finance plot libraries. Plus manual line drawing, where each line segment shows % and time change.\n\nThe left mouse button pans, the mouse wheel zooms, and holding Ctrl allows you to draw lines.\n\n\n## Easy installation\n\n```bash\n$ pip install finplot\n```\n\n\n## Example\n\n![sample](https://raw.githubusercontent.com/highfestiva/finplot/master/screenshot.jpg)\n\n\nThis 25-liner pulls some BitCoin data off of Bittrex and shows the above:\n\n\n```python\nimport finplot as fplt\nimport numpy as np\nimport pandas as pd\nimport requests\n\n# pull some data\nsymbol = 'USDT-BTC'\nurl = 'https://bittrex.com/Api/v2.0/pub/market/GetTicks?marketName=%s&tickInterval=fiveMin' % symbol\ndata = requests.get(url).json()\n\n# format it in pandas\ndf = pd.DataFrame(data['result'])\ndf = df.rename(columns={'T':'time', 'O':'open', 'C':'close', 'H':'high', 'L':'low', 'V':'volume'})\ndf = df.astype({'time':'datetime64[ns]'})\n\n# create three plots\nax,ax2,ax3 = fplt.create_plot(symbol, rows=3)\n\n# plot candle sticks\ncandle_src = fplt.PandasDataSource(df[['time','open','close','high','low']])\nfplt.candlestick_ochl(candle_src, ax=ax)\n\n# put an MA in there\nfplt.plot(df['time'], df['close'].rolling(25).mean(), ax=ax, color='#0000ff', legend='ma-25')\n\n# place some dumb markers\nhi_wicks = df['high'] - df[['open','close']].T.max().T\ndf.loc[(hi_wicks>hi_wicks.quantile(0.99)), 'marker'] = df['close']\nfplt.plot(df['time'], df['marker'], ax=ax, color='#000000', style='^', legend='dumb mark')\n\n# draw some random crap on our second plot\ndf['rnd'] = np.random.normal(size=len(df))\nfplt.plot(df['time'], df['rnd'], ax=ax2, color='#992277', legend='stuff')\nfplt.set_y_range(ax2, -1.4, +1.7) # fix y-axis range\n\n# finally a volume bar chart in our third plot\nvolume_src = fplt.PandasDataSource(df[['time','open','close','volume']])\nfplt.volume_ocv(volume_src, ax=ax3)\n\n# we're done\nfplt.show()\n```\n\n\n## Realtime updating with realistic indicator\n\nIncluded in this repo are [a 40-liner Bitfinex example](https://github.com/highfestiva/finplot/blob/master/finplot/example-bfx.py) and\n[a slightly longer BitMEX websocket example](https://github.com/highfestiva/finplot/blob/master/finplot/example-bitmex-ws.py),\nwhich both update in realtime with Bitcoin/Dollar pulled from the exchange. They also shows realistic and useful indicators (TD Sequential for BFX and\nBollinger Bands for BitMEX).\n\nEnjoy!\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": "https://github.com/highfestiva/finplot", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "finplot", "package_url": "https://pypi.org/project/finplot/", "platform": "", "project_url": "https://pypi.org/project/finplot/", "project_urls": { "Homepage": "https://github.com/highfestiva/finplot" }, "release_url": "https://pypi.org/project/finplot/0.3.6/", "requires_dist": [ "pandas (>=0.23.4)", "PyQt5 (==5.9)", "pyqtgraph (>=0.10.0)" ], "requires_python": "", "summary": "Finance plotting", "version": "0.3.6" }, "last_serial": 5956683, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "79bdf2ef39b9ab53080bb8ad78773479", "sha256": "92c17c4a453897a053d8ea3778297669b64a0355b4d0ca32a72f7be7e1ad2362" }, "downloads": -1, "filename": "finplot-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "79bdf2ef39b9ab53080bb8ad78773479", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16824, "upload_time": "2019-01-08T01:20:34", "url": "https://files.pythonhosted.org/packages/a5/7b/6b664ee1805dc9b29e91879d2b61ab133b963921687c38279b3e6b1cb131/finplot-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b3ddd608138b48800cca9646d280a2c", "sha256": "f621e99f495206b966fb73a5ebd163ab5a337e9314f5fece07437fdf47f7fe3d" }, "downloads": -1, "filename": "finplot-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5b3ddd608138b48800cca9646d280a2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15010, "upload_time": "2019-01-08T01:20:36", "url": "https://files.pythonhosted.org/packages/01/86/85594bde46ed0d324742964d5d508111f935d28cdfe987778dcf8738c888/finplot-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "5cdaf50e0702628ba9cd0a5d5bdbfd19", "sha256": "34c3d81098a902dfaa38c425da7057dd008ab8b9a2f7d0347344b45250a32db1" }, "downloads": -1, "filename": "finplot-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5cdaf50e0702628ba9cd0a5d5bdbfd19", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16837, "upload_time": "2019-01-08T01:27:39", "url": "https://files.pythonhosted.org/packages/74/02/bd61f3ee52d15362a36f553a837788a4e415cc6c03c6d4b07323d20c6567/finplot-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "257af0470f95274058bd2f2c01bdc0a5", "sha256": "f8983bb2b2b0231197f03296475adb015923e44716bc01cf46bbe053cce9054e" }, "downloads": -1, "filename": "finplot-0.1.2.tar.gz", "has_sig": false, "md5_digest": "257af0470f95274058bd2f2c01bdc0a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15020, "upload_time": "2019-01-08T01:27:41", "url": "https://files.pythonhosted.org/packages/a1/e0/9739c72f176db6150d3f70966b3da8261c9452d47c72081b6c731cd81a0f/finplot-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "14f099c7a5777200457925e0b10c1f8c", "sha256": "3a80b851e5c46712ee9dc78791c64806d6993d648851393419c3f6b0b8e97103" }, "downloads": -1, "filename": "finplot-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "14f099c7a5777200457925e0b10c1f8c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27359, "upload_time": "2019-04-04T13:50:02", "url": "https://files.pythonhosted.org/packages/d1/22/e50e7bc6d4aeb150e983c85fec15d466bb22ec442893d149b8783749b1e7/finplot-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f45064bf25f9a5943ef561ddf722bcf7", "sha256": "9ea4be6afe7c7e68b868b80338838e34407b98480157e3d047a9cae5e0ed4b8f" }, "downloads": -1, "filename": "finplot-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f45064bf25f9a5943ef561ddf722bcf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15135, "upload_time": "2019-04-04T13:50:04", "url": "https://files.pythonhosted.org/packages/f3/c5/ddaf79ac244fced1cc0ef3bba981f130fa4d2792141d1d33d499aee2ab62/finplot-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ad4fa0811952ed5b944de2269789afc1", "sha256": "4e5df0010ebb37b3c3b8b34a2b6575ecaec60e81bb918d5b8847eb124f012d35" }, "downloads": -1, "filename": "finplot-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ad4fa0811952ed5b944de2269789afc1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27383, "upload_time": "2019-06-23T16:03:52", "url": "https://files.pythonhosted.org/packages/df/4f/fa6f06a6b9da7845bfbee12c27b187226d25464c44ae3e9ecd5be2eabe7f/finplot-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4766380ae375dccde4a2531cab714166", "sha256": "4cf1e3d758fd4147baf8db2e69eac0d715552948a805db2f8a5eaf7b376912bb" }, "downloads": -1, "filename": "finplot-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4766380ae375dccde4a2531cab714166", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15167, "upload_time": "2019-06-23T16:03:55", "url": "https://files.pythonhosted.org/packages/7a/81/fffe73ad4653ec7039db8f1814bb449a43d5edd08ecc82b7359c5aa0d8d1/finplot-0.3.0.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "6f6ea352b0c22f434c6e0791486225b6", "sha256": "122f3e0d00935efd3019b8b72d7a979c00f9045ffb427d67f93f0f67f42b83c8" }, "downloads": -1, "filename": "finplot-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6f6ea352b0c22f434c6e0791486225b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27920, "upload_time": "2019-07-06T20:24:54", "url": "https://files.pythonhosted.org/packages/85/25/d81e1d02d4a40b28d3bbfb24bee4e7bf6de6d0649425be23c6e97b0debf0/finplot-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a0cc414d86516c400b2238b2ace6aac", "sha256": "b40c873f87f14e7c79eb39c19f0609229d8c0201119e44f9f5b04f813c7eb15f" }, "downloads": -1, "filename": "finplot-0.3.2.tar.gz", "has_sig": false, "md5_digest": "3a0cc414d86516c400b2238b2ace6aac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15437, "upload_time": "2019-07-06T20:24:56", "url": "https://files.pythonhosted.org/packages/98/9e/1010b3612e8abf7e225e3ae5235661f6d411e07360b59742ac5e9866db64/finplot-0.3.2.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "b69c348eb3c0c67828570c92bf0f3422", "sha256": "cc8895bca2e7e502d4bbb2d8c26958607b8bbb66bc6ec92f86f51e9ccb776ffb" }, "downloads": -1, "filename": "finplot-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b69c348eb3c0c67828570c92bf0f3422", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29830, "upload_time": "2019-07-11T21:45:09", "url": "https://files.pythonhosted.org/packages/53/6d/25075f9415f64a58f63f39239090a3d3d4768ff2d61906a74a508f3aec2d/finplot-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a66fa14a303692e13d00be40db3268d4", "sha256": "cbdc37fd1c2137d464236b1a8cd3f9712994953ac5c148c088932577b3c7f88f" }, "downloads": -1, "filename": "finplot-0.3.4.tar.gz", "has_sig": false, "md5_digest": "a66fa14a303692e13d00be40db3268d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16853, "upload_time": "2019-07-11T21:45:11", "url": "https://files.pythonhosted.org/packages/00/1f/3e336ef061f2ec1e38c1a5b373313b6911fc654dd33a2cce2425ec452dcd/finplot-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "72839e5e288cb6fc0c83da5e57cea81e", "sha256": "30331898b0b9d4375fc28cbca647ecefc2e8335f16face67a20baad762eee59c" }, "downloads": -1, "filename": "finplot-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "72839e5e288cb6fc0c83da5e57cea81e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29872, "upload_time": "2019-07-14T12:08:42", "url": "https://files.pythonhosted.org/packages/75/42/422ccc3d0b143debfb8ef17c52a1d791543c4d7b0ec4c4e202e3f7948525/finplot-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "34450af7e04acab9ce79126ae3c07dda", "sha256": "6e562fb961b42a816d95e97b8bc464baa39ac7da9106c086828640b016635fc1" }, "downloads": -1, "filename": "finplot-0.3.5.tar.gz", "has_sig": false, "md5_digest": "34450af7e04acab9ce79126ae3c07dda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16901, "upload_time": "2019-07-14T12:08:44", "url": "https://files.pythonhosted.org/packages/f5/fc/a8dc82cbd1a3b030c3c7531014f976215c9b13e0a7a0e198f5318fb2e5c0/finplot-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "94051b2f7de2e8a1e554f1b1250aa0ae", "sha256": "d0feecb266d975355e61ef320f37e246ca5c72ce708785f1b2137f6f2f90be92" }, "downloads": -1, "filename": "finplot-0.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "94051b2f7de2e8a1e554f1b1250aa0ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19473, "upload_time": "2019-10-10T20:02:02", "url": "https://files.pythonhosted.org/packages/26/9b/36cfdbaba7fba2a0c346d3f54ee8e45048dfb1b352d4910a6be14cd56177/finplot-0.3.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b96104ee3130f51617558ba65a5947e6", "sha256": "205ab913c1631c55bf4403c3dbc48be65cb08e042c479e2217dab12dd21c251b" }, "downloads": -1, "filename": "finplot-0.3.6.tar.gz", "has_sig": false, "md5_digest": "b96104ee3130f51617558ba65a5947e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16873, "upload_time": "2019-10-10T20:02:06", "url": "https://files.pythonhosted.org/packages/b7/20/7892bf56072641d9ce783838197900de3f4052d05c69ab805e2f899f6423/finplot-0.3.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "94051b2f7de2e8a1e554f1b1250aa0ae", "sha256": "d0feecb266d975355e61ef320f37e246ca5c72ce708785f1b2137f6f2f90be92" }, "downloads": -1, "filename": "finplot-0.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "94051b2f7de2e8a1e554f1b1250aa0ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19473, "upload_time": "2019-10-10T20:02:02", "url": "https://files.pythonhosted.org/packages/26/9b/36cfdbaba7fba2a0c346d3f54ee8e45048dfb1b352d4910a6be14cd56177/finplot-0.3.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b96104ee3130f51617558ba65a5947e6", "sha256": "205ab913c1631c55bf4403c3dbc48be65cb08e042c479e2217dab12dd21c251b" }, "downloads": -1, "filename": "finplot-0.3.6.tar.gz", "has_sig": false, "md5_digest": "b96104ee3130f51617558ba65a5947e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16873, "upload_time": "2019-10-10T20:02:06", "url": "https://files.pythonhosted.org/packages/b7/20/7892bf56072641d9ce783838197900de3f4052d05c69ab805e2f899f6423/finplot-0.3.6.tar.gz" } ] }