diff --git a/_posts/python/chart-studio/2019-07-03-ipython-notebook-tutorial.html b/_posts/python/chart-studio/2019-07-03-ipython-notebook-tutorial.html index d7968604a..904ffaf42 100644 --- a/_posts/python/chart-studio/2019-07-03-ipython-notebook-tutorial.html +++ b/_posts/python/chart-studio/2019-07-03-ipython-notebook-tutorial.html @@ -1,7 +1,6 @@ --- description: Jupyter notebook tutorial on how to install, run, and use Jupyter for interactive matplotlib plotting, data analysis, and publishing code display_as: chart_studio -ipynb: ~chelsea_lyn/14070 language: python layout: base name: Jupyter Notebook Tutorial @@ -10,7 +9,6 @@ redirect_from: ipython-notebooks/ipython-notebook-tutorial/ thumbnail: thumbnail/ipythonnb.jpg v4upgrade: True -redirect_to: python/ --- {% raw %} @@ -86,7 +84,7 @@

Getting Started
-

Helpful Commands

- Tab Completion: Jupyter supports tab completion! You can type object_name.<TAB> to view an object’s attributes. For tips on cell magics, running Notebooks, and exploring objects, check out the Jupyter docs. +

Helpful Commands

- Tab Completion: Jupyter supports tab completion! You can type object_name.<TAB> to view an object's attributes. For tips on cell magics, running Notebooks, and exploring objects, check out the Jupyter docs.
- Help: provides an introduction and overview of features.

@@ -192,594 +190,13 @@

Package Management
import pandas as pd
 import numpy as np
 import scipy as sp
-import chart_studio.plotly as py
+import plotly.express as px
 
- -
-
-
-
-

Import Data

You can use pandas read_csv() function to import data. In the example below, we import a csv hosted on github and display it in a table using Plotly:

- -
-
-
-
-
-
In [5]:
-
-
-
import chart_studio.plotly as py
-import plotly.figure_factory as ff
-import pandas as pd
-
-df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/school_earnings.csv")
-
-table = ff.create_table(df)
-py.iplot(table, filename='jupyter-table1')
-
- -
-
-
- -
-
- - -
- -
Out[5]:
- - - -
- - - -
- -
- -
-
- -
-
-
-
-
-

Use dataframe.column_title to index the dataframe:

- -
-
-
-
-
-
In [6]:
-
-
-
schools = df.School
-schools[0]
-
- -
-
-
- -
-
- - -
- -
Out[6]:
- - - - -
-
'MIT'
-
- -
- -
-
- -
-
-
-
-
-

Most pandas functions also work on an entire dataframe. For example, calling std() calculates the standard deviation for each column.

- -
-
-
-
-
-
In [7]:
-
-
-
df.std()
-
- -
-
-
- -
-
- - -
- -
Out[7]:
- - - - -
-
Women    12.813683
-Men      25.705289
-Gap      14.137084
-dtype: float64
-
- -
- -
-
- -
-
-
-
-
-

Plotting Inline

You can use Plotly's python API to plot inside your Jupyter Notebook by calling plotly.plotly.iplot() or plotly.offline.iplot() if working offline. Plotting in the notebook gives you the advantage of keeping your data analysis and plots in one place. Now we can do a bit of interactive plotting. Head to the Plotly getting started page to learn how to set your credentials. Calling the plot with iplot automaticallly generates an interactive version of the plot inside the Notebook in an iframe. See below:

- -
-
-
-
-
-
In [8]:
-
-
-
import chart_studio.plotly as py
-import plotly.graph_objects as go
-
-data = [go.Bar(x=df.School,
-            y=df.Gap)]
-
-py.iplot(data, filename='jupyter-basic_bar')
-
- -
-
-
- -
-
- - -
- -
Out[8]:
- - - -
- - - -
- -
- -
-
- -
-
-
-
-
-

Plotting multiple traces and styling the chart with custom colors and titles is simple with Plotly syntax. Additionally, you can control the privacy with sharing set to public, private, or secret.

- -
-
-
-
-
-
In [9]:
-
-
-
import chart_studio.plotly as py
-import plotly.graph_objects as go
-
-trace_women = go.Bar(x=df.School,
-                  y=df.Women,
-                  name='Women',
-                  marker=dict(color='#ffcdd2'))
-
-trace_men = go.Bar(x=df.School,
-                y=df.Men,
-                name='Men',
-                marker=dict(color='#A2D5F2'))
-
-trace_gap = go.Bar(x=df.School,
-                y=df.Gap,
-                name='Gap',
-                marker=dict(color='#59606D'))
-
-data = [trace_women, trace_men, trace_gap]
-
-layout = go.Layout(title="Average Earnings for Graduates",
-                xaxis=dict(title='School'),
-                yaxis=dict(title='Salary (in thousands)'))
-
-fig = go.Figure(data=data, layout=layout)
-
-py.iplot(fig, sharing='private', filename='jupyter-styled_bar')
-
- -
-
-
- -
-
- - -
- -
Out[9]:
- - - -
- - - -
- -
- -
-
- -
-
-
-
-
-

Now we have interactive charts displayed in our notebook. Hover on the chart to see the values for each bar, click and drag to zoom into a specific section or click on the legend to hide/show a trace.

- -
-
-
-
-
-
-
-

Plotting Interactive Maps

Plotly is now integrated with Mapbox. In this example we'll plot lattitude and longitude data of nuclear waste sites. To plot on Mapbox maps with Plotly you'll need a Mapbox account and a Mapbox Access Token which you can add to your Plotly settings.

- -
-
-
-
-
-
In [10]:
-
-
-
import chart_studio.plotly as py
-import plotly.graph_objects as go
-
-import pandas as pd
-
-# mapbox_access_token = 'ADD YOUR TOKEN HERE'
-
-df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/Nuclear%20Waste%20Sites%20on%20American%20Campuses.csv')
-site_lat = df.lat
-site_lon = df.lon
-locations_name = df.text
-
-data = [
-    go.Scattermapbox(
-        lat=site_lat,
-        lon=site_lon,
-        mode='markers',
-        marker=dict(
-            size=17,
-            color='rgb(255, 0, 0)',
-            opacity=0.7
-        ),
-        text=locations_name,
-        hoverinfo='text'
-    ),
-    go.Scattermapbox(
-        lat=site_lat,
-        lon=site_lon,
-        mode='markers',
-        marker=dict(
-            size=8,
-            color='rgb(242, 177, 172)',
-            opacity=0.7
-        ),
-        hoverinfo='none'
-    )]
-
-
-layout = go.Layout(
-    title='Nuclear Waste Sites on Campus',
-    autosize=True,
-    hovermode='closest',
-    showlegend=False,
-    mapbox=dict(
-        accesstoken=mapbox_access_token,
-        bearing=0,
-        center=dict(
-            lat=38,
-            lon=-94
-        ),
-        pitch=0,
-        zoom=3,
-        style='light'
-    ),
-)
-
-fig = dict(data=data, layout=layout)
-
-py.iplot(fig, filename='jupyter-Nuclear Waste Sites on American Campuses')
-
- -
-
-
- -
-
- - -
- -
Out[10]:
- - - -
- - - -
- -
- -
-
- -
-
-
-
-
-

3D Plotting

Using Numpy and Plotly, we can make interactive 3D plots in the Notebook as well.

- -
-
-
-
-
-
In [11]:
-
-
-
import chart_studio.plotly as py
-import plotly.graph_objects as go
-
-import numpy as np
-
-s = np.linspace(0, 2 * np.pi, 240)
-t = np.linspace(0, np.pi, 240)
-tGrid, sGrid = np.meshgrid(s, t)
-
-r = 2 + np.sin(7 * sGrid + 5 * tGrid)  # r = 2 + sin(7s+5t)
-x = r * np.cos(sGrid) * np.sin(tGrid)  # x = r*cos(s)*sin(t)
-y = r * np.sin(sGrid) * np.sin(tGrid)  # y = r*sin(s)*sin(t)
-z = r * np.cos(tGrid)                  # z = r*cos(t)
-
-surface = go.Surface(x=x, y=y, z=z)
-data = [surface]
-
-layout = go.Layout(
-    title='Parametric Plot',
-    scene=dict(
-        xaxis=dict(
-            gridcolor='rgb(255, 255, 255)',
-            zerolinecolor='rgb(255, 255, 255)',
-            showbackground=True,
-            backgroundcolor='rgb(230, 230,230)'
-        ),
-        yaxis=dict(
-            gridcolor='rgb(255, 255, 255)',
-            zerolinecolor='rgb(255, 255, 255)',
-            showbackground=True,
-            backgroundcolor='rgb(230, 230,230)'
-        ),
-        zaxis=dict(
-            gridcolor='rgb(255, 255, 255)',
-            zerolinecolor='rgb(255, 255, 255)',
-            showbackground=True,
-            backgroundcolor='rgb(230, 230,230)'
-        )
-    )
-)
-
-fig = go.Figure(data=data, layout=layout)
-py.iplot(fig, filename='jupyter-parametric_plot')
-
- -
-
-
- -
-
- - -
- -
Out[11]:
- - - -
- - - -
- -
- -
-
- -
-
-
-
-
-

Animated Plots

Checkout Plotly's animation documentation to see how to create animated plots inline in Jupyter notebooks like the Gapminder plot displayed below: -https://plotly.com/~PythonPlotBot/231/

- -
-
-
-
-
-
-
-

Plot Controls & IPython widgets

Add sliders, buttons, and dropdowns to your inline chart:

- -
-
-
-
-
-
In [12]:
-
-
-
import chart_studio.plotly as py
-import numpy as np
-
-data = [dict(
-        visible = False,
-        line=dict(color='#00CED1', width=6),
-        name = '𝜈 = '+str(step),
-        x = np.arange(0,10,0.01),
-        y = np.sin(step*np.arange(0,10,0.01))) for step in np.arange(0,5,0.1)]
-data[10]['visible'] = True
-
-steps = []
-for i in range(len(data)):
-    step = dict(
-        method = 'restyle',
-        args = ['visible', [False] * len(data)],
-    )
-    step['args'][1][i] = True # Toggle i'th trace to "visible"
-    steps.append(step)
-
-sliders = [dict(
-    active = 10,
-    currentvalue = {"prefix": "Frequency: "},
-    pad = {"t": 50},
-    steps = steps
-)]
-
-layout = dict(sliders=sliders)
-fig = dict(data=data, layout=layout)
-
-py.iplot(fig, filename='Sine Wave Slider')
-
- -
-
-
- -
-
- - -
- -
Out[12]:
- - - -
- - - -
- -
- -
-
- -
-
-
-
-
-

Additionally, IPython widgets allow you to add sliders, widgets, search boxes, and more to your Notebook. See the widget docs for more information. For others to be able to access your work, they'll need IPython. Or, you can use a cloud-based NB option so others can run your work. -
-

- -
-
@@ -787,7 +204,6 @@

Plot Controls & IPython widgets

Executing R Code

IRkernel, an R kernel for Jupyter, allows you to write and execute R code in a Jupyter notebook. Checkout the IRkernel documentation for some simple installation instructions. Once IRkernel is installed, open a Jupyter Notebook by calling $ jupyter notebook and use the New dropdown to select an R notebook.

-

See a full R example Jupyter Notebook here: https://plotly.com/~chelsea_lyn/14069

@@ -796,14 +212,14 @@

Executing R Code
-

Additional Embed Features

We've seen how to embed Plotly tables and charts as iframes in the notebook, with IPython.display we can embed additional features, such a videos. For example, from YouTube:

+

Additional Embed Features

With IPython.display we can embed additional features in the notebook, such as videos. For example, from YouTube:

-
In [13]:
+
In [5]:
from IPython.display import YouTubeVideo
@@ -820,20 +236,11 @@ 

Additional Embed Features -
Out[13]:
+
Out[5]:
- - -

@@ -871,7 +278,7 @@

LaTeX

We ca

-
In [14]:
+
In [6]:
from IPython.display import display, Math, Latex
@@ -908,24 +315,7 @@ 

LaTeX

We ca

-

Exporting & Publishing Notebooks

We can export the Notebook as an HTML, PDF, .py, .ipynb, Markdown, and reST file. You can also turn your NB into a slideshow. You can publish Jupyter Notebooks on Plotly. Simply visit plot.ly and select the + Create button in the upper right hand corner. Select Notebook and upload your Jupyter notebook (.ipynb) file! -The notebooks that you upload will be stored in your Plotly organize folder and hosted at a unique link to make sharing quick and easy. -See some example notebooks:

- - -
-
-
-
-
-
-
-

Publishing Dashboards

Users publishing interactive graphs can also use Plotly's dashboarding tool to arrange plots with a drag and drop interface. These dashboards can be published, embedded, and shared.

+

Exporting Notebooks

We can export the Notebook as an HTML, PDF, .py, .ipynb, Markdown, and reST file. You can also turn your NB into a slideshow.

@@ -946,8 +336,7 @@

Publishing Dash Apps
-

For more Jupyter tutorials, checkout Plotly's python documentation: all documentation is written in jupyter notebooks that you can download and run yourself or checkout these user submitted examples!

-

IPython Notebook Gallery

+

Jupyter Resources

For more Jupyter tutorials, checkout Plotly's python documentation: all documentation is written in jupyter notebooks that you can download and run yourself.