Skip to content

Instantly share code, notes, and snippets.

@sergiobuj
Last active December 26, 2015 02:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergiobuj/7076810 to your computer and use it in GitHub Desktop.
Save sergiobuj/7076810 to your computer and use it in GitHub Desktop.
Chart cloning 0
Week cat dog fish
2012-01-01 - 2012-01-07 56 92 59
2012-01-08 - 2012-01-14 59 91 56
2012-01-15 - 2012-01-21 55 91 56
2012-01-22 - 2012-01-28 56 89 54
2012-01-29 - 2012-02-04 58 89 55
2012-02-05 - 2012-02-11 60 94 54
2012-02-12 - 2012-02-18 56 98 54
2012-02-19 - 2012-02-25 58 91 58
2012-02-26 - 2012-03-03 59 85 54
2012-03-04 - 2012-03-10 56 86 56
2012-03-11 - 2012-03-17 54 87 54
2012-03-18 - 2012-03-24 54 87 55
2012-03-25 - 2012-03-31 55 86 56
2012-04-01 - 2012-04-07 57 89 59
2012-04-08 - 2012-04-14 54 89 54
2012-04-15 - 2012-04-21 55 91 55
2012-04-22 - 2012-04-28 57 87 56
2012-04-29 - 2012-05-05 61 92 57
2012-05-06 - 2012-05-12 57 91 56
2012-05-13 - 2012-05-19 55 85 57
2012-05-20 - 2012-05-26 54 87 56
2012-05-27 - 2012-06-02 54 88 56
2012-06-03 - 2012-06-09 57 88 56
2012-06-10 - 2012-06-16 55 87 55
2012-06-17 - 2012-06-23 55 88 56
2012-06-24 - 2012-06-30 57 92 57
2012-07-01 - 2012-07-07 55 94 56
2012-07-08 - 2012-07-14 58 94 59
2012-07-15 - 2012-07-21 58 96 57
2012-07-22 - 2012-07-28 58 92 56
2012-07-29 - 2012-08-04 56 93 55
2012-08-05 - 2012-08-11 57 94 55
2012-08-12 - 2012-08-18 58 100 55
2012-08-19 - 2012-08-25 58 99 56
2012-08-26 - 2012-09-01 59 93 54
2012-09-02 - 2012-09-08 59 92 57
2012-09-09 - 2012-09-15 58 93 53
2012-09-16 - 2012-09-22 59 91 52
2012-09-23 - 2012-09-29 61 92 52
2012-09-30 - 2012-10-06 59 91 52
2012-10-07 - 2012-10-13 59 91 51
2012-10-14 - 2012-10-20 58 89 50
2012-10-21 - 2012-10-27 64 88 51
2012-10-28 - 2012-11-03 62 85 47
2012-11-04 - 2012-11-10 57 88 46
2012-11-11 - 2012-11-17 60 89 48
2012-11-18 - 2012-11-24 61 95 48
2012-11-25 - 2012-12-01 64 92 49
2012-12-02 - 2012-12-08 65 89 49
2012-12-09 - 2012-12-15 66 89 48
2012-12-16 - 2012-12-22 63 88 48
2012-12-23 - 2012-12-29 67 97 54
2012-12-30 - 2013-01-05 63 99 58
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Learning by cloning with matplotlib -0-"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since I only know a few thing about matplotlib, I will start easy and will try to reproduce a trend chart of terms used in Google searches.\n",
"The chart I will use now is the comparison of the search terms 'cat', 'dog' and 'fish' from 2012."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Today's goal is to reproduce this (without the headlines, I'll leave that for later):\n",
"from IPython.core.display import HTML\n",
"HTML('<iframe width=\"500\" height=\"330\" src=\"//www.google.com/trends/fetchComponent?hl\\75en-US\\46q\\75cat,+dog,+fish\\46date\\0751/2012+12m\\46cmpt\\75q\\46content\\0751\\46cid\\75TIMESERIES_GRAPH_AVERAGES_CHART\\46export\\0755\\46w\\075500\\46h\\075330\" style=\"border: none;\"></iframe>')\n",
"\n",
"# Ready, set, go!"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<iframe width=\"500\" height=\"330\" src=\"//www.google.com/trends/fetchComponent?hl=en-US&q=cat,+dog,+fish&date=1/2012+12m&cmpt=q&content=1&cid=TIMESERIES_GRAPH_AVERAGES_CHART&export=5&w=500&h=330\" style=\"border: none;\"></iframe>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 1,
"text": [
"<IPython.core.display.HTML at 0x10845b6d0>"
]
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Step 0\n",
"I will start by browsing the [matplotlib gallery](http://matplotlib.org/gallery.html) to find something I can start from. I don't know the minimum preamble to start a figure, so I think this is a good way to get started.\n",
"From the Gallery, I found a very [simple figure](http://matplotlib.org/examples/pylab_examples/pythonic_matplotlib.html), so I will start from that one."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# imports, from the docs: \"The pyplot interface is generally preferred for\n",
"# non-interactive plotting (i.e., scripting). The pylab interface is convenient\n",
"# for interactive calculations and plotting\"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"# Seems that need some space\n",
"fig = plt.figure(figsize=(5.21, 2.6), dpi=120) # got the (in x in)dpi equivalent of 500px x 300px\n",
"\n",
"# The image is divided in two and the first part is roughly 1/6 of the image.\n",
"# To understand the subplots I went to http://matplotlib.org/users/gridspec.html\n",
"bars = plt.subplot2grid((1,3), (0,0), colspan=1)\n",
"plot = plt.subplot2grid((1,3), (0,1), colspan=2, axisbelow=True)\n",
"\n",
"# This has the underlying structure"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nrkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x109c9ff90>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Cleaning and removing lines and ticks\n",
"bars.set_yticks([])\n",
"bars.set_xlabel(\"Average\")\n",
"bars.set_xticks([])\n",
"bars.axes.set_ylim((0, 100))\n",
"bars.spines['top'].set_visible(False)\n",
"bars.spines['left'].set_visible(False)\n",
"bars.spines['right'].set_visible(False)\n",
"\n",
"plot.set_xticklabels([\"Apr 2012\", \"Jul 2012\", \"Oct 2012\"])\n",
"plot.set_xticks([4*4, 4*7, 4*10]) # setting the months where they begin (in weeks)\n",
"plot.set_yticklabels([])\n",
"plot.set_ylim((0, 120))\n",
"plot.spines['top'].set_visible(False)\n",
"plot.spines['left'].set_visible(False)\n",
"plot.spines['right'].set_visible(False)\n",
"\n",
"# I don't know yet how many point I will have, so I will set the xticks later.\n",
"# and the same for the bars in the other subplot."
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On the [Google trends page](http://www.google.com/trends/explore#q=cat%2C%20dog%2C%20fish&cmpt=q) they give the option to download the data as a CSV file. Which I modified to leave only the important data for this chart and now the file looks like this:\n",
"\n",
"```\n",
"Week,cat,dog,fish\n",
"2012-01-01 - 2012-01-07,56,92,59\n",
"2012-01-08 - 2012-01-14,59,91,56\n",
"2012-01-15 - 2012-01-21,55,91,56\n",
"2012-01-22 - 2012-01-28,56,89,54\n",
"2012-01-29 - 2012-02-04,58,89,55\n",
"2012-02-05 - 2012-02-11,60,94,54\n",
"2012-02-12 - 2012-02-18,56,98,54\n",
"2012-02-19 - 2012-02-25,58,91,58\n",
"2012-02-26 - 2012-03-03,59,85,54\n",
"...\n",
"```\n",
"\n",
"Since I need this information individually, seems like a good moment to try [pandas](http://pandas.pydata.org/) (the Python Data Analysis Library) to import and handle this CSV file."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n",
"report = pd.read_csv('0_data.csv', na_values=' ') # na_values tells pandas, in the data, what is a null value.\n",
"\n",
"# Now using the attributes 'cat', 'dog' and 'fish' I can access each column of the CSV file\n",
"report.fish.tolist()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
"[59,\n",
" 56,\n",
" 56,\n",
" 54,\n",
" 55,\n",
" 54,\n",
" 54,\n",
" 58,\n",
" 54,\n",
" 56,\n",
" 54,\n",
" 55,\n",
" 56,\n",
" 59,\n",
" 54,\n",
" 55,\n",
" 56,\n",
" 57,\n",
" 56,\n",
" 57,\n",
" 56,\n",
" 56,\n",
" 56,\n",
" 55,\n",
" 56,\n",
" 57,\n",
" 56,\n",
" 59,\n",
" 57,\n",
" 56,\n",
" 55,\n",
" 55,\n",
" 55,\n",
" 56,\n",
" 54,\n",
" 57,\n",
" 53,\n",
" 52,\n",
" 52,\n",
" 52,\n",
" 51,\n",
" 50,\n",
" 51,\n",
" 47,\n",
" 46,\n",
" 48,\n",
" 48,\n",
" 49,\n",
" 49,\n",
" 48,\n",
" 48,\n",
" 54,\n",
" 58]"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# plot each column with their color. \n",
"plot.plot(report.cat.tolist(), color='blue', label='cat')\n",
"plot.plot(report.dog.tolist(), color='red', label='dog')\n",
"plot.plot(report.fish.tolist(), color='orange', label='fish')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
"[<matplotlib.lines.Line2D at 0x109e47a90>]"
]
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# and the same for the bars in the other subplot.\n",
"bars.axes.set_xlim((0, 5))\n",
"bars.bar(1, report.cat.mean(), color='blue', edgecolor='none', width=0.9, label='cat')\n",
"bars.bar(2, report.dog.mean(), color='red', edgecolor='none', width=0.92, label='dog')\n",
"bars.bar(3, report.fish.mean(), color='orange', edgecolor='none', width=0.92, label='fish')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"<Container object of 1 artists>"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# The legend\n",
"plot.legend(frameon=False, loc=2, fontsize='xx-small', ncol=3, mode='none')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"<matplotlib.legend.Legend at 0x10a71c110>"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Almost there...\n",
"# A few adjustments to fonts and colors\n",
"plot.xaxis.set_ticks_position('none')\n",
"plot.yaxis.set_ticks_position('none')\n",
"\n",
"for tk in plot.axes.get_xmajorticklabels():\n",
" plt.setp(tk, color='gray', fontsize='xx-small')\n",
"\n",
"plt.setp(bars.xaxis.label, color='gray', fontsize='xx-small')\n",
"\n",
"plot.grid(which='major', axis='y', linewidth=.8, linestyle='-', color='lightgray')\n",
"plot.spines['bottom'].set_color('gray')\n",
"bars.spines['bottom'].set_color('gray')\n",
"\n",
"plt.subplots_adjust(wspace=-0.1)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"text": [
"<matplotlib.figure.Figure at 0x109d96c90>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Thoughts\n",
" - The `setp` function is very useful to set properties to elements\n",
" - Pandas made it very easy to get up and running with the data.\n",
" - Pandas has a way to plot data using matplotlib directly, this is something to explore.\n",
" - The two graphs seem preety similar to me.\n",
"\n",
"## Things I could not get quite right\n",
" - Colors, different tones of blue, red and... orange? yellow?\n",
" - Spacing between elements in the legend\n",
" - Boxes instead of lines in the legend"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# The entire code\n",
"\n",
"# imports, from the docs: \"The pyplot interface is generally preferred for\n",
"# non-interactive plotting (i.e., scripting). The pylab interface is convenient\n",
"# for interactive calculations and plotting\"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Seems that need some space\n",
"fig = plt.figure(figsize=(5.21, 2.6), dpi=120) # got the (in x in)dpi equivalent of 500px x 300px\n",
"\n",
"# The image is divided in two and the first part is roughly 1/6 of the image.\n",
"# To understand the subplots I went to http://matplotlib.org/users/gridspec.html\n",
"bars = plt.subplot2grid((1,3), (0,0), colspan=1)\n",
"plot = plt.subplot2grid((1,3), (0,1), colspan=2, axisbelow=True)\n",
"\n",
"# This has the underlying structure\n",
"# Cleaning and removing lines and ticks\n",
"bars.set_yticks([])\n",
"bars.set_xlabel(\"Average\")\n",
"bars.set_xticks([])\n",
"bars.axes.set_ylim((0, 100))\n",
"bars.spines['top'].set_visible(False)\n",
"bars.spines['left'].set_visible(False)\n",
"bars.spines['right'].set_visible(False)\n",
"\n",
"plot.set_xticklabels([\"Apr 2012\", \"Jul 2012\", \"Oct 2012\"])\n",
"plot.set_xticks([4*4, 4*7, 4*10]) # setting the months where they begin (in weeks)\n",
"plot.set_yticklabels([])\n",
"plot.set_ylim((0, 120))\n",
"plot.spines['top'].set_visible(False)\n",
"plot.spines['left'].set_visible(False)\n",
"plot.spines['right'].set_visible(False)\n",
"\n",
"# I don't know yet how many point I will have, so I will set the xticks later.\n",
"# and the same for the bars in the other subplot.\n",
"import pandas as pd\n",
"report = pd.read_csv('0_data.csv', na_values=' ')\n",
"\n",
"# plot each column with their color. \n",
"plot.plot(report.cat.tolist(), color='blue', label='cat')\n",
"plot.plot(report.dog.tolist(), color='red', label='dog')\n",
"plot.plot(report.fish.tolist(), color='orange', label='fish')\n",
"# and the same for the bars in the other subplot.\n",
"bars.axes.set_xlim((0, 5))\n",
"bars.bar(1, report.cat.mean(), color='blue', edgecolor='none', width=0.9, label='cat')\n",
"bars.bar(2, report.dog.mean(), color='red', edgecolor='none', width=0.92, label='dog')\n",
"bars.bar(3, report.fish.mean(), color='orange', edgecolor='none', width=0.92, label='fish')\n",
"\n",
"# The legend\n",
"plot.legend(frameon=False, loc=2, fontsize='xx-small', ncol=3, mode='none')\n",
"\n",
"# A few adjustments to fonts and colors\n",
"plot.xaxis.set_ticks_position('none')\n",
"plot.yaxis.set_ticks_position('none')\n",
"\n",
"for tk in plot.axes.get_xmajorticklabels():\n",
" plt.setp(tk, color='gray', fontsize='xx-small')\n",
"\n",
"plt.setp(bars.xaxis.label, color='gray', fontsize='xx-small')\n",
"\n",
"plot.grid(which='major', axis='y', linewidth=.8, linestyle='-', color='lightgray')\n",
"plot.spines['bottom'].set_color('gray')\n",
"bars.spines['bottom'].set_color('gray')\n",
"\n",
"plt.subplots_adjust(wspace=-0.1)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x10a737710>"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sergiobuj"
]
}
],
"metadata": {}
}
]
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment