Productivity Tools for Plotly + Pandas
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci circleci v2 Sep 29, 2018
cufflinks Merge pull request #159 from timkpaine/bugfix148 Jan 11, 2019
data Added support for maps May 13, 2016
img v0.11.0 - Quant Figure May 31, 2017
.gitignore More plotly3 fixes Sep 9, 2018
Cufflinks Tutorial - Chart Gallery.ipynb plotly3 - axis1 to axis Sep 9, 2018
Cufflinks Tutorial - Colors.ipynb plotly3 - axis1 to axis Sep 9, 2018
Cufflinks Tutorial - Offline.ipynb
Cufflinks Tutorial - Pandas Like.ipynb plotly3 - updated notebooks Sep 9, 2018
Cufflinks Tutorial - Plotly.ipynb plotly3 - updated notebooks Sep 9, 2018
Cufflinks Tutorial - Quantfig.ipynb
license.txt Added license. Fixes #51 Jan 18, 2017
requirements.txt Fix Python 2 support Sep 13, 2018
setup.cfg Modified Setup Files Feb 14, 2015 bars opacity Nov 8, 2018 quantfig tests working, but need to reimplement the 3 FIXME TKP's for… Jul 25, 2018


This library binds the power of plotly with the flexibility of pandas for easy plotting.

This library is available on

This tutorial assumes that the plotly user credentials have already been configured as stated on the getting started guide.


3D Charts

Release Notes


Support for Plotly 3.0


New iplot helper. To see a comprehensive list of parameters

# For a list of supported figures
# Or to see the parameters supported that apply to a given figure try'scatter')'candle') #etc


Removed dependecies on ta-lib. This library is no longer required. All studies have be rewritten in Python.


  • QuantFigure is a new class that will generate a graph object with persistence. Parameters can be added/modified at any given point.

This can be as easy as:

qf=cf.QuantFig(df,title='First Quant Figure',legend='top',name='GS')


  • Technical Analysis Studies can be added on demand.

Technical Analysis


  • rangeslider to display a date range slider at the bottom
    • cf.datagen.ohlc().iplot(kind='candle',rangeslider=True)
  • rangeselector to display buttons to change the date range displayed
    • cf.datagen.ohlc(500).iplot(kind='candle', rangeselector={ 'steps':['1y','2 months','5 weeks','ytd','2mtd','reset'], 'bgcolor' : ('grey',.3), 'x': 0.3 , 'y' : 0.95})
  • Customise annotions, with fontsize,fontcolor,textangle
    • Label mode
      • cf.datagen.lines(1,mode='stocks').iplot(kind='line', annotations={'2015-02-02':'Market Crash', '2015-03-01':'Recovery'}, textangle=-70,fontsize=13,fontcolor='grey')
    • Explicit mode
      • cf.datagen.lines(1,mode='stocks').iplot(kind='line', annotations=[{'text':'exactly here','x':'0.2', 'xref':'paper','arrowhead':2, 'textangle':-10,'ay':150,'arrowcolor':'red'}])


  • Figure.iplot() to plot figures
  • New high performing candle and ohlc plots
    • cf.datagen.ohlc().iplot(kind='candle')


  • 'cf.datagen.choropleth()' to for sample choropleth data.
  • 'cf.datagen.scattergeo()' to for sample scattergeo data.
  • Support for choropleth and scattergeo figures in iplot
  • 'cf.get_colorscale' for maps and plotly objects that support colorscales


  • xrange, yrange and zrange can be specified in iplot and getLayout
    • cf.datagen.lines(1).iplot(yrange=[5,15])
  • layout_update can be set in iplot and getLayout to explicitly update any Layout value


  • Support for Python 3


