Created
September 16, 2018 23:07
-
-
Save yngtodd/5a22efddac25d958afdcdb01ec12a267 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<script>requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min']},});if(!window.Plotly) {{require(['plotly'],function(plotly) {window.Plotly=plotly;});}}</script>" | |
], | |
"text/vnd.plotly.v1+html": [ | |
"<script>requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min']},});if(!window.Plotly) {{require(['plotly'],function(plotly) {window.Plotly=plotly;});}}</script>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"\"\"\"\n", | |
"Starter pack for plotting with Plotly.\n", | |
"\n", | |
"Reference:\n", | |
"---------\n", | |
"https://www.youtube.com/watch?v=XUNaGFa9xCM\n", | |
"\"\"\"\n", | |
"\n", | |
"import plotly\n", | |
"import plotly.graph_objs as go\n", | |
"import ipywidgets as widgets\n", | |
"\n", | |
"import numpy as np\n", | |
"from scipy import special\n", | |
"\n", | |
"plotly.offline.init_notebook_mode(connected=True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"x = np.linspace(0, 2*np.pi, 1000)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "1388863534664d85b4f8c6931c926ee8", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"interactive(children=(SelectMultiple(description='Bessel Order', index=(0,), options=(0, 1, 2, 3, 4, 5), value…" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"layout = go.Layout(\n", | |
" title = 'Simple Example',\n", | |
" yaxis = dict(\n", | |
" title = 'volts'\n", | |
" ),\n", | |
" xaxis = dict(\n", | |
" title = 'nanoseconds'\n", | |
" )\n", | |
")\n", | |
"\n", | |
"def update_plot(signals, freq):\n", | |
" data = []\n", | |
" for s in signals:\n", | |
" trace = go.Scatter(\n", | |
" x = x,\n", | |
" y = special.jv(s, freq*x),\n", | |
" mode = 'lines',\n", | |
" name = f'bessel {s}',\n", | |
" line = dict(\n", | |
" shape = 'spline'\n", | |
" )\n", | |
" )\n", | |
" data.append(trace)\n", | |
"\n", | |
" fig = go.Figure(data=data, layout=layout)\n", | |
" plotly.offline.iplot(fig)\n", | |
" \n", | |
"signals = widgets.SelectMultiple(options=list(range(6)), value=(0,), description='Bessel Order')\n", | |
"freq = widgets.FloatSlider(min=1, max=20, value=1, description='Freq')\n", | |
"widgets.interactive(update_plot, signals=signals, freq=freq)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.plotly.v1+json": { | |
"data": [ | |
{ | |
"type": "contour", | |
"uid": "751b39c2-ba01-11e8-b089-b8e856187c76", | |
"z": [ | |
[ | |
10, | |
10.625, | |
12.5, | |
15.625, | |
20 | |
], | |
[ | |
5.625, | |
6.25, | |
8.125, | |
11.25, | |
15.625 | |
] | |
] | |
} | |
], | |
"layout": {} | |
}, | |
"text/html": [ | |
"<div id=\"47a350a1-ee84-43fe-b829-8e1a59ddb707\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"47a350a1-ee84-43fe-b829-8e1a59ddb707\", [{\"z\": [[10, 10.625, 12.5, 15.625, 20], [5.625, 6.25, 8.125, 11.25, 15.625]], \"type\": \"contour\", \"uid\": \"752100be-ba01-11e8-b20d-b8e856187c76\"}], {}, {\"showLink\": true, \"linkText\": \"Export to plot.ly\"})});</script>" | |
], | |
"text/vnd.plotly.v1+html": [ | |
"<div id=\"47a350a1-ee84-43fe-b829-8e1a59ddb707\" style=\"height: 525px; width: 100%;\" class=\"plotly-graph-div\"></div><script type=\"text/javascript\">require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {};window.PLOTLYENV.BASE_URL=\"https://plot.ly\";Plotly.newPlot(\"47a350a1-ee84-43fe-b829-8e1a59ddb707\", [{\"z\": [[10, 10.625, 12.5, 15.625, 20], [5.625, 6.25, 8.125, 11.25, 15.625]], \"type\": \"contour\", \"uid\": \"752100be-ba01-11e8-b20d-b8e856187c76\"}], {}, {\"showLink\": true, \"linkText\": \"Export to plot.ly\"})});</script>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"data = [\n", | |
" go.Contour(\n", | |
" z=[[10, 10.625, 12.5, 15.625, 20],\n", | |
" [5.625, 6.25, 8.125, 11.25, 15.625]]\n", | |
" )\n", | |
"]\n", | |
"plotly.offline.iplot(data)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"\n", | |
"\n", | |
"def styblinski(x, y):\n", | |
" return(1.0/2 * (x**4 - 16*x**2 + 5*x + y**4 - 16*y**2 + 5*y))\n", | |
"\n", | |
"xx = np.linspace(-5, 5, 200)\n", | |
"yy = xx\n", | |
"x,y = np.meshgrid(x, y)\n", | |
"z = styblinski(x, y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"colorscale=[[0.0, 'rgb(20,29,67)'],\n", | |
" [0.1, 'rgb(28,76,96)'],\n", | |
" [0.2, 'rgb(16,125,121)'],\n", | |
" [0.3, 'rgb(92,166,133)'],\n", | |
" [0.4, 'rgb(182,202,175)'],\n", | |
" [0.5, 'rgb(253,245,243)'],\n", | |
" [0.6, 'rgb(230,183,162)'],\n", | |
" [0.7, 'rgb(211,118,105)'],\n", | |
" [0.8, 'rgb(174,63,95)'],\n", | |
" [0.9, 'rgb(116,25,93)'],\n", | |
" [1.0, 'rgb(51,13,53)']]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"textz=[['x: '+'{:0.5f}'.format(x[i][j])+'<br>y: '+'{:0.5f}'.format(y[i][j])+\n", | |
" '<br>z: '+'{:0.5f}'.format(z[i][j]) for j in range(z.shape[1])] for i in range(z.shape[0])]\n", | |
"\n", | |
"trace1= go.Surface(z=z,\n", | |
" x=x,\n", | |
" y=y,\n", | |
" colorscale=colorscale,\n", | |
" text=textz,\n", | |
" hoverinfo='text',\n", | |
" )\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"axis = dict(\n", | |
"showbackground=True,\n", | |
"backgroundcolor=\"rgb(230, 230,230)\",\n", | |
"showgrid=False,\n", | |
"zeroline=False,\n", | |
"showline=False)\n", | |
"\n", | |
"ztickvals=list(range(-6,4))\n", | |
"layout = go.Layout(title=\"Projections of a surface onto coordinate planes\" ,\n", | |
" autosize=False,\n", | |
" width=700,\n", | |
" height=600,\n", | |
" scene=dict(xaxis=dict(axis, range=[-3.5, 3.5]),\n", | |
" yaxis=dict(axis, range=[-3.5, 3.5]),\n", | |
" zaxis=dict(axis , tickvals=ztickvals),\n", | |
" aspectratio=dict(x=1,\n", | |
" y=1,\n", | |
" z=0.95)\n", | |
" )\n", | |
" )\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"z_offset=(np.min(z)-2)*np.ones(z.shape)#\n", | |
"x_offset=np.min(xx)*np.ones(z.shape)\n", | |
"y_offset=np.min(yy)*np.ones(z.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"proj_z=lambda x, y, z: z#projection in the z-direction\n", | |
"colorsurfz=proj_z(x,y,z)\n", | |
"proj_x=lambda x, y, z: x\n", | |
"colorsurfx=proj_z(x,y,z)\n", | |
"proj_y=lambda x, y, z: y\n", | |
"colorsurfy=proj_z(x,y,z)\n", | |
"\n", | |
"textx=[['y: '+'{:0.5f}'.format(y[i][j])+'<br>z: '+'{:0.5f}'.format(z[i][j])+\n", | |
" '<br>x: '+'{:0.5f}'.format(x[i][j]) for j in range(z.shape[1])] for i in range(z.shape[0])]\n", | |
"texty=[['x: '+'{:0.5f}'.format(x[i][j])+'<br>z: '+'{:0.5f}'.format(z[i][j]) +\n", | |
" '<br>y: '+'{:0.5f}'.format(y[i][j]) for j in range(z.shape[1])] for i in range(z.shape[0])]\n", | |
"\n", | |
"tracex = go.Surface(z=z,\n", | |
" x=x_offset,\n", | |
" y=y,\n", | |
" colorscale=colorscale,\n", | |
" showlegend=False,\n", | |
" showscale=False,\n", | |
" surfacecolor=colorsurfx,\n", | |
" text=textx,\n", | |
" hoverinfo='text'\n", | |
" )\n", | |
"tracey = go.Surface(z=z,\n", | |
" x=x,\n", | |
" y=y_offset,\n", | |
" colorscale=colorscale,\n", | |
" showlegend=False,\n", | |
" showscale=False,\n", | |
" surfacecolor=colorsurfy,\n", | |
" text=texty,\n", | |
" hoverinfo='text'\n", | |
" )\n", | |
"tracez = go.Surface(z=z_offset,\n", | |
" x=x,\n", | |
" y=y,\n", | |
" colorscale=colorscale,\n", | |
" showlegend=False,\n", | |
" showscale=False,\n", | |
" surfacecolor=colorsurfx,\n", | |
" text=textz,\n", | |
" hoverinfo='text'\n", | |
" )\n", | |
"\n", | |
"data=[trace1, tracex, tracey, tracez]\n", | |
"fig = go.Figure(data=data, layout=layout)\n", | |
"py.iplot(fig)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.5" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment