Skip to content

Instantly share code, notes, and snippets.

@bmtgoncalves
Last active August 29, 2021 18:51
Show Gist options
  • Save bmtgoncalves/f132f4030ee38963ebd4e7f8dc11587e to your computer and use it in GitHub Desktop.
Save bmtgoncalves/f132f4030ee38963ebd4e7f8dc11587e to your computer and use it in GitHub Desktop.
Candlestick Chart.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "<div style=\"width: 100%; overflow: hidden;\">\n <div style=\"width: 150px; float: left;\"> <img src=\"https://raw.githubusercontent.com/DataForScience/Graphs4Sci/master/data/D4Sci_logo_ball.png\" alt=\"Data For Science, Inc\" align=\"left\" border=\"0\" width=150px> </div>\n <div style=\"float: left; margin-left: 10px;\"><h1>Visualization for Science</h1>\n<h1>Candlestick chart</h1>\n <a href=\"http://www.data4sci.com/\">www.data4sci.com</a><br/>\n @bgoncalves, @data4sci</p></div>\n</div>"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "from collections import Counter\nfrom pprint import pprint\n\nimport pandas as pd\nimport numpy as np\n\nimport matplotlib\nimport matplotlib.pyplot as plt \nimport yfinance as yf\n\nimport tqdm as tq\nfrom tqdm import tqdm\n\nimport watermark\n\n%load_ext watermark\n%matplotlib inline",
"execution_count": 1,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We start by print out the versions of the libraries we're using for future reference"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "%watermark -n -v -m -g -iv",
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"text": "Python implementation: CPython\nPython version : 3.8.5\nIPython version : 7.19.0\n\nCompiler : Clang 10.0.0 \nOS : Darwin\nRelease : 20.6.0\nMachine : x86_64\nProcessor : i386\nCPU cores : 16\nArchitecture: 64bit\n\nGit hash: 2ca189e6e9c9af68fc07169751f33298eef96492\n\njson : 2.0.9\npandas : 1.1.3\nyfinance : 0.1.63\ntqdm : 4.62.0\nwatermark : 2.1.0\nmatplotlib: 3.3.2\nnumpy : 1.19.2\n\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Set the default colors we'll be using"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "colors = np.array(['#70bf41', '#f9517b'])",
"execution_count": 3,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# DJIA data"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We start by downling the Dow Jones Industrial Average data using the Yahoo! Finance API"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "data = yf.download(\"DJI\", start=\"2020-01-01\", end=\"2021-07-31\", interval='1mo')",
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"text": "[*********************100%***********************] 1 of 1 completed\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "We collected data from Jan 1st, 2020 until Jul 31st, 2021 at one month resolution, so we get the values indexed by the first day of the month"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "data.head()",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": " Open High Low Close \\\nDate \n2020-01-01 28634.900391 29348.099609 28256.000000 28256.000000 \n2020-02-01 28399.800781 29551.400391 25409.400391 27960.800781 \n2020-03-01 26703.300781 27090.900391 18591.900391 21917.199219 \n2020-04-01 20943.500000 24633.900391 20943.500000 24345.699219 \n2020-05-01 23723.699219 25548.300781 23248.000000 25383.099609 \n\n Adj Close Volume \nDate \n2020-01-01 28256.000000 0 \n2020-02-01 27960.800781 0 \n2020-03-01 21917.199219 0 \n2020-04-01 24345.699219 0 \n2020-05-01 25383.099609 0 ",
"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>Adj Close</th>\n <th>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 </tr>\n </thead>\n <tbody>\n <tr>\n <th>2020-01-01</th>\n <td>28634.900391</td>\n <td>29348.099609</td>\n <td>28256.000000</td>\n <td>28256.000000</td>\n <td>28256.000000</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-02-01</th>\n <td>28399.800781</td>\n <td>29551.400391</td>\n <td>25409.400391</td>\n <td>27960.800781</td>\n <td>27960.800781</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-03-01</th>\n <td>26703.300781</td>\n <td>27090.900391</td>\n <td>18591.900391</td>\n <td>21917.199219</td>\n <td>21917.199219</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-04-01</th>\n <td>20943.500000</td>\n <td>24633.900391</td>\n <td>20943.500000</td>\n <td>24345.699219</td>\n <td>24345.699219</td>\n <td>0</td>\n </tr>\n <tr>\n <th>2020-05-01</th>\n <td>23723.699219</td>\n <td>25548.300781</td>\n <td>23248.000000</td>\n <td>25383.099609</td>\n <td>25383.099609</td>\n <td>0</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "The height of each bar will be given by the difference between the Open and Close values so we compute the difference"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "data['height'] = data['Open']-data['Close']",
"execution_count": 6,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "And because we want to color the bars by wether the price went up or down, we create another column with the respective color"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "data['colors'] = colors[(data['Open'] > data['Close']).astype('int')] ",
"execution_count": 7,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "data.head()",
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 8,
"data": {
"text/plain": " Open High Low Close \\\nDate \n2020-01-01 28634.900391 29348.099609 28256.000000 28256.000000 \n2020-02-01 28399.800781 29551.400391 25409.400391 27960.800781 \n2020-03-01 26703.300781 27090.900391 18591.900391 21917.199219 \n2020-04-01 20943.500000 24633.900391 20943.500000 24345.699219 \n2020-05-01 23723.699219 25548.300781 23248.000000 25383.099609 \n\n Adj Close Volume height colors \nDate \n2020-01-01 28256.000000 0 378.900391 #f9517b \n2020-02-01 27960.800781 0 439.000000 #f9517b \n2020-03-01 21917.199219 0 4786.101562 #f9517b \n2020-04-01 24345.699219 0 -3402.199219 #70bf41 \n2020-05-01 25383.099609 0 -1659.400391 #70bf41 ",
"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>Adj Close</th>\n <th>Volume</th>\n <th>height</th>\n <th>colors</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 </tr>\n </thead>\n <tbody>\n <tr>\n <th>2020-01-01</th>\n <td>28634.900391</td>\n <td>29348.099609</td>\n <td>28256.000000</td>\n <td>28256.000000</td>\n <td>28256.000000</td>\n <td>0</td>\n <td>378.900391</td>\n <td>#f9517b</td>\n </tr>\n <tr>\n <th>2020-02-01</th>\n <td>28399.800781</td>\n <td>29551.400391</td>\n <td>25409.400391</td>\n <td>27960.800781</td>\n <td>27960.800781</td>\n <td>0</td>\n <td>439.000000</td>\n <td>#f9517b</td>\n </tr>\n <tr>\n <th>2020-03-01</th>\n <td>26703.300781</td>\n <td>27090.900391</td>\n <td>18591.900391</td>\n <td>21917.199219</td>\n <td>21917.199219</td>\n <td>0</td>\n <td>4786.101562</td>\n <td>#f9517b</td>\n </tr>\n <tr>\n <th>2020-04-01</th>\n <td>20943.500000</td>\n <td>24633.900391</td>\n <td>20943.500000</td>\n <td>24345.699219</td>\n <td>24345.699219</td>\n <td>0</td>\n <td>-3402.199219</td>\n <td>#70bf41</td>\n </tr>\n <tr>\n <th>2020-05-01</th>\n <td>23723.699219</td>\n <td>25548.300781</td>\n <td>23248.000000</td>\n <td>25383.099609</td>\n <td>25383.099609</td>\n <td>0</td>\n <td>-1659.400391</td>\n <td>#70bf41</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Let's see what our plot looks like so far"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "data.plot(kind='bar', # Bar plot\n y='height', # Use the Open/Close difference as the height\n bottom=data['Close'], # Start plotting the bar at the Close value\n color=data['colors'], # Color each bar by whether the value went up or down\n legend=None) # Remove the legend",
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 9,
"data": {
"text/plain": "<AxesSubplot:xlabel='Date'>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Not a bad start, but there's still plenty of room for improvement"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Since we'll be using a bar plot, we have to manually specify the axis labels to use as the bar plot doesn't play nicely with datetime objects"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "data.index = (day.strftime('%b')[0] \n if day.strftime('%b') != 'Jan' \n else day.strftime('%b\\n%Y') \n for day in data.index)",
"execution_count": 10,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ax = data.plot(kind='bar', y='height', bottom=data['Close'], \n color=data['colors'], legend=None)\n\n# Set the ticklabels, to undo the default rotation\nax.set_xticklabels(data.index, rotation=0); ",
"execution_count": 11,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Finally, we add the vertical lines representing the range of values from the heighest to the lowest"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ax = data.plot(kind='bar', y='height', bottom=data['Close'], \n color=data['colors'], legend=None)\n\n# Add the vertical lines from High to Low\nax.plot([np.arange(data.shape[0]), # x-values\n np.arange(data.shape[0])], \n data[['High', 'Low']].T.values, # y-values\n color='darkgray', # Color\n zorder=-2, #Plot below the current bars\n lw=2) # Make the lines thicker\n\n# Set the ticklabels, to undo the default rotation\nax.set_xticklabels(data.index, rotation=0); ",
"execution_count": 12,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "And increase figure and fontsizes to make the figure more legible and remove the upper and right side spines to make it sexier"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "fig, ax = plt.subplots(1, figsize=(14, 10))\ndata.plot(kind='bar', y='height', bottom=data['Close'], \n color=data['colors'], legend=None, ax=ax)\n\n# Add the vertical lines from High to Low\nax.plot([np.arange(data.shape[0]), # x-values\n np.arange(data.shape[0])], \n data[['High', 'Low']].T.values, # y-values\n color='darkgray', # Color\n zorder=-2, #Plot below the current bars\n lw=2) # Make the lines thicker\n\n# Set the correct labels\nax.set_ylabel('DJIA', fontsize=24.0)\n\n# Increase tick mark font size\nax.tick_params(axis='x', labelsize=20)\nax.tick_params(axis='y', labelsize=20)\n\n# Set the ticklabels, to undo the default rotation\nax.set_xticklabels(data.index, rotation=0)\n\n# Add commas to the y-labels\nax.get_yaxis().set_major_formatter(\n matplotlib.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))\n\n# Hide the right and top spines\nax.spines['right'].set_visible(False)\nax.spines['top'].set_visible(False)",
"execution_count": 13,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 1008x720 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "<div style=\"width: 100%; overflow: hidden;\">\n <img src=\"https://raw.githubusercontent.com/DataForScience/Graphs4Sci/master/data/D4Sci_logo_full.png\" alt=\"Data For Science, Inc\" align=\"center\" border=\"0\" width=300px> \n</div>"
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"varInspector": {
"window_display": false,
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"library": "var_list.py",
"delete_cmd_prefix": "del ",
"delete_cmd_postfix": "",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"library": "var_list.r",
"delete_cmd_prefix": "rm(",
"delete_cmd_postfix": ") ",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
]
},
"language_info": {
"name": "python",
"version": "3.8.5",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist": {
"id": "f132f4030ee38963ebd4e7f8dc11587e",
"data": {
"description": "Candlestick Chart.ipynb",
"public": true
}
},
"_draft": {
"nbviewer_url": "https://gist.github.com/f132f4030ee38963ebd4e7f8dc11587e"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment