{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import bokeh.bokeh_magic" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Bokeh magic loaded.\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "%bokeh --notebook" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", " \n", " \n", " Bokeh Plot\n", " \n", " \n", " \n", " \n", " \n", "

Configuring embedded BokehJS mode.

\n", " \n", "" ], "metadata": {}, "output_type": "display_data" } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import pandas as pd\n", "from bokeh.objects import Range1d\n", "from bokeh.palettes import brewer\n", "from bokeh.plotting import (annular_wedge, line, rect,\n", " figure, hold, show, \n", " curplot, xgrid, ygrid, text)\n", "\n", "figure()\n", "hold()\n", "\n", "df = pd.read_csv('GDP.csv', delimiter='\\t', header=0, index_col=0, na_values=['..'])\n", "t_df = df.transpose()\n", "c_df = t_df.ix[1:, :]\n", "ind, c = c_df.shape\n", "k = 80 # constant\n", "#ind = 7 #indicators\n", "#c = 100 # countries\n", "\n", "#values = k * np.random.random((ind, c)) #matrix\n", "countries = t_df.columns.values\n", "values = k * c_df.values/10\n", "levels = np.arange(ind)\n", "n = np.arange(c)\n", "x = np.zeros(c)\n", "y = np.zeros(c)\n", "angle = 2 * np.pi / c\n", "\n", "inner_radius = 10\n", "\n", "width = 800\n", "height = 800\n", "\n", "line(x+1, y+1, alpha=0, width=width, height=height, title=\"GDP growth (annual %)\", \n", " tools=\"pan,wheel_zoom,reset,previewsave\", x_axis_type=None, y_axis_type=None)\n", "\n", "plot = curplot()\n", "plot.x_range = Range1d(start=-1000, end=1000)\n", "plot.y_range = Range1d(start=-1000, end=1000)\n", "plot.background_fill = \"black\"\n", "plot.outline_line_color = None\n", "\n", "palette = brewer[\"Spectral\"][ind]\n", "inverted_palette = palette[::-1]\n", "\n", "def create_ring(x, y, level, color):\n", " annular_wedge(x, y, level * k + inner_radius, level * k + inner_radius + values[level], \n", " n * angle, (n + 1) * angle, color=color, line_color=\"black\")\n", "\n", " \n", "for level in levels:\n", " create_ring(x, y, level, palette[level])\n", "\n", "angles = (0.5+ n) * angle\n", "xr = (levels[-1] + 1.5) * k *np.cos(angles)\n", "yr = (levels[-1] + 1.5) * k * np.sin(angles)\n", "text(xr, yr, countries, angle=angles, text_font_size=\"7pt\", text_align=\"left\", text_baseline=\"middle\", text_color=\"white\")\n", "\n", "rect([-900, -900, -900, -900, -900, -900], [900, 860, 820, 780, 740, 700], width=50, height=20,\n", " color=inverted_palette)\n", "text([-850, -850, -850, -850, -850, -850], [900, 860, 820, 780, 740, 700], text=t_df.index.values[1:][::-1], angle=0, text_font_size=\"6pt\", text_align=\"left\", text_baseline=\"middle\", text_color=\"white\")\n", "\n", "show()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", " \n", " \n", " Bokeh Plot\n", " \n", " \n", " \n", "
Plots
\n", " \n", "" ], "metadata": {}, "output_type": "display_data" } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }