Skip to content

Commit c62e8a8

Browse files
committed
Image, Plotly, Cython
1 parent 8447a11 commit c62e8a8

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2828,11 +2828,11 @@ img.show()
28282828
from PIL import ImageDraw
28292829
<Draw> = ImageDraw.Draw(<Image>) # Object for adding 2D graphics to the image.
28302830
<Draw>.point((x, y)) # Draws a point. Truncates floats into ints.
2831-
<Draw>.line((x1, y1, x2, y2 [, ...])) # To get anti-aliasing use Image's resize().
2831+
<Draw>.line((x1, y1, x2, y2 [, ...])) # For anti-aliasing use <Image>.resize((w, h)).
28322832
<Draw>.arc((x1, y1, x2, y2), deg1, deg2) # Draws in clockwise dir. Also pieslice().
28332833
<Draw>.rectangle((x1, y1, x2, y2)) # Also rounded_rectangle(), regular_polygon().
2834-
<Draw>.polygon((x1, y1, x2, y2, ...)) # Last point gets connected to the first.
2835-
<Draw>.ellipse((x1, y1, x2, y2)) # To rotate use Image's rotate() and paste().
2834+
<Draw>.polygon((x1, y1, x2, y2, ...)) # Last point gets connected to the first one.
2835+
<Draw>.ellipse((x1, y1, x2, y2)) # To rotate use <Image>.rotate(anticlock_deg).
28362836
<Draw>.text((x, y), <str>, font=<Font>) # `<Font> = ImageFont.truetype(<path>, size)`.
28372837
```
28382838
* **Use `'fill=<color>'` to set the primary color.**
@@ -3457,7 +3457,7 @@ px.line(df, x='Date', y='Total Deaths per Million', color='Continent').show()
34573457

34583458
```python
34593459
# $ pip3 install pandas lxml selenium plotly
3460-
import pandas as pd, selenium.webdriver, plotly.graph_objects as go
3460+
import pandas as pd, selenium.webdriver, io, plotly.graph_objects as go
34613461

34623462
def main():
34633463
covid, (bitcoin, gold, dow) = get_covid_cases(), get_tickers()
@@ -3466,7 +3466,7 @@ def main():
34663466

34673467
def get_covid_cases():
34683468
url = 'https://covid.ourworldindata.org/data/owid-covid-data.csv'
3469-
df = pd.read_csv(url, usecols=['location', 'date', 'total_cases'], parse_dates=['date'])
3469+
df = pd.read_csv(url, parse_dates=['date'])
34703470
df = df[df.location == 'World']
34713471
s = df.set_index('date').total_cases
34723472
return s.rename('Total Cases')
@@ -3482,7 +3482,7 @@ def get_ticker(driver, name, symbol):
34823482
driver.get(url + '?period1=1579651200&period2=9999999999')
34833483
if buttons := driver.find_elements('xpath', '//button[@name="reject"]'):
34843484
buttons[0].click()
3485-
dataframes = pd.read_html(driver.page_source, parse_dates=['Date'])
3485+
dataframes = pd.read_html(io.StringIO(driver.page_source), parse_dates=['Date'])
34863486
s = dataframes[0].set_index('Date').Open
34873487
return s.rename(name)
34883488

@@ -3529,7 +3529,7 @@ import <cython_script> # Script must be saved with '.pyx' extens
35293529

35303530
#### Definitions:
35313531
* **All `'cdef'` definitions are optional, but they contribute to the speed-up.**
3532-
* **Also supports C pointers via `'*'` and `'&'`, structs, unions, and enums.**
3532+
* **Also supports C pointers (via `'*'` and `'&'`), structs, unions and enums.**
35333533

35343534
```python
35353535
cdef <ctype/type> <var_name> [= <obj>]

index.html

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656

5757
<body>
5858
<header>
59-
<aside>February 28, 2025</aside>
59+
<aside>March 2, 2025</aside>
6060
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
6161
</header>
6262

@@ -2313,11 +2313,11 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
23132313
<div><h3 id="imagedraw">Image Draw</h3><pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> ImageDraw
23142314
&lt;Draw&gt; = ImageDraw.Draw(&lt;Image&gt;) <span class="hljs-comment"># Object for adding 2D graphics to the image.</span>
23152315
&lt;Draw&gt;.point((x, y)) <span class="hljs-comment"># Draws a point. Truncates floats into ints.</span>
2316-
&lt;Draw&gt;.line((x1, y1, x2, y2 [, ...])) <span class="hljs-comment"># To get anti-aliasing use Image's resize().</span>
2316+
&lt;Draw&gt;.line((x1, y1, x2, y2 [, ...])) <span class="hljs-comment"># For anti-aliasing use &lt;Image&gt;.resize((w, h)).</span>
23172317
&lt;Draw&gt;.arc((x1, y1, x2, y2), deg1, deg2) <span class="hljs-comment"># Draws in clockwise dir. Also pieslice().</span>
23182318
&lt;Draw&gt;.rectangle((x1, y1, x2, y2)) <span class="hljs-comment"># Also rounded_rectangle(), regular_polygon().</span>
2319-
&lt;Draw&gt;.polygon((x1, y1, x2, y2, ...)) <span class="hljs-comment"># Last point gets connected to the first.</span>
2320-
&lt;Draw&gt;.ellipse((x1, y1, x2, y2)) <span class="hljs-comment"># To rotate use Image's rotate() and paste().</span>
2319+
&lt;Draw&gt;.polygon((x1, y1, x2, y2, ...)) <span class="hljs-comment"># Last point gets connected to the first one.</span>
2320+
&lt;Draw&gt;.ellipse((x1, y1, x2, y2)) <span class="hljs-comment"># To rotate use &lt;Image&gt;.rotate(anticlock_deg).</span>
23212321
&lt;Draw&gt;.text((x, y), &lt;str&gt;, font=&lt;Font&gt;) <span class="hljs-comment"># `&lt;Font&gt; = ImageFont.truetype(&lt;path&gt;, size)`.</span>
23222322
</code></pre></div>
23232323

@@ -2816,7 +2816,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
28162816

28172817

28182818
<div><h4 id="displaysamultiaxislinechartoftotalcoronaviruscasesandchangesinpricesofbitcoindowjonesandgold">Displays a multi-axis line chart of total coronavirus cases and changes in prices of Bitcoin, Dow Jones and gold:</h4><p></p><div id="e23ccacc-a456-478b-b467-7282a2165921" class="plotly-graph-div" style="height:287px; width:935px;"></div><pre><code class="python language-python hljs"><span class="hljs-comment"># $ pip3 install pandas lxml selenium plotly</span>
2819-
<span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd, selenium.webdriver, plotly.graph_objects <span class="hljs-keyword">as</span> go
2819+
<span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd, selenium.webdriver, io, plotly.graph_objects <span class="hljs-keyword">as</span> go
28202820

28212821
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">()</span>:</span>
28222822
covid, (bitcoin, gold, dow) = get_covid_cases(), get_tickers()
@@ -2825,7 +2825,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
28252825

28262826
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_covid_cases</span><span class="hljs-params">()</span>:</span>
28272827
url = <span class="hljs-string">'https://covid.ourworldindata.org/data/owid-covid-data.csv'</span>
2828-
df = pd.read_csv(url, usecols=[<span class="hljs-string">'location'</span>, <span class="hljs-string">'date'</span>, <span class="hljs-string">'total_cases'</span>], parse_dates=[<span class="hljs-string">'date'</span>])
2828+
df = pd.read_csv(url, parse_dates=[<span class="hljs-string">'date'</span>])
28292829
df = df[df.location == <span class="hljs-string">'World'</span>]
28302830
s = df.set_index(<span class="hljs-string">'date'</span>).total_cases
28312831
<span class="hljs-keyword">return</span> s.rename(<span class="hljs-string">'Total Cases'</span>)
@@ -2841,7 +2841,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
28412841
driver.get(url + <span class="hljs-string">'?period1=1579651200&amp;period2=9999999999'</span>)
28422842
<span class="hljs-keyword">if</span> buttons := driver.find_elements(<span class="hljs-string">'xpath'</span>, <span class="hljs-string">'//button[@name="reject"]'</span>):
28432843
buttons[<span class="hljs-number">0</span>].click()
2844-
dataframes = pd.read_html(driver.page_source, parse_dates=[<span class="hljs-string">'Date'</span>])
2844+
dataframes = pd.read_html(io.StringIO(driver.page_source), parse_dates=[<span class="hljs-string">'Date'</span>])
28452845
s = dataframes[<span class="hljs-number">0</span>].set_index(<span class="hljs-string">'Date'</span>).Open
28462846
<span class="hljs-keyword">return</span> s.rename(name)
28472847

@@ -2885,7 +2885,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
28852885

28862886
<div><h4 id="definitions">Definitions:</h4><ul>
28872887
<li><strong>All <code class="python hljs"><span class="hljs-string">'cdef'</span></code> definitions are optional, but they contribute to the speed-up.</strong></li>
2888-
<li><strong>Also supports C pointers via <code class="python hljs"><span class="hljs-string">'*'</span></code> and <code class="python hljs"><span class="hljs-string">'&amp;'</span></code>, structs, unions, and enums.</strong></li>
2888+
<li><strong>Also supports C pointers (via <code class="python hljs"><span class="hljs-string">'*'</span></code> and <code class="python hljs"><span class="hljs-string">'&amp;'</span></code>), structs, unions and enums.</strong></li>
28892889
</ul><pre><code class="python language-python hljs"><span class="hljs-keyword">cdef</span> &lt;ctype/type&gt; &lt;var_name&gt; [= &lt;obj&gt;]
28902890
<span class="hljs-keyword">cdef</span> &lt;ctype&gt;[n_elements] &lt;var_name&gt; [= &lt;coll_of_nums&gt;]
28912891
<span class="hljs-keyword">cdef</span> &lt;ctype/type/void&gt; &lt;func_name&gt;(&lt;ctype/type&gt; &lt;arg_name&gt;): ...
@@ -2942,7 +2942,7 @@ <h3 id="format-2">Format</h3><div><h4 id="forstandardtypesizesandmanualalignment
29422942

29432943

29442944
<footer>
2945-
<aside>February 28, 2025</aside>
2945+
<aside>March 2, 2025</aside>
29462946
<a href="https://gto76.github.io" rel="author">Jure Šorn</a>
29472947
</footer>
29482948

0 commit comments

Comments
 (0)