Skip to content

Instantly share code, notes, and snippets.

@hygull
Created November 19, 2018 06:19
Show Gist options
  • Save hygull/38785c9ba126e97483771e682273f028 to your computer and use it in GitHub Desktop.
Save hygull/38785c9ba126e97483771e682273f028 to your computer and use it in GitHub Desktop.
AAPL - Quandl data, plot using plotly, save figure as static image
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# pip install quandl\n",
"import quandl\n",
"\n",
"import os"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# https://docs.python.org/3.4/library/configparser.html\n",
"# Set API key read from configuration file\n",
"\n",
"import configparser\n",
"config = configparser.ConfigParser(allow_no_value=True)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Plotly]\n",
"ApiKey = ThisIsNotAnApiKey\n",
"\n",
"[Quandl]\n",
"ApiKey = 2Evs3E8J_LduFKbNF6Gw\n",
"\n"
]
}
],
"source": [
"config_file_path = os.path.join(os.path.dirname(os.getcwd()), \"config\", \"config.ini\")\n",
"\n",
"with open(config_file_path) as f:\n",
" contents = f.read()\n",
" print(contents)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['H:\\\\RishikeshAgrawani\\\\Projects\\\\GenWork\\\\Python3\\\\DataScience\\\\trypandas\\\\rishikesh\\\\src\\\\config\\\\config.ini']"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Read and parse\n",
"config.read(config_file_path)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"api_key = config.get(\"Quandl\", \"ApiKey\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# Set api_key to get data from QUANDL\n",
"quandl.ApiConfig.api_key = api_key"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Get data from QUANDL\n",
"df = aapl = quandl.get(\"WIKI/AAPL\");"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Ex-Dividend</th>\n",
" <th>Split Ratio</th>\n",
" <th>Adj. Open</th>\n",
" <th>Adj. High</th>\n",
" <th>Adj. Low</th>\n",
" <th>Adj. Close</th>\n",
" <th>Adj. Volume</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1980-12-12</th>\n",
" <td>28.75</td>\n",
" <td>28.87</td>\n",
" <td>28.75</td>\n",
" <td>28.75</td>\n",
" <td>2093900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.422706</td>\n",
" <td>0.424470</td>\n",
" <td>0.422706</td>\n",
" <td>0.422706</td>\n",
" <td>117258400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-15</th>\n",
" <td>27.38</td>\n",
" <td>27.38</td>\n",
" <td>27.25</td>\n",
" <td>27.25</td>\n",
" <td>785200.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.402563</td>\n",
" <td>0.402563</td>\n",
" <td>0.400652</td>\n",
" <td>0.400652</td>\n",
" <td>43971200.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-16</th>\n",
" <td>25.37</td>\n",
" <td>25.37</td>\n",
" <td>25.25</td>\n",
" <td>25.25</td>\n",
" <td>472000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.373010</td>\n",
" <td>0.373010</td>\n",
" <td>0.371246</td>\n",
" <td>0.371246</td>\n",
" <td>26432000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-17</th>\n",
" <td>25.87</td>\n",
" <td>26.00</td>\n",
" <td>25.87</td>\n",
" <td>25.87</td>\n",
" <td>385900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.380362</td>\n",
" <td>0.382273</td>\n",
" <td>0.380362</td>\n",
" <td>0.380362</td>\n",
" <td>21610400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-18</th>\n",
" <td>26.63</td>\n",
" <td>26.75</td>\n",
" <td>26.63</td>\n",
" <td>26.63</td>\n",
" <td>327900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.391536</td>\n",
" <td>0.393300</td>\n",
" <td>0.391536</td>\n",
" <td>0.391536</td>\n",
" <td>18362400.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Ex-Dividend Split Ratio \\\n",
"Date \n",
"1980-12-12 28.75 28.87 28.75 28.75 2093900.0 0.0 1.0 \n",
"1980-12-15 27.38 27.38 27.25 27.25 785200.0 0.0 1.0 \n",
"1980-12-16 25.37 25.37 25.25 25.25 472000.0 0.0 1.0 \n",
"1980-12-17 25.87 26.00 25.87 25.87 385900.0 0.0 1.0 \n",
"1980-12-18 26.63 26.75 26.63 26.63 327900.0 0.0 1.0 \n",
"\n",
" Adj. Open Adj. High Adj. Low Adj. Close Adj. Volume \n",
"Date \n",
"1980-12-12 0.422706 0.424470 0.422706 0.422706 117258400.0 \n",
"1980-12-15 0.402563 0.402563 0.400652 0.400652 43971200.0 \n",
"1980-12-16 0.373010 0.373010 0.371246 0.371246 26432000.0 \n",
"1980-12-17 0.380362 0.382273 0.380362 0.380362 21610400.0 \n",
"1980-12-18 0.391536 0.393300 0.391536 0.391536 18362400.0 "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"head = df.head()\n",
"head"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Ex-Dividend</th>\n",
" <th>Split Ratio</th>\n",
" <th>Adj. Open</th>\n",
" <th>Adj. High</th>\n",
" <th>Adj. Low</th>\n",
" <th>Adj. Close</th>\n",
" <th>Adj. Volume</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-03-21</th>\n",
" <td>175.04</td>\n",
" <td>175.09</td>\n",
" <td>171.26</td>\n",
" <td>171.270</td>\n",
" <td>35247358.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>175.04</td>\n",
" <td>175.09</td>\n",
" <td>171.26</td>\n",
" <td>171.270</td>\n",
" <td>35247358.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-03-22</th>\n",
" <td>170.00</td>\n",
" <td>172.68</td>\n",
" <td>168.60</td>\n",
" <td>168.845</td>\n",
" <td>41051076.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>170.00</td>\n",
" <td>172.68</td>\n",
" <td>168.60</td>\n",
" <td>168.845</td>\n",
" <td>41051076.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-03-23</th>\n",
" <td>168.39</td>\n",
" <td>169.92</td>\n",
" <td>164.94</td>\n",
" <td>164.940</td>\n",
" <td>40248954.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>168.39</td>\n",
" <td>169.92</td>\n",
" <td>164.94</td>\n",
" <td>164.940</td>\n",
" <td>40248954.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-03-26</th>\n",
" <td>168.07</td>\n",
" <td>173.10</td>\n",
" <td>166.44</td>\n",
" <td>172.770</td>\n",
" <td>36272617.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>168.07</td>\n",
" <td>173.10</td>\n",
" <td>166.44</td>\n",
" <td>172.770</td>\n",
" <td>36272617.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-03-27</th>\n",
" <td>173.68</td>\n",
" <td>175.15</td>\n",
" <td>166.92</td>\n",
" <td>168.340</td>\n",
" <td>38962839.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>173.68</td>\n",
" <td>175.15</td>\n",
" <td>166.92</td>\n",
" <td>168.340</td>\n",
" <td>38962839.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Ex-Dividend \\\n",
"Date \n",
"2018-03-21 175.04 175.09 171.26 171.270 35247358.0 0.0 \n",
"2018-03-22 170.00 172.68 168.60 168.845 41051076.0 0.0 \n",
"2018-03-23 168.39 169.92 164.94 164.940 40248954.0 0.0 \n",
"2018-03-26 168.07 173.10 166.44 172.770 36272617.0 0.0 \n",
"2018-03-27 173.68 175.15 166.92 168.340 38962839.0 0.0 \n",
"\n",
" Split Ratio Adj. Open Adj. High Adj. Low Adj. Close \\\n",
"Date \n",
"2018-03-21 1.0 175.04 175.09 171.26 171.270 \n",
"2018-03-22 1.0 170.00 172.68 168.60 168.845 \n",
"2018-03-23 1.0 168.39 169.92 164.94 164.940 \n",
"2018-03-26 1.0 168.07 173.10 166.44 172.770 \n",
"2018-03-27 1.0 173.68 175.15 166.92 168.340 \n",
"\n",
" Adj. Volume \n",
"Date \n",
"2018-03-21 35247358.0 \n",
"2018-03-22 41051076.0 \n",
"2018-03-23 40248954.0 \n",
"2018-03-26 36272617.0 \n",
"2018-03-27 38962839.0 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tail = aapl.tail()\n",
"tail"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x263ab63c518>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"head[\"Adj. Volume\"].plot(kind=\"line\")"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x263abb1b828>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head[\"Adj. Volume\"].plot(kind=\"bar\")"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x263abb820b8>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"head[\"Adj. Volume\"].plot(kind=\"pie\", label=\"ADJ VOLUME\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# Let's try plotly\n",
"# https://plot.ly/python/offline/\n",
"# pip install plotly\n",
"\n",
"import plotly.graph_objs as go\n",
"from plotly.offline import plot, iplot, init_notebook_mode"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Volume</th>\n",
" <th>Ex-Dividend</th>\n",
" <th>Split Ratio</th>\n",
" <th>Adj. Open</th>\n",
" <th>Adj. High</th>\n",
" <th>Adj. Low</th>\n",
" <th>Adj. Close</th>\n",
" <th>Adj. Volume</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1980-12-12</th>\n",
" <td>28.75</td>\n",
" <td>28.87</td>\n",
" <td>28.75</td>\n",
" <td>28.75</td>\n",
" <td>2093900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.422706</td>\n",
" <td>0.424470</td>\n",
" <td>0.422706</td>\n",
" <td>0.422706</td>\n",
" <td>117258400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-15</th>\n",
" <td>27.38</td>\n",
" <td>27.38</td>\n",
" <td>27.25</td>\n",
" <td>27.25</td>\n",
" <td>785200.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.402563</td>\n",
" <td>0.402563</td>\n",
" <td>0.400652</td>\n",
" <td>0.400652</td>\n",
" <td>43971200.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-16</th>\n",
" <td>25.37</td>\n",
" <td>25.37</td>\n",
" <td>25.25</td>\n",
" <td>25.25</td>\n",
" <td>472000.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.373010</td>\n",
" <td>0.373010</td>\n",
" <td>0.371246</td>\n",
" <td>0.371246</td>\n",
" <td>26432000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-17</th>\n",
" <td>25.87</td>\n",
" <td>26.00</td>\n",
" <td>25.87</td>\n",
" <td>25.87</td>\n",
" <td>385900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.380362</td>\n",
" <td>0.382273</td>\n",
" <td>0.380362</td>\n",
" <td>0.380362</td>\n",
" <td>21610400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1980-12-18</th>\n",
" <td>26.63</td>\n",
" <td>26.75</td>\n",
" <td>26.63</td>\n",
" <td>26.63</td>\n",
" <td>327900.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.391536</td>\n",
" <td>0.393300</td>\n",
" <td>0.391536</td>\n",
" <td>0.391536</td>\n",
" <td>18362400.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Open High Low Close Volume Ex-Dividend Split Ratio \\\n",
"Date \n",
"1980-12-12 28.75 28.87 28.75 28.75 2093900.0 0.0 1.0 \n",
"1980-12-15 27.38 27.38 27.25 27.25 785200.0 0.0 1.0 \n",
"1980-12-16 25.37 25.37 25.25 25.25 472000.0 0.0 1.0 \n",
"1980-12-17 25.87 26.00 25.87 25.87 385900.0 0.0 1.0 \n",
"1980-12-18 26.63 26.75 26.63 26.63 327900.0 0.0 1.0 \n",
"\n",
" Adj. Open Adj. High Adj. Low Adj. Close Adj. Volume \n",
"Date \n",
"1980-12-12 0.422706 0.424470 0.422706 0.422706 117258400.0 \n",
"1980-12-15 0.402563 0.402563 0.400652 0.400652 43971200.0 \n",
"1980-12-16 0.373010 0.373010 0.371246 0.371246 26432000.0 \n",
"1980-12-17 0.380362 0.382273 0.380362 0.380362 21610400.0 \n",
"1980-12-18 0.391536 0.393300 0.391536 0.391536 18362400.0 "
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"head"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['1980-12-12', '1980-12-15', '1980-12-16', '1980-12-17',\n",
" '1980-12-18'],\n",
" dtype='datetime64[ns]', name='Date', freq=None)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"head.index"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([False, False, False, False, False])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"head.index.is_month_end"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"# Open plot in browser (Uncomment below line (to run) if it is commented)\n",
"# plot([go.Scatter(x=head.index, y=head[\"High\"])])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"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": [
"# Show plot inside Notebook\n",
"init_notebook_mode(connected=True)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"data": [
{
"type": "scatter",
"uid": "d73bae14-ebc2-11e8-9b27-e5e79b23ad78",
"x": [
"1980-12-12",
"1980-12-15",
"1980-12-16",
"1980-12-17",
"1980-12-18"
],
"y": [
28.87,
27.38,
25.37,
26,
26.75
]
}
],
"layout": {}
},
"text/html": [
"<div id=\"a232edee-7ea3-404e-91e6-15b133871727\" 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(\"a232edee-7ea3-404e-91e6-15b133871727\", [{\"x\": [\"1980-12-12\", \"1980-12-15\", \"1980-12-16\", \"1980-12-17\", \"1980-12-18\"], \"y\": [28.87, 27.38, 25.37, 26.0, 26.75], \"type\": \"scatter\", \"uid\": \"e46a084c-ebc2-11e8-9d2e-e5e79b23ad78\"}], {}, {\"showLink\": true, \"linkText\": \"Export to plot.ly\"})});</script>"
],
"text/vnd.plotly.v1+html": [
"<div id=\"a232edee-7ea3-404e-91e6-15b133871727\" 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(\"a232edee-7ea3-404e-91e6-15b133871727\", [{\"x\": [\"1980-12-12\", \"1980-12-15\", \"1980-12-16\", \"1980-12-17\", \"1980-12-18\"], \"y\": [28.87, 27.38, 25.37, 26.0, 26.75], \"type\": \"scatter\", \"uid\": \"e46a084c-ebc2-11e8-9d2e-e5e79b23ad78\"}], {}, {\"showLink\": true, \"linkText\": \"Export to plot.ly\"})});</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plotting only head data (5 rows)\n",
"iplot([go.Scatter(x=head.index, y=head[\"High\"])])"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Scatter({\n",
" 'uid': 'e4715a22-ebc2-11e8-9f9e-e5e79b23ad78',\n",
" 'x': array([datetime.datetime(1980, 12, 12, 0, 0),\n",
" datetime.datetime(1980, 12, 15, 0, 0),\n",
" datetime.datetime(1980, 12, 16, 0, 0),\n",
" datetime.datetime(1980, 12, 17, 0, 0),\n",
" datetime.datetime(1980, 12, 18, 0, 0)], dtype=object),\n",
" 'y': array([28.87, 27.38, 25.37, 26. , 26.75])\n",
"})"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Saving above figure\n",
"# https://plot.ly/python/static-image-export/\n",
"\n",
"# 1 - Creating figure\n",
"fig = go.Figure()\n",
"fig.add_scatter(x=head.index, y=head.High)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"data": [
{
"type": "scatter",
"uid": "e4715a22-ebc2-11e8-9f9e-e5e79b23ad78",
"x": [
"1980-12-12",
"1980-12-15",
"1980-12-16",
"1980-12-17",
"1980-12-18"
],
"y": [
28.87,
27.38,
25.37,
26,
26.75
]
}
],
"layout": {}
},
"text/html": [
"<div id=\"ff0af639-eaab-4fff-ac94-1415a30e42c2\" 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(\"ff0af639-eaab-4fff-ac94-1415a30e42c2\", [{\"x\": [\"1980-12-12\", \"1980-12-15\", \"1980-12-16\", \"1980-12-17\", \"1980-12-18\"], \"y\": [28.87, 27.38, 25.37, 26.0, 26.75], \"type\": \"scatter\", \"uid\": \"e4715a22-ebc2-11e8-9f9e-e5e79b23ad78\"}], {}, {\"showLink\": true, \"linkText\": \"Export to plot.ly\"})});</script>"
],
"text/vnd.plotly.v1+html": [
"<div id=\"ff0af639-eaab-4fff-ac94-1415a30e42c2\" 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(\"ff0af639-eaab-4fff-ac94-1415a30e42c2\", [{\"x\": [\"1980-12-12\", \"1980-12-15\", \"1980-12-16\", \"1980-12-17\", \"1980-12-18\"], \"y\": [28.87, 27.38, 25.37, 26.0, 26.75], \"type\": \"scatter\", \"uid\": \"e4715a22-ebc2-11e8-9f9e-e5e79b23ad78\"}], {}, {\"showLink\": true, \"linkText\": \"Export to plot.ly\"})});</script>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Drawing figure\n",
"iplot(fig)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# Creating 'images' directory inside current working directory\n",
"if not os.path.exists(\"images\"):\n",
" os.mkdir(\"images\")"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"import plotly.io as pio"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"# NOTE:-\n",
"#\n",
"# If orca is not installed\n",
"#\n",
"# The orca executable is required to export figures as static images\n",
"# ValueError: The orca executable is required to export figures as static images\n",
"#\n",
"# >>> conda install -c plotly plotly-orca\n",
"#\n",
"# Then try the below statement\n",
"\n",
"pio.write_image(fig, \"images/AAPL_head_date_vs_High.png\")"
]
}
],
"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
}
@hygull
Copy link
Author

hygull commented Nov 19, 2018

../config/config.ini

[Plotly]
ApiKey = ThisIsNotAnApiKey

[Quandl]
ApiKey = 2Evs3E8J_LduFKbNf6gW

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment