Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 528a194

Browse files
committed
add vertical table+graph subplot example
1 parent 0ddb23d commit 528a194

File tree

2 files changed

+173
-18
lines changed

2 files changed

+173
-18
lines changed

_posts/python/table/2015-06-30-table.html

Lines changed: 88 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
display_as: chart_type
1111
has_thumbnail: true
1212
page_type: example_index
13-
order: 31
13+
order: 32
1414
---
1515
{% raw %}
1616
<div class="cell border-box-sizing text_cell rendered">
@@ -542,7 +542,7 @@ <h4 id="Tables-with-Graphs">Tables with Graphs<a class="anchor-link" href="#Tabl
542542
</div>
543543
<div class="cell border-box-sizing code_cell rendered">
544544
<div class="input">
545-
<div class="prompt input_prompt">In&nbsp;[11]:</div>
545+
<div class="prompt input_prompt">In&nbsp;[1]:</div>
546546
<div class="inner_cell">
547547
<div class="input_area">
548548
<div class=" highlight hl-ipython2"><pre><span class="kn">import</span> <span class="nn">plotly.plotly</span> <span class="kn">as</span> <span class="nn">py</span>
@@ -601,7 +601,7 @@ <h4 id="Tables-with-Graphs">Tables with Graphs<a class="anchor-link" href="#Tabl
601601
<div class="output">
602602

603603

604-
<div class="output_area"><div class="prompt output_prompt">Out[11]:</div>
604+
<div class="output_area"><div class="prompt output_prompt">Out[1]:</div>
605605

606606
<div class="output_html rendered_html output_subarea output_execute_result">
607607
<iframe id="igraph" scrolling="no" style="border:none;"seamless="seamless" src="https://plot.ly/~chelsea_lyn/9584.embed" height="530px" width="100%"></iframe>
@@ -619,6 +619,91 @@ <h4 id="Tables-with-Graphs">Tables with Graphs<a class="anchor-link" href="#Tabl
619619
<div class="inner_cell">
620620
<div class="text_cell_render border-box-sizing rendered_html">
621621

622+
</div>
623+
</div>
624+
</div>
625+
<div class="cell border-box-sizing code_cell rendered">
626+
<div class="input">
627+
<div class="prompt input_prompt">In&nbsp;[19]:</div>
628+
<div class="inner_cell">
629+
<div class="input_area">
630+
<div class=" highlight hl-ipython2"><pre><span class="kn">import</span> <span class="nn">plotly.plotly</span> <span class="kn">as</span> <span class="nn">py</span>
631+
<span class="kn">import</span> <span class="nn">plotly.graph_objs</span> <span class="kn">as</span> <span class="nn">go</span>
632+
<span class="kn">from</span> <span class="nn">plotly.tools</span> <span class="kn">import</span> <span class="n">FigureFactory</span> <span class="k">as</span> <span class="n">FF</span>
633+
634+
<span class="c"># Add table data</span>
635+
<span class="n">table_data</span> <span class="o">=</span> <span class="p">[[</span><span class="s">&#39;Team&#39;</span><span class="p">,</span> <span class="s">&#39;Wins&#39;</span><span class="p">,</span> <span class="s">&#39;Losses&#39;</span><span class="p">,</span> <span class="s">&#39;Ties&#39;</span><span class="p">],</span>
636+
<span class="p">[</span><span class="s">&#39;Montréal&lt;br&gt;Canadiens&#39;</span><span class="p">,</span> <span class="mi">18</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
637+
<span class="p">[</span><span class="s">&#39;Dallas Stars&#39;</span><span class="p">,</span> <span class="mi">18</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
638+
<span class="p">[</span><span class="s">&#39;NY Rangers&#39;</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
639+
<span class="p">[</span><span class="s">&#39;Boston&lt;br&gt;Bruins&#39;</span><span class="p">,</span> <span class="mi">13</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
640+
<span class="p">[</span><span class="s">&#39;Chicago&lt;br&gt;Blackhawks&#39;</span><span class="p">,</span> <span class="mi">13</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span>
641+
<span class="p">[</span><span class="s">&#39;Ottawa&lt;br&gt;Senators&#39;</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">]]</span>
642+
<span class="c"># Initialize a figure with FF.create_table(table_data)</span>
643+
<span class="n">figure</span> <span class="o">=</span> <span class="n">FF</span><span class="o">.</span><span class="n">create_table</span><span class="p">(</span><span class="n">table_data</span><span class="p">,</span> <span class="n">height_constant</span><span class="o">=</span><span class="mi">60</span><span class="p">)</span>
644+
645+
<span class="c"># Add graph data</span>
646+
<span class="n">teams</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;Montréal Canadiens&#39;</span><span class="p">,</span> <span class="s">&#39;Dallas Stars&#39;</span><span class="p">,</span> <span class="s">&#39;NY Rangers&#39;</span><span class="p">,</span>
647+
<span class="s">&#39;Boston Bruins&#39;</span><span class="p">,</span> <span class="s">&#39;Chicago Blackhawks&#39;</span><span class="p">,</span> <span class="s">&#39;Ottawa Senators&#39;</span><span class="p">]</span>
648+
<span class="n">GFPG</span> <span class="o">=</span> <span class="p">[</span><span class="mf">3.54</span><span class="p">,</span> <span class="mf">3.48</span><span class="p">,</span> <span class="mf">3.0</span><span class="p">,</span> <span class="mf">3.27</span><span class="p">,</span> <span class="mf">2.83</span><span class="p">,</span> <span class="mf">2.45</span><span class="p">,</span> <span class="mf">3.18</span><span class="p">]</span>
649+
<span class="n">GAPG</span> <span class="o">=</span> <span class="p">[</span><span class="mf">2.17</span><span class="p">,</span> <span class="mf">2.57</span><span class="p">,</span> <span class="mf">2.0</span><span class="p">,</span> <span class="mf">2.91</span><span class="p">,</span> <span class="mf">2.57</span><span class="p">,</span> <span class="mf">2.14</span><span class="p">,</span> <span class="mf">2.77</span><span class="p">]</span>
650+
<span class="c"># Make traces for graph</span>
651+
<span class="n">trace1</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">Scatter</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">teams</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">GFPG</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">&#39;bar&#39;</span><span class="p">,</span>
652+
<span class="n">marker</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">color</span><span class="o">=</span><span class="s">&#39;#0099ff&#39;</span><span class="p">),</span>
653+
<span class="n">name</span><span class="o">=</span><span class="s">&#39;Goals For&lt;br&gt;Per Game&#39;</span><span class="p">,</span>
654+
<span class="n">xaxis</span><span class="o">=</span><span class="s">&#39;x2&#39;</span><span class="p">,</span> <span class="n">yaxis</span><span class="o">=</span><span class="s">&#39;y2&#39;</span><span class="p">)</span>
655+
<span class="n">trace2</span> <span class="o">=</span> <span class="n">go</span><span class="o">.</span><span class="n">Scatter</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">teams</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">GAPG</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">&#39;bar&#39;</span><span class="p">,</span>
656+
<span class="n">marker</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">color</span><span class="o">=</span><span class="s">&#39;#404040&#39;</span><span class="p">),</span>
657+
<span class="n">name</span><span class="o">=</span><span class="s">&#39;Goals Against&lt;br&gt;Per Game&#39;</span><span class="p">,</span>
658+
<span class="n">xaxis</span><span class="o">=</span><span class="s">&#39;x2&#39;</span><span class="p">,</span> <span class="n">yaxis</span><span class="o">=</span><span class="s">&#39;y2&#39;</span><span class="p">)</span>
659+
660+
<span class="c"># Add trace data to figure</span>
661+
<span class="n">figure</span><span class="p">[</span><span class="s">&#39;data&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">go</span><span class="o">.</span><span class="n">Data</span><span class="p">([</span><span class="n">trace1</span><span class="p">,</span> <span class="n">trace2</span><span class="p">]))</span>
662+
663+
<span class="c"># Edit layout for subplots</span>
664+
<span class="n">figure</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">yaxis</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;domain&#39;</span><span class="p">:</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="o">.</span><span class="mi">45</span><span class="p">]})</span>
665+
<span class="n">figure</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">yaxis2</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;domain&#39;</span><span class="p">:</span> <span class="p">[</span><span class="o">.</span><span class="mi">6</span><span class="p">,</span> <span class="mi">1</span><span class="p">]})</span>
666+
<span class="c"># The graph&#39;s yaxis2 MUST BE anchored to the graph&#39;s xaxis2 and vice versa</span>
667+
<span class="n">figure</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">yaxis2</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;anchor&#39;</span><span class="p">:</span> <span class="s">&#39;x2&#39;</span><span class="p">})</span>
668+
<span class="n">figure</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">xaxis2</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;anchor&#39;</span><span class="p">:</span> <span class="s">&#39;y2&#39;</span><span class="p">})</span>
669+
<span class="n">figure</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">yaxis2</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;title&#39;</span><span class="p">:</span> <span class="s">&#39;Goals&#39;</span><span class="p">})</span>
670+
<span class="c"># Update the margins to add a title and see graph x-labels. </span>
671+
<span class="n">figure</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">margin</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;t&#39;</span><span class="p">:</span><span class="mi">75</span><span class="p">,</span> <span class="s">&#39;l&#39;</span><span class="p">:</span><span class="mi">50</span><span class="p">})</span>
672+
<span class="n">figure</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;title&#39;</span><span class="p">:</span> <span class="s">&#39;2016 Hockey Stats&#39;</span><span class="p">})</span>
673+
<span class="c"># Update the height because adding a graph vertically will interact with</span>
674+
<span class="c"># the plot height calculated for the table</span>
675+
<span class="n">figure</span><span class="o">.</span><span class="n">layout</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;height&#39;</span><span class="p">:</span><span class="mi">800</span><span class="p">})</span>
676+
677+
<span class="c"># Plot!</span>
678+
<span class="n">py</span><span class="o">.</span><span class="n">iplot</span><span class="p">(</span><span class="n">figure</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="s">&#39;subplot_table&#39;</span><span class="p">)</span>
679+
</pre></div>
680+
681+
</div>
682+
</div>
683+
</div>
684+
685+
<div class="output_wrapper">
686+
<div class="output">
687+
688+
689+
<div class="output_area"><div class="prompt output_prompt">Out[19]:</div>
690+
691+
<div class="output_html rendered_html output_subarea output_execute_result">
692+
<iframe id="igraph" scrolling="no" style="border:none;"seamless="seamless" src="https://plot.ly/~chelsea_lyn/9584.embed" height="800px" width="100%"></iframe>
693+
</div>
694+
695+
</div>
696+
697+
</div>
698+
</div>
699+
700+
</div>
701+
<div class="cell border-box-sizing text_cell rendered">
702+
<div class="prompt input_prompt">
703+
</div>
704+
<div class="inner_cell">
705+
<div class="text_cell_render border-box-sizing rendered_html">
706+
622707
</div>
623708
</div>
624709
</div>

_posts/python/table/table.ipynb

Lines changed: 85 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@
459459
},
460460
{
461461
"cell_type": "code",
462-
"execution_count": 11,
462+
"execution_count": 21,
463463
"metadata": {
464464
"collapsed": false
465465
},
@@ -473,7 +473,7 @@
473473
"<plotly.tools.PlotlyDisplay object>"
474474
]
475475
},
476-
"execution_count": 11,
476+
"execution_count": 21,
477477
"metadata": {},
478478
"output_type": "execute_result"
479479
}
@@ -534,6 +534,86 @@
534534
" "
535535
]
536536
},
537+
{
538+
"cell_type": "code",
539+
"execution_count": 22,
540+
"metadata": {
541+
"collapsed": false
542+
},
543+
"outputs": [
544+
{
545+
"data": {
546+
"text/html": [
547+
"<iframe id=\"igraph\" scrolling=\"no\" style=\"border:none;\"seamless=\"seamless\" src=\"https://plot.ly/~chelsea_lyn/9925.embed\" height=\"800px\" width=\"100%\"></iframe>"
548+
],
549+
"text/plain": [
550+
"<plotly.tools.PlotlyDisplay object>"
551+
]
552+
},
553+
"execution_count": 22,
554+
"metadata": {},
555+
"output_type": "execute_result"
556+
}
557+
],
558+
"source": [
559+
"import plotly.plotly as py\n",
560+
"import plotly.graph_objs as go\n",
561+
"from plotly.tools import FigureFactory as FF\n",
562+
"\n",
563+
"# Add table data\n",
564+
"table_data = [['Team', 'Wins', 'Losses', 'Ties'],\n",
565+
" ['Montréal<br>Canadiens', 18, 4, 0],\n",
566+
" ['Dallas Stars', 18, 5, 0],\n",
567+
" ['NY Rangers', 16, 5, 0], \n",
568+
" ['Boston<br>Bruins', 13, 8, 0],\n",
569+
" ['Chicago<br>Blackhawks', 13, 8, 0],\n",
570+
" ['Ottawa<br>Senators', 12, 5, 0]]\n",
571+
"# Initialize a figure with FF.create_table(table_data)\n",
572+
"figure = FF.create_table(table_data, height_constant=60)\n",
573+
"\n",
574+
"# Add graph data\n",
575+
"teams = ['Montréal Canadiens', 'Dallas Stars', 'NY Rangers',\n",
576+
" 'Boston Bruins', 'Chicago Blackhawks', 'Ottawa Senators']\n",
577+
"GFPG = [3.54, 3.48, 3.0, 3.27, 2.83, 2.45, 3.18]\n",
578+
"GAPG = [2.17, 2.57, 2.0, 2.91, 2.57, 2.14, 2.77]\n",
579+
"# Make traces for graph\n",
580+
"trace1 = go.Scatter(x=teams, y=GFPG, type='bar',\n",
581+
" marker=dict(color='#0099ff'),\n",
582+
" name='Goals For<br>Per Game',\n",
583+
" xaxis='x2', yaxis='y2')\n",
584+
"trace2 = go.Scatter(x=teams, y=GAPG, type='bar',\n",
585+
" marker=dict(color='#404040'),\n",
586+
" name='Goals Against<br>Per Game',\n",
587+
" xaxis='x2', yaxis='y2')\n",
588+
"\n",
589+
"# Add trace data to figure\n",
590+
"figure['data'].extend(go.Data([trace1, trace2]))\n",
591+
"\n",
592+
"# Edit layout for subplots\n",
593+
"figure.layout.yaxis.update({'domain': [0, .45]})\n",
594+
"figure.layout.yaxis2.update({'domain': [.6, 1]})\n",
595+
"# The graph's yaxis2 MUST BE anchored to the graph's xaxis2 and vice versa\n",
596+
"figure.layout.yaxis2.update({'anchor': 'x2'})\n",
597+
"figure.layout.xaxis2.update({'anchor': 'y2'})\n",
598+
"figure.layout.yaxis2.update({'title': 'Goals'})\n",
599+
"# Update the margins to add a title and see graph x-labels. \n",
600+
"figure.layout.margin.update({'t':75, 'l':50})\n",
601+
"figure.layout.update({'title': '2016 Hockey Stats'})\n",
602+
"# Update the height because adding a graph vertically will interact with\n",
603+
"# the plot height calculated for the table\n",
604+
"figure.layout.update({'height':800})\n",
605+
"\n",
606+
"# Plot!\n",
607+
"py.iplot(figure, filename='subplot_table_vertical')\n"
608+
]
609+
},
610+
{
611+
"cell_type": "markdown",
612+
"metadata": {},
613+
"source": [
614+
" "
615+
]
616+
},
537617
{
538618
"cell_type": "markdown",
539619
"metadata": {},
@@ -543,7 +623,7 @@
543623
},
544624
{
545625
"cell_type": "code",
546-
"execution_count": 12,
626+
"execution_count": 23,
547627
"metadata": {
548628
"collapsed": false
549629
},
@@ -633,7 +713,7 @@
633713
},
634714
{
635715
"cell_type": "code",
636-
"execution_count": 1,
716+
"execution_count": 24,
637717
"metadata": {
638718
"collapsed": false
639719
},
@@ -668,16 +748,6 @@
668748
"text": [
669749
"Requirement already up-to-date: publisher in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages\r\n"
670750
]
671-
},
672-
{
673-
"name": "stderr",
674-
"output_type": "stream",
675-
"text": [
676-
"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/IPython/nbconvert.py:13: ShimWarning: The `IPython.nbconvert` package has been deprecated. You should import from ipython_nbconvert instead.\n",
677-
" \"You should import from ipython_nbconvert instead.\", ShimWarning)\n",
678-
"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/publisher/publisher.py:53: UserWarning: Did you \"Save\" this notebook before running this command? Remember to save, always save.\n",
679-
" warnings.warn('Did you \"Save\" this notebook before running this command? '\n"
680-
]
681751
}
682752
],
683753
"source": [
@@ -693,7 +763,7 @@
693763
" 'How to make Tables in Python with Plotly.',\n",
694764
" name = 'Tables',\n",
695765
" thumbnail='thumbnail/table.jpg', language='python',\n",
696-
" page_type='example_index', has_thumbnail='true', display_as='chart_type', order=31) "
766+
" page_type='example_index', has_thumbnail='true', display_as='chart_type', order=32) "
697767
]
698768
},
699769
{

0 commit comments

Comments
 (0)