{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "##Cufflinks\n", "\n", "This library binds the power of [plotly](http://www.plot.ly) with the flexibility of [pandas](http://pandas.pydata.org/) for easy plotting.\n", "\n", "This library is available on https://github.com/santosjorge/cufflinks\n", "\n", "This tutorial assumes that the plotly user credentials have already been configured as stated on the [getting started](https://plot.ly/python/getting-started/) guide." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pandas as pd\n", "import cufflinks as cf\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We make all charts public and set a global theme" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cf.set_config_file(sharing='public',theme='pearl',offline=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create a set of timeseries" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "df=pd.DataFrame(np.random.randn(100,5),index=pd.date_range('1/1/15',periods=100),\n", " columns=['IBM','MSFT','GOOG','VERZ','APPL'])\n", "df=df.cumsum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**iplot** can be used on any DataFrame to plot on a plotly chart. \n", "If no filename is specified then a generic *Plotly Playground* file is created.\n", "\n", "All the charts are created as private by default. To make them public you can use **world_readable=True**\n", "\n", "Let's look at the avilable parameters" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method _iplot in module cufflinks.plotlytools:\n", "\n", "_iplot(self, data=None, layout=None, filename='', sharing=None, kind='scatter', title='', xTitle='', yTitle='', zTitle='', theme=None, colors=None, colorscale=None, fill=False, width=None, mode='lines', symbol='dot', size=12, barmode='', sortbars=False, bargap=None, bargroupgap=None, bins=None, histnorm='', histfunc='count', orientation='v', boxpoints=False, annotations=None, keys=False, bestfit=False, bestfit_colors=None, categories='', x='', y='', z='', text='', gridcolor=None, zerolinecolor=None, margin=None, labels=None, values=None, secondary_y='', subplots=False, shape=None, error_x=None, error_y=None, error_type='data', asFrame=False, asDates=False, asFigure=False, asImage=False, dimensions=(1116, 587), asPlot=False, asUrl=False, online=None, **kwargs) method of pandas.core.frame.DataFrame instance\n", " Returns a plotly chart either as inline chart, image of Figure object\n", " \n", " Parameters:\n", " -----------\n", " data : Data\n", " Plotly Data Object.\n", " If not entered then the Data object will be automatically\n", " generated from the DataFrame.\n", " data : Data\n", " Plotly Data Object.\n", " If not entered then the Data object will be automatically\n", " generated from the DataFrame.\n", " layout : Layout\n", " Plotly layout Object\n", " If not entered then the Layout objet will be automatically\n", " generated from the DataFrame.\n", " filename : string\n", " Filename to be saved as in plotly account\n", " sharing : bool\n", " If False then it will be saved as a private file\n", " kind : string\n", " Kind of chart\n", " scatter\n", " bar\n", " box\n", " spread\n", " ratio\n", " heatmap\n", " surface\n", " histogram\n", " bubble\n", " bubble3d\n", " scatter3d \n", " title : string\n", " Chart Title \n", " xTitle : string\n", " X Axis Title\n", " yTitle : string\n", " Y Axis Title\n", " zTitle : string\n", " zTitle : string\n", " Z Axis Title\n", " Applicable only for 3d charts\n", " theme : string\n", " Layout Theme\n", " solar\n", " pearl\n", " white \n", " see cufflinks.getThemes() for all \n", " available themes\n", " colors : list or dict\n", " {key:color} to specify the color for each column\n", " [colors] to use the colors in the defined order\n", " colorscale : str \n", " Color scale name\n", " If the color name is preceded by a minus (-) \n", " then the scale is inversed\n", " Only valid if 'colors' is null\n", " See cufflinks.colors.scales() for available scales\n", " fill : bool\n", " Filled Traces \n", " width : int\n", " Line width \n", " mode : string\n", " Plotting mode for scatter trace\n", " lines\n", " markers\n", " lines+markers\n", " lines+text\n", " markers+text\n", " lines+markers+text \n", " symbol : string\n", " The symbol that is drawn on the plot for each marker\n", " Valid only when mode includes markers\n", " dot\n", " cross\n", " diamond\n", " square\n", " triangle-down\n", " triangle-left\n", " triangle-right\n", " triangle-up\n", " x\n", " size : string or int \n", " Size of marker \n", " Valid only if marker in mode\n", " barmode : string\n", " Mode when displaying bars\n", " group\n", " stack\n", " overlay\n", " * Only valid when kind='bar'\n", " sortbars : bool\n", " Sort bars in descending order\n", " * Only valid when kind='bar'\n", " bargap : float\n", " Sets the gap between bars\n", " [0,1)\n", " * Only valid when kind is 'histogram' or 'bar'\n", " bargroupgap : float\n", " Set the gap between groups\n", " [0,1)\n", " * Only valid when kind is 'histogram' or 'bar' \n", " bins : int\n", " Specifies the number of bins \n", " * Only valid when kind='histogram'\n", " histnorm : string\n", " '' (frequency)\n", " percent\n", " probability\n", " density\n", " probability density\n", " Sets the type of normalization for an histogram trace. By default\n", " the height of each bar displays the frequency of occurrence, i.e., \n", " the number of times this value was found in the\n", " corresponding bin. If set to 'percent', the height of each bar\n", " displays the percentage of total occurrences found within the\n", " corresponding bin. If set to 'probability', the height of each bar\n", " displays the probability that an event will fall into the\n", " corresponding bin. If set to 'density', the height of each bar is\n", " equal to the number of occurrences in a bin divided by the size of\n", " the bin interval such that summing the area of all bins will yield\n", " the total number of occurrences. If set to 'probability density',\n", " the height of each bar is equal to the number of probability that an\n", " event will fall into the corresponding bin divided by the size of\n", " the bin interval such that summing the area of all bins will yield\n", " 1.\n", " * Only valid when kind='histogram'\n", " histfunc : string\n", " count\n", " sum\n", " avg\n", " min\n", " max\n", " Sets the binning function used for an histogram trace. \n", " * Only valid when kind='histogram' \n", " orientation : string\n", " h \n", " v\n", " Sets the orientation of the bars. If set to 'v', the length of each\n", " | bar will run vertically. If set to 'h', the length of each bar will\n", " | run horizontally\n", " * Only valid when kind is 'histogram','bar' or 'box'\n", " boxpoints : string\n", " Displays data points in a box plot\n", " outliers\n", " all\n", " suspectedoutliers\n", " False\n", " annotations : dictionary\n", " Dictionary of annotations\n", " {x_point : text}\n", " keys : list of columns\n", " List of columns to chart.\n", " Also can be usded for custom sorting.\n", " bestfit : boolean or list\n", " If True then a best fit line will be generated for\n", " all columns.\n", " If list then a best fit line will be generated for\n", " each key on the list.\n", " bestfit_colors : list or dict\n", " {key:color} to specify the color for each column\n", " [colors] to use the colors in the defined order \n", " categories : string\n", " Name of the column that contains the categories\n", " x : string\n", " Name of the column that contains the x axis values \n", " y : string\n", " Name of the column that contains the y axis values\n", " z : string\n", " Name of the column that contains the z axis values \n", " text : string\n", " Name of the column that contains the text values \n", " gridcolor : string\n", " Grid color \n", " zerolinecolor : string\n", " Zero line color\n", " margin : dict or tuple\n", " Dictionary (l,r,b,t) or\n", " Tuple containing the left,\n", " right, bottom and top margins\n", " labels : string\n", " Name of the column that contains the labels.\n", " * Only valid when kind='pie' \n", " values : string\n", " Name of the column that contains the values.\n", " * Only valid when kind='pie'\n", " secondary_y : string or list(string)\n", " Name(s) of the column to be charted on the \n", " right hand side axis\n", " subplots : bool\n", " If true then each trace is placed in \n", " subplot layout\n", " shape : (rows,cols)\n", " Tuple indicating the size of rows and columns\n", " If omitted then the layout is automatically set\n", " * Only valid when subplots=True\n", " error_x : int or float or [int or float]\n", " error values for the x axis\n", " error_y : int or float or [int or float]\n", " error values for the y axis\n", " error_type : string\n", " type of error bars\n", " 'data' \n", " 'constant'\n", " 'percent'\n", " 'sqrt'\n", " 'continuous'\n", " 'continuous_percent'\n", " asFrame : bool\n", " If true then the data component of Figure will\n", " be of Pandas form (Series) otherwise they will \n", " be index values\n", " asDates : bool\n", " If true it truncates times from a DatetimeIndex\n", " asFigure : bool\n", " If True returns plotly Figure\n", " asImage : bool\n", " If True it returns Image\n", " * Only valid when asImage=True\n", " dimensions : tuple(int,int)\n", " Dimensions for image\n", " (width,height) \n", " asPlot : bool\n", " If True the chart opens in browser\n", " asUrl : bool\n", " If True the chart url is returned. No chart is displayed. \n", " online : bool\n", " If True then the chart is rendered on the server \n", " even when running in offline mode. \n", " \n", " Other Kwargs\n", " ============\n", " \n", " Pie charts\n", " sort : bool\n", " If True it sorts the labels by value\n", " pull : float [0-1]\n", " Pulls the slices from the centre \n", " hole : float [0-1]\n", " Sets the size of the inner hole\n", " textposition : string \n", " Sets the position of the legends for each slice\n", " outside\n", " inner\n", " textinfo : string \n", " Sets the information to be displayed on \n", " the legends \n", " label\n", " percent\n", " value\n", " * or ony combination of the above using \n", " '+' between each item\n", " ie 'label+percent'\n", " \n", " Error Bars\n", " error_trace : string\n", " Name of the column for which error should be \n", " plotted. If omitted then errors apply to all \n", " traces.\n", " error_values_minus : int or float or [int or float]\n", " Values corresponding to the span of the error bars \n", " below the trace coordinates\n", " error_color : string\n", " Color for error bars\n", " error_thickness : float \n", " Sets the line thickness of the error bars\n", " error_width : float\n", " Sets the width (in pixels) of the cross-bar at both \n", " ends of the error bars\n", " error_opacity : float [0,1]\n", " Opacity for the error bars\n", " \n", " Subplots\n", " horizontal_spacing : float [0,1]\n", " Space between subplot columns.\n", " vertical_spacing : float [0,1]\n", " Space between subplot rows.\n", " subplot_titles : bool\n", " If True, chart titles are plotted\n", " at the top of each subplot\n", " shared_xaxes : bool\n", " Assign shared x axes.\n", " If True, subplots in the same grid column have one common\n", " shared x-axis at the bottom of the grid.\n", " shared_yaxes : bool\n", " Assign shared y axes.\n", " If True, subplots in the same grid row have one common\n", " shared y-axis on the left-hand side of the grid.\n", "\n" ] } ], "source": [ "help(df.iplot)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iplot(filename='Tutorial 1')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Customizing Themes\n", "\n", "We can pass a **theme** to the **iplot** function. \n", "3 themes are available, but you can create your own\n", "* Solar\n", "* Pearl (Default)\n", "* White" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[['APPL','IBM','VERZ']].iplot(theme='white',filename='Tutorial White')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also pass common metadata for the chart" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iplot(theme='pearl',filename='Tutorial Metadata',title='Stock Returns',xTitle='Dates',yTitle='Returns')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bestfit Lines\n", "\n", "We can easily add a bestfit line to any Series\n", "\n", "This will automatically add a best fit approximation and the equation as the legend." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['IBM'].iplot(filename='IBM Returns',bestfit=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Customizing Colors\n", "\n", "We can pass any color (either by Hex, RGB or Text *) \n", "\n", "*Text values are specified in the cufflinks.colors modules" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['IBM'].iplot(filename='IBM Returns - colors',bestfit=True,colors=['pink'],bestfit_colors=['blue'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Filled Traces\n", "\n", "We can add a fill to a trace with **fill=True**" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['IBM'].iplot(filename='Tutorial Microsoft',fill=True,colors=['green'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bar Charts\n", "\n", "We can easily create a bar chart with the parameter **kind**" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sum().iplot(kind='bar',filename='Tutorial Barchart')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bars can also be stacked by a given dimension" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.resample('M').iplot(kind='bar',barmode='stacked',filename='Tutorial Bar Stacked')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Spread and Ratio charts\n", "\n", "We can also create spread and ratio charts on the fly with **kind='spread'** and **kind='ratio'**" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[['VERZ','IBM']].iplot(filename='Tutorial Spread',kind='spread')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(df[['GOOG','MSFT']]+20).iplot(filename='Tutorial Ratio',kind='ratio',colors=['green','red'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Annotations\n", "\n", "Annotations can be added to the chart and these are automatically positioned correctly. \n", "\n", "**Annotations** should be specified in a dictionary form" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "annotations={'2015-01-15':'Dividends','2015-03-31':'Split Announced'}\n", "df['MSFT'].iplot(filename='Tutorial Annotations',annotations=annotations)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Output as Image\n", "\n", "The output of a chart can be in an image mode as well. \n", "\n", "For this we can use **asImage=True**\n", "\n", "We can also set the dimensions (optional) with **dimensions=(width,height)**" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAH0CAYAAADFQEl4AAAgAElEQVR4XuydC3hV1Zn334QAAUIu\nGCGolVAB6YhDQFqZ6gh+1tFP2hEcK9SKXISqqJ/xSjtK1eJl1FaDo6BWq+jUynytQK23Vgew2g+n\nKHHEFgErUCrhIiQQIUFIvue/DzucJOey9z773Wevff77eXhQsve71v69O+ec31nrXSuvtbW1VXiQ\nAAmQAAmQAAmQAAmQAAmQQAAE8iggAVBmEyRAAiRAAiRAAiRAAiRAAhYBCggfBBIgARIgARIgARIg\nARIggcAIUEACQ82GSIAESIAESIAESIAESIAEKCB8BkiABEiABEiABEiABEiABAIjQAEJDDUbIgES\nIAESIAESIAESIAESoIDwGSABEiABEiABEiABEiABEgiMAAUkMNRsiARIgARIgARIgARIgARIgALC\nZ4AESIAESIAESIAESIAESCAwAhSQwFCzIRIgARIgARIgARIgARIgAQoInwESIAESIAESIAESIAES\nIIHACFBAAkPNhkiABEiABEiABEiABEiABCggfAZIgARIgARIgARIgARIgAQCI0ABCQw1GyIBEiAB\nEiABEiABEiABEqCA8BkgARIgARIgARIgARIgARIIjAAFJDDUbIgESIAESIAESIAESIAESIACwmeA\nBEiABEiABEiABEiABEggMAIUkMBQsyESIAESIAESIAESIAESIAEKCJ8BEiABEiABEiABEiABEiCB\nwAhQQAJDzYZIgARIgARIgARIgARIgAQoIHwGSIAESIAESIAESIAESIAEAiNAAQkMNRsiARIgARIg\nARIgARIgARKggPAZIAESIAESIAESIAESIAESCIwABSQw1GyIBEiABEiABEiABEiABEiAAsJngARI\ngARIgARIgARIgARIIDACFJDAULMhEiABEiABEiABEiABEiABCgifARIgARIgARIgARIgARIggcAI\nUEACQ82GSIAESIAESIAESIAESIAEKCB8BkiABEiABEiABEiABEiABAIjQAEJDDUbIgESIAESIAES\nIAESIAESoIDwGSABEiABEiABEiABEiABEgiMAAUkMNRsiARIgARIgARIgARIgARIgALCZ4AESIAE\nSIAESIAESIAESCAwAhSQwFCzIRIgARIgARIgARIgARIgAQoInwESIAESIAESIAESIAESIIHACFBA\nAkPNhkiABEiABEiABEiABEiABCggfAZIgARIgARIgARIgARIgAQCI0ABCQw1GyIBEiABEiABEiAB\nEiABEqCA8BkgARIgARIgARIgARIgARIIjAAFJDDUbIgESIAESIAESIAESIAESIACwmeABEiABEiA\nBEiABEiABEggMAIUkMBQsyESIAESIAESIAESIAESIAEKCJ8BEiABEiABEiABEiABEiCBwAhQQAJD\nzYZIgARIgARIgARIgARIgAQoIHwGSIAESIAESIAESIAESIAEAiNAAQkMNRsiARIgARIgARIgARIg\nARKggPAZIAESIAESIAESIAESIAESCIwABSQw1GyIBEiABEiABEiABEiABEiAAsJngARIgARIgARI\ngARIgARIIDACFJDAULMhEiABEiABEiABEiABEiABCgifARIgARIgARIgARIgARIggcAIUEACQ82G\nSIAESIAESIAESIAESIAEKCB8BkiABEiABEiABEiABEiABAIjQAEJDDUbIgESIAESIAESIAESIAES\noIDwGSABEiABEiABEiABEiABEgiMAAUkMNRsiARIgARIgARIgARIgARIgALCZ4AESIAESIAESIAE\nSIAESCAwAhSQwFCzIRIgARIgARIgARIgARIgAQoInwESIAESIAESIAESIAESIIHACFBAAkPNhkiA\nBEiABEiABEiABEiABCggfAZIgARIgARIgARIgARIgAQCI0ABCQw1GyIBEiABEiABEiABEiABEqCA\n8BkgARIgARIgARIgARIgARIIjAAFJDDUbIgESIAESIAESIAESIAESIACwmeABEiABEiABEiABEiA\nBEggMAIUkMBQsyESIAESIAESIAESIAESIAEKCJ8BEiABEiABEiABEiABEiCBwAhQQAJDzYZIgARI\ngARIgARIgARIgAQoIHwGSIAESIAESIAESIAESIAEAiNAAQkMNRsiARIgARIgARIgARIgARKggPAZ\nIAESIAESIAESIAESIAESCIwABSQw1GyIBEiABEiABEiABEiABEiAAsJngARIgARIgARIgARIgARI\nIDACFJDAULMhEiABEiABEiABEiABEiABCgifARIgARIgARIgARIgARIggcAIUEACQ82GSIAESIAE\nSIAESIAESIAEKCB8BkiABEiABEiABEiABEiABAIjQAEJDDUbIgESIAESIAESIAESIAESoIDwGSAB\nEiABEiABEiABEiABEgiMAAUkMNRsiARIgARIgARIgARIgARIgALCZ4AESIAESIAESIAESIAESCAw\nAhSQwFCzIRIgARIgARIgARIgARIgAQoInwESIAESIAESIAESIAESIIHACFBAAkPNhkiABEiABEiA\nBEiABEiABCggfAZIgARIgARIgARIgARIgAQCI0ABCQw1GyIBEiABEiABEiABEiABEqCA8BkgARIg\nARIgARIgARIgARIIjAAFJDDUbIgESIAESIAESIAESIAESIACwmeABEiABEiABEiABEiABEggMAIU\nkMBQsyESIAESIAESIAESIAESIAEKCJ8BEiABEiABEiABEiABEiCBwAhQQAJDzYZIgARIgARIgARI\ngARIgAQoIHwGSIAESIAESIAESIAESIAEAiNAAQkMNRsiARIgARIgARIgARIgARKggPAZIAESIAES\nIAESIAESIAESCIwABSQw1GyIBEiABEiABEiABEiABEiAAsJngARIgARIgARIgARIgARIIDACFJDA\nULMhEiABEiABEiABEiABEiABCgifARIgARIgARIgARIgARIggcAIUEACQ82GSIAESIAESIAESIAE\nSIAEKCB8BjwR+HRbvfQtL5aCLvmerudFyQkc+OKg7KrfJxVHFxOTAoH6PfskPz9fiosKFaIz5Nbt\nDVLep0i6FnQhDJ8JfHHwkOzc1Sj9+5b4HJnhQKBh734LREnvHgSiQGDrjgYpL+NrgwJaI0NSQIxM\nW/Y7TQHRywEFRI8tIlNAdPlSQPT4UkD02FJAdNkiOgVEn7FJLVBATMpWiPpKAdFLBgVEjy0FRJet\n9SGDIyBqkCkgamitwBwB0eVLAdHla1p0CohpGQtJfykgeomggOixpYDosqWA6PKlgOjypYDo8qWA\n6PI1LToFxLSMhaS/FBC9RFBA9NhSQHTZUkB0+VJAdPlSQHT5UkB0+ZoWnQJiWsZC0l8KiF4iKCB6\nbCkgumwpILp8KSC6fCkgunwpILp8TYtOATEtYyHpLwVELxEUED22FBBdthQQXb4UEF2+FBBdvhQQ\nXb6mRaeAmJaxkPSXAqKXCAqIHlsKiC5bCoguXwqILl8KiC5fCoguX9OiU0BMy1hI+ksB0UsEBUSP\nLQVEly0FRJcvBUSXLwVEly8FRJevadEpIKZlLCT9pYDoJYICoseWAqLLlgKiy5cCosuXAqLLlwKi\n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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df[['VERZ','MSFT']].iplot(filename='Tutorial Image',theme='white',colors=['pink','blue'],asImage=True,dimensions=(800,500))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Advanced Use\n", "\n", "It is also possible to get the Plotly Figure as an output to tweak it manually\n", "\n", "We can achieve this with **df.figure()**" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'data': [{'line': {'color': 'rgba(255, 153, 51, 1.0)', 'width': '1.3'},\n", " 'mode': 'lines',\n", " 'name': 'GOOG',\n", " 'text': '',\n", " 'type': u'scatter',\n", " 'x': ['2015-01-01',\n", " '2015-01-02',\n", " '2015-01-03',\n", " '2015-01-04',\n", " '2015-01-05',\n", " '2015-01-06',\n", " '2015-01-07',\n", " '2015-01-08',\n", " '2015-01-09',\n", " '2015-01-10',\n", " '2015-01-11',\n", " '2015-01-12',\n", " '2015-01-13',\n", " '2015-01-14',\n", " '2015-01-15',\n", " '2015-01-16',\n", " '2015-01-17',\n", " '2015-01-18',\n", " '2015-01-19',\n", " '2015-01-20',\n", " '2015-01-21',\n", " '2015-01-22',\n", " '2015-01-23',\n", " '2015-01-24',\n", " '2015-01-25',\n", " '2015-01-26',\n", " '2015-01-27',\n", " '2015-01-28',\n", " '2015-01-29',\n", " '2015-01-30',\n", " '2015-01-31',\n", " '2015-02-01',\n", " '2015-02-02',\n", " '2015-02-03',\n", " '2015-02-04',\n", " '2015-02-05',\n", " '2015-02-06',\n", " '2015-02-07',\n", " '2015-02-08',\n", " '2015-02-09',\n", " '2015-02-10',\n", " '2015-02-11',\n", " '2015-02-12',\n", " '2015-02-13',\n", " '2015-02-14',\n", " '2015-02-15',\n", " '2015-02-16',\n", " '2015-02-17',\n", " '2015-02-18',\n", " '2015-02-19',\n", " '2015-02-20',\n", " '2015-02-21',\n", " '2015-02-22',\n", " '2015-02-23',\n", " '2015-02-24',\n", " '2015-02-25',\n", " '2015-02-26',\n", " '2015-02-27',\n", " '2015-02-28',\n", " '2015-03-01',\n", " '2015-03-02',\n", " '2015-03-03',\n", " '2015-03-04',\n", " '2015-03-05',\n", " '2015-03-06',\n", " '2015-03-07',\n", " '2015-03-08',\n", " '2015-03-09',\n", " '2015-03-10',\n", " '2015-03-11',\n", " '2015-03-12',\n", " '2015-03-13',\n", " '2015-03-14',\n", " '2015-03-15',\n", " '2015-03-16',\n", " '2015-03-17',\n", " '2015-03-18',\n", " '2015-03-19',\n", " '2015-03-20',\n", " '2015-03-21',\n", " '2015-03-22',\n", " '2015-03-23',\n", " '2015-03-24',\n", " '2015-03-25',\n", " '2015-03-26',\n", " '2015-03-27',\n", " '2015-03-28',\n", " '2015-03-29',\n", " '2015-03-30',\n", " '2015-03-31',\n", " '2015-04-01',\n", " '2015-04-02',\n", " '2015-04-03',\n", " '2015-04-04',\n", " '2015-04-05',\n", " '2015-04-06',\n", " '2015-04-07',\n", " '2015-04-08',\n", " '2015-04-09',\n", " '2015-04-10'],\n", " 'y': array([ -7.86236913e-01, -1.14121508e-01, 9.48683126e-01,\n", " 1.02364949e+00, 4.66581892e-01, 2.65939378e-01,\n", " 6.51098667e-01, 1.15954031e+00, 2.28297039e+00,\n", " 3.57556923e+00, 2.43887747e+00, 1.92984583e+00,\n", " -3.37050033e-01, 1.84751518e-03, -9.10413216e-01,\n", " 4.89303959e-01, -1.12351802e-01, -3.07905232e-01,\n", " 1.11379660e+00, 2.27650928e+00, 2.71188847e+00,\n", " 2.07348318e+00, 2.47709491e+00, 3.56039639e+00,\n", " 3.18203041e+00, 3.60689013e+00, 5.33688652e+00,\n", " 5.59526119e+00, 5.40419238e+00, 3.32776511e+00,\n", " 3.10640575e+00, 2.95459442e+00, 1.31905179e+00,\n", " -6.38035646e-01, -1.69055211e-02, -1.40693264e-01,\n", " -3.91971673e-01, -2.51175660e-01, 2.52521312e-01,\n", " -1.05312090e+00, -1.37576454e+00, 8.75662008e-01,\n", " -3.43419230e-01, -6.42814660e-01, -2.57708794e+00,\n", " -3.67996375e+00, -1.82668050e+00, -4.22048049e-01,\n", " -6.38709858e-01, -1.06363912e+00, -2.24140662e+00,\n", " -1.55080521e+00, -3.18044343e-01, -1.50677449e+00,\n", " -3.52216980e-01, -5.73766930e-02, -6.35431253e-01,\n", " -1.48257516e+00, -1.40102495e+00, -1.95631583e+00,\n", " -1.23564789e+00, -1.12150053e+00, -2.47917494e+00,\n", " -2.44690723e+00, -2.66129817e+00, -2.10735661e+00,\n", " -2.93026176e+00, -3.68364363e+00, -1.46520472e+00,\n", " -1.88387509e+00, -1.28998761e+00, -1.69311306e+00,\n", " -3.17816454e+00, -4.12585570e+00, -4.49864517e+00,\n", " -5.45887883e+00, -4.39953565e+00, -3.22413742e+00,\n", " -4.31691314e+00, -2.89733416e+00, -3.07984352e+00,\n", " -3.88866261e+00, -4.46387578e+00, -3.18844826e+00,\n", " -3.09426845e+00, -3.32135924e+00, -4.34219523e+00,\n", " -2.69444380e+00, -3.08006846e+00, -2.03378086e+00,\n", " -1.55063007e+00, -1.60942237e+00, -2.63294808e+00,\n", " -1.38515937e+00, -2.03413530e+00, -2.32863800e+00,\n", " -4.05259774e+00, -4.32416661e+00, -5.92822821e+00,\n", " -3.52871070e+00])}],\n", " 'layout': {'legend': {'bgcolor': '#F5F6F9', 'font': {'color': '#4D5663'}},\n", " 'paper_bgcolor': '#F5F6F9',\n", " 'plot_bgcolor': '#F5F6F9',\n", " 'xaxis1': {'gridcolor': '#E1E5ED',\n", " 'tickfont': {'color': '#4D5663'},\n", " 'title': '',\n", " 'titlefont': {'color': '#4D5663'},\n", " 'zerolinecolor': '#E1E5ED'},\n", " 'yaxis1': {'gridcolor': '#E1E5ED',\n", " 'tickfont': {'color': '#4D5663'},\n", " 'title': '',\n", " 'titlefont': {'color': '#4D5663'},\n", " 'zeroline': False,\n", " 'zerolinecolor': '#E1E5ED'}}}" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['GOOG'].figure()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also get the **Data** object directly" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "data=df.figure()['data']" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "data[0]['name']='My Custom Name'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And pass this directly to **iplot**" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iplot(data=data,filename='Tutorial Custom Name')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }