{"id":13491330,"url":"https://github.com/santosjorge/cufflinks","last_synced_at":"2025-04-29T21:23:39.633Z","repository":{"id":23515238,"uuid":"26881329","full_name":"santosjorge/cufflinks","owner":"santosjorge","description":"Productivity Tools for Plotly + Pandas","archived":false,"fork":false,"pushed_at":"2024-07-03T14:15:42.000Z","size":17861,"stargazers_count":3056,"open_issues_count":104,"forks_count":674,"subscribers_count":107,"default_branch":"master","last_synced_at":"2025-04-29T17:47:19.519Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/santosjorge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-11-19T20:59:33.000Z","updated_at":"2025-04-22T18:47:38.000Z","dependencies_parsed_at":"2024-09-25T00:06:23.375Z","dependency_job_id":"5d545bd4-1e03-4c6b-9031-cc9653268d8f","html_url":"https://github.com/santosjorge/cufflinks","commit_stats":{"total_commits":394,"total_committers":40,"mean_commits":9.85,"dds":0.5812182741116751,"last_synced_commit":"b973f3a0f689816139de6c68855ab65ffec15567"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santosjorge%2Fcufflinks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santosjorge%2Fcufflinks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santosjorge%2Fcufflinks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/santosjorge%2Fcufflinks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/santosjorge","download_url":"https://codeload.github.com/santosjorge/cufflinks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251584091,"owners_count":21612959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T19:00:55.757Z","updated_at":"2025-04-29T21:23:39.617Z","avatar_url":"https://github.com/santosjorge.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook","Uncategorized","数据可视化","Visualization"],"sub_categories":["Uncategorized"],"readme":"\n## Cufflinks\n\nThis library binds the power of [plotly](http://www.plot.ly) with the flexibility of [pandas](http://pandas.pydata.org/) for easy plotting.\n\nThis library is available on [https://github.com/santosjorge/cufflinks](https://github.com/santosjorge/cufflinks)\n\nThis tutorial assumes that the plotly user credentials have already been configured as stated on the [getting started](https://plot.ly/python/getting-started/) guide.\n\n### Tutorials:\n\n* [Chart Gallery](http://nbviewer.ipython.org/gist/santosjorge/b278ce0ae2448f47c31d)\n* [Pandas Like Visualization](http://nbviewer.ipython.org/gist/santosjorge/aba934a0d20023a136c2)\n* [The Basics](http://nbviewer.ipython.org/gist/santosjorge/f3b07b2be8094deea8c6)\n* [Color Management](http://nbviewer.ipython.org/gist/santosjorge/00ca17b121fa2463e18b)\n* [Offline Mode](http://nbviewer.ipython.org/gist/santosjorge/5fdbe947496faf7af5e6)\n\n![3D Charts](img/ukswaps.gif)\n\n### Release Notes\n\n### v0.17.0\nSupport for Plotly 4.x  \nCufflinks is no longer compatible with Plotly 3.x\n\n### v0.14.0\nSupport for Plotly 3.0\n\n### v0.13.0\nNew `iplot` helper. \nTo see a comprehensive list of parameters \n**cf.help()**\n\n```python\n# For a list of supported figures\ncf.help()\n# Or to see the parameters supported that apply to a given figure try\ncf.help('scatter')\ncf.help('candle') #etc\n```\n\n### v0.12.0\n\nRemoved dependecies on ta-lib. \nThis library is no longer required. \nAll studies have be rewritten in Python. \n\n### v0.11.0\n\n* `QuantFigure` is a new class that will generate a graph object with persistence. \nParameters can be added/modified at any given point. \n\nThis can be as easy as:\n\n```python\ndf=cf.datagen.ohlc()\nqf=cf.QuantFig(df,title='First Quant Figure',legend='top',name='GS')\nqf.add_bollinger_bands()\nqf.iplot()\n\n```\n\n![QuantFigure](img/qf1.png)\n\n* **Technical Analysis Studies** can be added on demand. \n\n```python\nqf.add_sma([10,20],width=2,color=['green','lightgreen'],legendgroup=True)\nqf.add_rsi(periods=20,color='java')\nqf.add_bollinger_bands(periods=20,boll_std=2,colors=['magenta','grey'],fill=True)\nqf.add_volume()\nqf.add_macd()\nqf.iplot()\n```\n\n![Technical Analysis](img/qf2.png)\n\n\n### v0.10.0\n\n* `rangeslider` to display a date range slider at the bottom\n\t* `cf.datagen.ohlc().iplot(kind='candle',rangeslider=True)`\t\n* `rangeselector` to display buttons to change the date range displayed\n\t* `cf.datagen.ohlc(500).iplot(kind='candle', rangeselector={ 'steps':['1y','2 months','5 weeks','ytd','2mtd','reset'], \n     'bgcolor' : ('grey',.3), 'x': 0.3 , 'y' : 0.95})`\t\n* Customise annotions, with `fontsize`,`fontcolor`,`textangle`\n\t* Label mode\n\t\t* `cf.datagen.lines(1,mode='stocks').iplot(kind='line',\n\t\t\t\t\tannotations={'2015-02-02':'Market Crash',\n\t                 \t\t     '2015-03-01':'Recovery'},\n\t                textangle=-70,fontsize=13,fontcolor='grey')`\n\t* Explicit mode\n\t\t* `cf.datagen.lines(1,mode='stocks').iplot(kind='line',\n\t\t\t\tannotations=[{'text':'exactly here','x':'0.2',\n\t\t\t\t'xref':'paper','arrowhead':2,\n\t\t\t\t'textangle':-10,'ay':150,'arrowcolor':'red'}])`\n\n### v0.9.0\n\n* `Figure.iplot()` to plot figures\n* New high performing **candle** and **ohlc** plots\n\t* `cf.datagen.ohlc().iplot(kind='candle')`\t\n\n\n### v0.8.0\n\n* 'cf.datagen.choropleth()' to for sample choropleth data. \n* 'cf.datagen.scattergeo()' to for sample scattergeo data. \n* Support for choropleth and scattergeo figures in `iplot`\n* 'cf.get_colorscale' for maps and plotly objects that support colorscales\n\n### v0.7.1\n\n* `xrange`, `yrange` and `zrange` can be specified in `iplot` and `getLayout`\n\t* `cf.datagen.lines(1).iplot(yrange=[5,15])`\n* `layout_update` can be set in `iplot` and `getLayout` to explicitly update any `Layout` value\n\n### v0.7\n\n* Support for Python 3\n\n### v0.6  \n[See the IPython Notebook](http://nbviewer.ipython.org/gist/santosjorge/72665839a6f05a0567e0?flush_cache=true)\n\n* Support for **pie** charts  \n\t* `cf.datagen.pie().iplot(kind='pie',labels='labels',values='values')`\n* Generate Open, High, Low, Close data\n\t* `datagen.ohlc()`\n* Candle Charts support\n\t* `ohlc=cf.datagen.ohlc()`  \n\t  `ohlc.iplot(kind='candle',up_color='blue',down_color='red')`\n* OHLC (Bar) Charts support\n\t* `ohlc=cf.datagen.ohlc()`  \n\t  `ohlc.iplot(kind='ohlc',up_color='blue',down_color='red')`\n* Support for logarithmic charts ( logx | logy )\n\t* `df=pd.DataFrame([x**2] for x in range(100))`  \n\t  `df.iplot(kind='lines',logy=True)`  \n* Support for MulitIndex DataFrames\n* Support for Error Bars ( error_x | error_y )\n\t* `cf.datagen.lines(1,5).iplot(kind='bar',error_y=[1,2,3.5,2,2])`  \n\t* `cf.datagen.lines(1,5).iplot(kind='bar',error_y=20, error_type='percent')`   \n* Support for continuous error bars\n\t* `cf.datagen.lines(1).iplot(kind='lines',error_y=20,error_type='continuous_percent')`\n\t* `cf.datagen.lines(1).iplot(kind='lines',error_y=10,error_type='continuous',color='blue')`\n* **Technical Analysis Studies for Timeseries** *(beta)*  \n\t* Simple Moving Averages (SMA)\n\t\t* `cf.datagen.lines(1,500).ta_plot(study='sma',periods=[13,21,55])` \n\t* Relative Strength Indicator (RSI)\n\t\t* `cf.datagen.lines(1,200).ta_plot(study='boll',periods=14)`  \n\t* Bollinger Bands (BOLL)\n\t\t* `cf.datagen.lines(1,200).ta_plot(study='rsi',periods=14)`  \n\t* Moving Average Convergence Divergence (MACD)\n\t\t* `cf.datagen.lines(1,200).ta_plot(study='macd',fast_period=12,slow_period=26,\n                                signal_period=9)`  \n\n\n\n### v0.5\n\n* Support of offline charts\n\t* `cf.go_offline()`\n\t* `cf.go_online()`\n\t* `cf.iplot(figure,online=True)` (To force online whilst on offline mode)\n* Support for secondary axis\n\t* `fig=cf.datagen.lines(3,columns=['a','b','c']).figure()`  \n\t  `fig=fig.set_axis('b',side='right')`  \n\t  `cf.iplot(fig)`  \n\n\n### v0.4\n\n* Support for global theme setting\n\t* `cufflinks.set_config_file(theme='pearl')`\n* New theme *ggplot*\n\t* `cufflinks.datagen.lines(5).iplot(theme='ggplot')`\n* Support for horizontal bar charts *barh*\n\t* `cufflinks.datagen.lines(2).iplot(kind='barh',barmode='stack',bargap=.1)`\n* Support for histogram orientation and normalization\n\t* `cufflinks.datagen.histogram().iplot(kind='histogram',orientation='h',norm='probability')`\n* Support for *area* plots\n\t* `cufflinks.datagen.lines(4).iplot(kind='area',fill=True,opacity=1)`\n* Support for *subplots*\n\t* `cufflinks.datagen.histogram(4).iplot(kind='histogram',subplots=True,bins=50)`\n\t* `cufflinks.datagen.lines(4).iplot(subplots=True,shape=(4,1),shared_xaxes=True,vertical_spacing=.02,fill=True)`\n* Support for *scatter matrix* to display the distribution amongst every series in the DataFrame\n\t* `cufflinks.datagen.lines(4,1000).scatter_matrix()`\n* Support for *vline* and *hline* for horizontal and vertical lines\n\t* `cufflinks.datagen.lines(3).iplot(hline=[2,3])`\n\t* `cufflinks.datagen.lines(3).iplot(hline=dict(y=2,color='blue',width=3))`\n* Support for *vspan* and *hspan* for horizontal and vertical areas\n\t* `cufflinks.datagen.lines(3).iplot(hspan=(-1,2))`\n\t* `cufflinks.datagen.lines(3).iplot(hspan=dict(y0=-1,y1=2,color='orange',fill=True,opacity=.4))`\n\n\n### v0.3.2\n\n* Global setting for public charts\n\t* `cufflinks.set_config_file(world_readable=True)`\n\n#### v0.3\n\n* Enhanced Spread charts\n\t* `cufflinks.datagen.lines(2).iplot(kind='spread')`\n* Support for Heatmap charts\n\t* `cufflinks.datagen.heatmap().iplot(kind='heatmap')`\n* Support for Bubble charts\n\t* `cufflinks.datagen.bubble(4).iplot(kind='bubble',x='x',y='y',text='text',size='size',categories='categories')`\n* Support for Bubble3d charts\n\t* `cufflinks.datagen.bubble3d(4).iplot(kind='bubble3d',x='x',y='y',z='z',text='text',size='size',categories='categories')`\n* Support for Box charts\n\t* `cufflinks.datagen.box().iplot(kind='box')`\n* Support for Surface charts\n\t* `cufflinks.datagen.surface().iplot(kind='surface')`\n* Support for Scatter3d charts\n\t* `cufflinks.datagen.scatter3d().iplot(kind='scatter3d',x='x',y='y',z='z',text='text',categories='categories')`\n* Support for Histograms\n\t* `cufflinks.datagen.histogram(2).iplot(kind='histogram')`\n* Data generation for most common plot types\n\t* `cufflinks.datagen`\n* Data extraction: Extract data from any Plotly chart. Data is delivered in DataFrame\n\t* `cufflinks.to_df(Figure)`\n* Integration with [colorlover](https://github.com/jackparmer/colorlover/)\n\t* Support for scales `iplot(colorscale='accent')` to plot a chart using an *accent* color scale\n\t* cufflinks.scales() to see all available scales\n* Support for named colors\n\t\t* `iplot(colors=['pink','red','yellow'])`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsantosjorge%2Fcufflinks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsantosjorge%2Fcufflinks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsantosjorge%2Fcufflinks/lists"}