See the IPython Notebook

  • Support for pie charts
    • cf.datagen.pie().iplot(kind='pie',labels='labels',values='values')
  • Generate Open, High, Low, Close data
    • datagen.ohlc()
  • Candle Charts support
    • ohlc=cf.datagen.ohlc()
  • OHLC (Bar) Charts support
    • ohlc=cf.datagen.ohlc()
  • Support for logarithmic charts ( logx | logy )
    • df=pd.DataFrame([x**2] for x in range(100))
  • Support for MulitIndex DataFrames
  • Support for Error Bars ( error_x | error_y )
    • cf.datagen.lines(1,5).iplot(kind='bar',error_y=[1,2,3.5,2,2])
    • cf.datagen.lines(1,5).iplot(kind='bar',error_y=20, error_type='percent')
  • Support for continuous error bars
    • cf.datagen.lines(1).iplot(kind='lines',error_y=20,error_type='continuous_percent')
    • cf.datagen.lines(1).iplot(kind='lines',error_y=10,error_type='continuous',color='blue')
  • Technical Analysis Studies for Timeseries (beta)
    • Simple Moving Averages (SMA)
      • cf.datagen.lines(1,500).ta_plot(study='sma',periods=[13,21,55])
    • Relative Strength Indicator (RSI)
      • cf.datagen.lines(1,200).ta_plot(study='boll',periods=14)
    • Bollinger Bands (BOLL)
      • cf.datagen.lines(1,200).ta_plot(study='rsi',periods=14)
    • Moving Average Convergence Divergence (MACD)
      • cf.datagen.lines(1,200).ta_plot(study='macd',fast_period=12,slow_period=26, signal_period=9)


  • Support of offline charts
    • cf.go_offline()
    • cf.go_online()
    • cf.iplot(figure,online=True) (To force online whilst on offline mode)
  • Support for secondary axis
    • fig=cf.datagen.lines(3,columns=['a','b','c']).figure()


  • Support for global theme setting
    • cufflinks.set_config_file(theme='pearl')
  • New theme ggplot
    • cufflinks.datagen.lines(5).iplot(theme='ggplot')
  • Support for horizontal bar charts barh
    • cufflinks.datagen.lines(2).iplot(kind='barh',barmode='stack',bargap=.1)
  • Support for histogram orientation and normalization
    • cufflinks.datagen.histogram().iplot(kind='histogram',orientation='h',norm='probability')
  • Support for area plots
    • cufflinks.datagen.lines(4).iplot(kind='area',fill=True,opacity=1)
  • Support for subplots
    • cufflinks.datagen.histogram(4).iplot(kind='histogram',subplots=True,bins=50)
    • cufflinks.datagen.lines(4).iplot(subplots=True,shape=(4,1),shared_xaxes=True,vertical_spacing=.02,fill=True)
  • Support for scatter matrix to display the distribution amongst every series in the DataFrame
    • cufflinks.datagen.lines(4,1000).scatter_matrix()
  • Support for vline and hline for horizontal and vertical lines
    • cufflinks.datagen.lines(3).iplot(hline=[2,3])
    • cufflinks.datagen.lines(3).iplot(hline=dict(y=2,color='blue',width=3))
  • Support for vspan and hspan for horizontal and vertical areas
    • cufflinks.datagen.lines(3).iplot(hspan=(-1,2))
    • cufflinks.datagen.lines(3).iplot(hspan=dict(y0=-1,y1=2,color='orange',fill=True,opacity=.4))


  • Global setting for public charts
    • cufflinks.set_config_file(world_readable=True)


  • Enhanced Spread charts
    • cufflinks.datagen.lines(2).iplot(kind='spread')
  • Support for Heatmap charts
    • cufflinks.datagen.heatmap().iplot(kind='heatmap')
  • Support for Bubble charts
    • cufflinks.datagen.bubble(4).iplot(kind='bubble',x='x',y='y',text='text',size='size',categories='categories')
  • Support for Bubble3d charts
    • cufflinks.datagen.bubble3d(4).iplot(kind='bubble3d',x='x',y='y',z='z',text='text',size='size',categories='categories')
  • Support for Box charts
  • Support for Surface charts
    • cufflinks.datagen.surface().iplot(kind='surface')
  • Support for Scatter3d charts
    • cufflinks.datagen.scatter3d().iplot(kind='scatter3d',x='x',y='y',z='z',text='text',categories='categories')
  • Support for Histograms
    • cufflinks.datagen.histogram(2).iplot(kind='histogram')
  • Data generation for most common plot types
    • cufflinks.datagen
  • Data extraction: Extract data from any Plotly chart. Data is delivered in DataFrame
    • cufflinks.to_df(Figure)
  • Integration with colorlover
    • Support for scales iplot(colorscale='accent') to plot a chart using an accent color scale
    • cufflinks.scales() to see all available scales
  • Support for named colors * iplot(colors=['pink','red','yellow'])