-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathpython_flair.html
167 lines (142 loc) · 12.1 KB
/
python_flair.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Adding flair to your Python code • flair</title>
<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css">
<script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous">
<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet">
<script src="../pkgdown.js"></script><meta property="og:title" content="Adding flair to your Python code">
<meta property="og:description" content="flair">
<!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body data-spy="scroll" data-target="#toc">
<div class="container template-article">
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">flair</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">0.0.2</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<a href="../index.html">
<span class="fas fa fas fa-home fa-lg"></span>
</a>
</li>
<li>
<a href="../reference/index.html">Reference</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
Articles
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="../articles/how_to_flair.html">Add some flair to your source code</a>
</li>
<li>
<a href="../articles/python_flair.html">Adding flair to your Python code</a>
</li>
</ul>
</li>
<li>
<a href="../news/index.html">Changelog</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="https://github.com/kbodwin/flair/">
<span class="fab fa fab fa-github fa-lg"></span>
</a>
</li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
<!--/.container -->
</div>
<!--/.navbar -->
</header><script src="python_flair_files/accessible-code-block-0.0.1/empty-anchor.js"></script><div class="row">
<div class="col-md-9 contents">
<div class="page-header toc-ignore">
<h1 data-toc-skip>Adding flair to your Python code</h1>
<small class="dont-index">Source: <a href="https://github.com/kbodwin/flair/blob/master/vignettes/python_flair.Rmd"><code>vignettes/python_flair.Rmd</code></a></small>
<div class="hidden name"><code>python_flair.Rmd</code></div>
</div>
<div class="sourceCode" id="cb1"><html><body><pre class="r"><span class="fu"><a href="https://rdrr.io/r/base/library.html">library</a></span>(<span class="no">flair</span>)
<span class="fu"><a href="https://rdrr.io/r/base/library.html">library</a></span>(<span class="no">ggplot2</span>)
<span class="fu"><a href="https://rdrr.io/r/base/library.html">library</a></span>(<span class="no">reticulate</span>)</pre></body></html></div>
<p>This is a demo of how to use <code>flair</code> with Python (and <code>reticulate</code>) in an R Markdown document.</p>
<p>Just like R, you can use Python in <code>.Rmd</code> files! All you need to do is specify <code>{python}</code> instead of <code>{r}</code> in when you set up your R Markdown code chunk. In the first code chunk below we <code>import</code> the <code>pandas</code> Python package.</p>
<div id="import-python-packages" class="section level4">
<h4 class="hasAnchor">
<a href="#import-python-packages" class="anchor"></a>Import Python packages</h4>
<pre><code class="language-r"><code><span style="background-color:#ffff7f">import</span> pandas as pd</code></code></pre>
<p>To add “flair” to our Python code above we create another code chunk, this time using a R engine. In that, we used <code><a href="../reference/decorate.html">flair::decorate("code_chunk_name")</a></code> to reference the Python code chunk (here <code>"packages"</code>), just as you would if you were using an R engine. We also used <code><a href="../reference/flair.html">flair::flair("code_to_decorate")</a></code> to color the code we wished to color (here <code>"import"</code>):</p>
<div class="sourceCode" id="cb2"><html><body><pre class="r"><span class="fu"><a href="../reference/decorate.html">decorate</a></span>(<span class="st">"packages"</span>) <span class="kw">%>%</span>
<span class="fu"><a href="../reference/flair.html">flair</a></span>(<span class="st">"import"</span>)</pre></body></html></div>
<p>Normally we would set the above R code chunk option to <code>echo = FALSE</code> so that this code is not printed out, we however opted to intentionally print it out here for the purposes of illustrating how the <code>flair</code> package works.</p>
</div>
<div id="load-data" class="section level4">
<h4 class="hasAnchor">
<a href="#load-data" class="anchor"></a>Load data</h4>
<p>Let’s use <code>pd.read_csv</code> to load the titanic data and view the top of the data set:</p>
<pre><code class="language-r"><code>titanic = <span style="background-color:pink">pd.read_csv</span>("data/titanic.csv")<br>titanic.head()<br>#> pclass survived ... body home.dest<br>#> 0 1 1 ... NaN St Louis, MO<br>#> 1 1 1 ... NaN Montreal, PQ / Chesterville, ON<br>#> 2 1 0 ... NaN Montreal, PQ / Chesterville, ON<br>#> 3 1 0 ... 135.0 Montreal, PQ / Chesterville, ON<br>#> 4 1 0 ... NaN Montreal, PQ / Chesterville, ON<br>#> <br>#> [5 rows x 14 columns]</code></code></pre>
<p>Here we used <code>flair</code> to add pink “flair” to highlight the function we are using to load the data in the Python engine code chunk named <code>"load_data"</code>:</p>
<div class="sourceCode" id="cb3"><html><body><pre class="r"><span class="fu"><a href="../reference/decorate.html">decorate</a></span>(<span class="st">"load_data"</span>) <span class="kw">%>%</span>
<span class="fu"><a href="../reference/flair.html">flair</a></span>(<span class="st">"pd.read_csv"</span>, <span class="kw">background</span> <span class="kw">=</span> <span class="st">"pink"</span>)</pre></body></html></div>
</div>
<div id="visualize-the-data" class="section level3">
<h3 class="hasAnchor">
<a href="#visualize-the-data" class="anchor"></a>Visualize the data</h3>
<p>To create a scatter plot, we can pass the Python data frame into <code>ggplot</code> using <code>py$data_frame</code> syntax inside a code chunk that this time uses an R engine to make a scatter plot (what can I say, I love <code>ggolot2</code>…):</p>
<pre><code class="language-r"><code>ggplot2::<span style="background-color:pink">ggplot(<span style="color:CornflowerBlue">py$titanic</span>, aes(x = age, y = fare))</span> +<br> geom_point()</code></code></pre>
<p><img src="python_flair_files/figure-html/unnamed-chunk-12-1.png" width="384"></p>
<p>Here we used <code>flair</code> to add pink “flair” to highlight the function call to <code>ggplot</code>, as well as blue font to highlight the key part of the syntax that allows us to pass the Python data frame to R:</p>
<div class="sourceCode" id="cb4"><html><body><pre class="r"><span class="fu"><a href="../reference/decorate.html">decorate</a></span>(<span class="st">"viz"</span>) <span class="kw">%>%</span>
<span class="fu"><a href="../reference/flair.html">flair</a></span>(<span class="st">"ggplot(py$titanic, aes(x = age, y = fare))"</span>, <span class="kw">background</span> <span class="kw">=</span> <span class="st">"pink"</span>) <span class="kw">%>%</span>
<span class="fu"><a href="../reference/flair.html">flair</a></span>(<span class="st">"py$titanic"</span>, <span class="kw">color</span> <span class="kw">=</span> <span class="st">"CornflowerBlue"</span>)</pre></body></html></div>
</div>
<div id="and-inline-code-within-markdown-text" class="section level3">
<h3 class="hasAnchor">
<a href="#and-inline-code-within-markdown-text" class="anchor"></a>And inline code within markdown text!</h3>
<p>The last thing we do is find the destination of the first passenger:</p>
<pre><code class="language-r"><code>first_dest = <span style="background-color:yellow">titanic["home.dest"][0]</span></code></code></pre>
<p>The destination of the first passenger is St Louis, MO.</p>
<p>Here we used <code>flair</code> to add yellow “flair” to highlight how we numerically index the <code>pandas</code> data frame to get the first passenger’s destination (fun fact - Python starts counting from 0). We then used inline code to print out the destination within the formatted markdown text in the sentence above:</p>
<div class="sourceCode" id="cb5"><html><body><pre class="r"><span class="fu"><a href="../reference/decorate.html">decorate</a></span>(<span class="st">"first destination"</span>) <span class="kw">%>%</span>
<span class="fu"><a href="../reference/flair.html">flair</a></span>(<span class="st">'titanic["home.dest"][0]'</span>, <span class="kw">background</span> <span class="kw">=</span> <span class="st">"yellow"</span>)</pre></body></html></div>
</div>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
</div>
</div>
<footer><div class="copyright">
<p>Developed by Kelly Bodwin, Hunter Glanz.</p>
</div>
<div class="pkgdown">
<p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p>
</div>
</footer>
</div>
</body>
</html>