All the things
### kitchen_sink.py
import logging
import pandas as pd
import plotly.express as px
import report_creator as rc
logging.basicConfig(level=logging.INFO)
if __name__ == "__main__":
# set up of example text, plots and dataframes
df1 = pd.DataFrame(columns=["Name", "Age"])
df1.Name = ["Lizzie", "Julie", "Andrea"]
df1.Age = [24, 18, 22]
df2 = px.data.stocks()
with open(__file__) as f:
example_python = f.read()
with open("examples/example.txt") as f:
example_text = f.read()
with open("examples/example.java") as f:
example_java = f.read()
with open("README.md") as f:
example_md = f.read()
# begin the use of the report_creator package
with rc.ReportCreator(
title="Kitchen Sink",
description="**All** the *things*",
footer=f"Made with `report_creator` (v{rc.__version__}), `pip install report-creator` :red_heart:",
) as report:
view = rc.Block(
rc.Collapse(
rc.Python(example_python, label="kitchen_sink.py"),
label="Code (kitchen_sink.py) to create this report",
),
rc.Group(
rc.Metric(
heading="Hitchhiker's Guide to the Galaxy",
value="Don't Panic",
),
rc.Metric(
heading="Gross profit margin",
value=65,
unit="%",
label="A commonly tracked metric by finance departments that can be found on an income statement.",
),
rc.Metric(
heading="Accuracy",
value=0.95,
label="Number of correct predictions by Total number of predictions",
),
rc.Metric(
heading="Recurring revenue",
value="$10.7B",
label="Recurring revenue is the portion of a company's revenue that is predictable and stable.",
),
rc.Metric(
heading="Capacity utilization",
value=42,
unit="%",
label="A popular productivity metric that measures the ratio of actual output to potential output.",
),
rc.Metric(
heading="Asset turnover ratio",
value=3.3,
label="Asset turnover ratio is a financial metric that shows how efficiently a company generates revenue from its assets.",
),
label="Grouped Metrics",
),
rc.Separator(),
rc.Group(
rc.MetricGroup(
df1,
heading="Name",
value="Age",
label="Metrics Group from DataFrame",
),
rc.Table(df1, label="Table of DataFrame"),
),
rc.Group(
rc.EventMetric(
pd.read_csv("examples/logs.csv"),
condition="status == 200",
color="black",
date="time",
frequency="B",
heading="Successful Requests",
),
rc.EventMetric(
pd.read_csv("examples/logs.csv"),
condition="status == 404",
color="black",
date="time",
frequency="B",
heading="Not Found Requests",
),
label="Log File Metrics",
),
rc.Accordion(
blocks=[
rc.Markdown(
"""
> Love all, trust a few, do wrong to none.
> Moderate lamentation is the right of the dead, excessive grief the enemy to the living.
""",
label="All's Well That Ends Well",
),
rc.Markdown(
"""
>Something is rotten in the state of Denmark.
> There are more things in heaven and earth, Horatio,
> Than are dreamt of in our philosophy.
> To be, or not to be, that is the question.
> How all occasions do inform against me, and spur my dull revenge.
""",
label="Hamlet",
),
rc.Markdown(
"""
> But, soft, what light through yonder window breaks?
> It is the east, and Juliet is the sun.
> O happy dagger,
> This is thy sheath: there rust, and let me die.
> For never was a story of more woe
> Than this of Juliet and her Romeo.
""",
label="Romeo and Juliet",
),
],
label="Accordion",
),
rc.Text(
example_text,
label="Alice’s Adventures in Wonderland (Text)",
),
rc.Java(
example_java,
label="Example Java",
),
rc.Separator(),
rc.Markdown(example_md, label="README.md"),
rc.Widget(df1.plot.bar(x="Name", y="Age"), label="Matplotlib Figure - People"),
rc.Widget(
px.line(df2, x="date", y=["GOOG", "AAPL", "NFLX", "MSFT"]),
label="rc.Widget() of a Plotly Figure",
),
rc.Separator(),
rc.Group(
rc.Pie(
px.data.gapminder().query("year == 2002").query("continent == 'Europe'"),
values="pop",
names="country",
label="rc.Pie Chart - 2002 Population of European continent",
),
rc.Pie(
px.data.gapminder().query("year == 2002").query("continent == 'Americas'"),
values="pop",
names="country",
label="rc.Pie Chart - 2002 Population of American continent",
),
),
rc.Group(
rc.Histogram(
px.data.tips(),
x="total_bill",
dimension="sex",
label="rc.Histogram() Chart of Total Bill",
),
rc.Box(
px.data.tips(),
y="total_bill",
dimension="day",
label="rc.Box() Chart of Total Bill by Day Dimension",
),
),
rc.Select(
blocks=[
rc.Bar(
px.data.medals_long(),
x="nation",
y="count",
dimension="medal",
label="Bar Chart - Olympic Medals",
),
rc.Scatter(
df=px.data.iris(),
x="sepal_width",
y="sepal_length",
dimension="species",
marginal="histogram",
label="Scatter Plot - Iris",
),
],
label="Tabbed Plots",
),
rc.Line(
px.data.stocks(),
x="date",
y=["GOOG", "AAPL", "NFLX", "MSFT"],
label="Stock Plot",
),
rc.Separator(),
rc.Html(
"<span>"
+ "".join(
[
f"""
<svg height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="lightgrey" stroke-width="0.5" fill="{color}" />
</svg>
"""
for color in rc.report_creator_colors
]
)
+ "</span>",
label="HTML SVG Circles of Report Creator Colors",
),
rc.Separator(),
rc.Select(
blocks=[
rc.DataTable(
px.data.gapminder().query("year == 2002").query("continent == 'Europe'"),
label="2002 European Population",
index=False,
),
rc.DataTable(px.data.iris(), label="Iris Petals", index=False),
rc.DataTable(
px.data.election(),
label="2013 Montreal Election",
index=False,
),
rc.DataTable(
px.data.medals_long(),
label="Olympic Speed Skating",
index=False,
),
rc.DataTable(
px.data.wind(),
label="Wind Intensity",
index=False,
),
],
label="Tab Group of Data Tables",
),
rc.Separator(),
rc.Select(
blocks=[
rc.Diagram(
src="""
mindmap
root((Artificial Intelligence))
subtopic1(Machine Learning)
subtopic1a(Supervised Learning)
subtopic1a1(Linear Regression)
subtopic1a2(Decision Trees)
subtopic1a3(SVM)
subtopic1b(Unsupervised Learning)
subtopic1b1(Clustering)
subtopic1b2(Dimensionality Reduction)
subtopic1c(Reinforcement Learning)
subtopic1c1(Q-Learning)
subtopic1c2(Deep Q-Networks)
subtopic1c3(Policy Gradient)
subtopic2(Neural Networks)
subtopic2a(Feedforward Networks)
subtopic2a1(Activation Functions)
subtopic2a2(Backpropagation)
subtopic2b(Recurrent Networks)
subtopic2b1(LSTM)
subtopic2b2(GRU)
subtopic2c(Convolutional Networks)
subtopic2c1(Image Classification)
subtopic2c2(Object Detection)
subtopic3(Natural Language Processing)
subtopic3a(Tokenization)
subtopic3b(Word Embeddings)
subtopic3b1(Word2Vec)
subtopic3b2(GloVe)
subtopic3c(Transformers)
subtopic3c1(BERT)
subtopic3c2(GPT)
subtopic4(Computer Vision)
subtopic4a(Image Recognition)
subtopic4b(Semantic Segmentation)
subtopic4c(Object Detection)
subtopic5(Generative Models)
subtopic5a(GANs)
subtopic5a1(Discriminator)
subtopic5a2(Generator)
subtopic5b(VAEs)
subtopic5b1(Latent Space)
subtopic5b2(Reconstruction)
subtopic6(Ethics in AI)
subtopic6a(Bias)
subtopic6b(Privacy)
subtopic6c(Transparency)
subtopic6d(Accountability)
subtopic6e(Fairness)
""",
label="Example AI Mind Map Diagram",
),
rc.Diagram(
src="""
graph LR
A[Square Rect] -- Link text --> B((Circle))
A --> C(Round Rect)
B --> D{Rhombus}
C --> D
""",
label="Example Git Graph",
),
],
label="Tab Group of Diagrams",
),
rc.Unformatted(
r"""
___________________________________
< This is an unformatted component >
-----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
""",
label="Unformatted",
),
rc.Group(
rc.Image(
"https://assets.midlibrary.io/6629522db4ea3030cf8c4f18/6629522eb4ea3030cf8c5df2_Portrait%20of%20a%20Man%20with%20a%20Medal%20of%20Cosimo%20il%20Vecchio%20de%27%20Medici%20(1475).jpg",
label="Portrait of a Man with a Medal (1475)",
link_to="https://midlibrary.io/focus/sandro-botticelli",
convert_to_base64=True,
),
rc.Image(
"https://assets.midlibrary.io/6629522db4ea3030cf8c4f18/6629522eb4ea3030cf8c5df1_Detail%20of%20The%20Spring%20(Flora)%20(late%201470s%20or%20early%201480s).jpg",
label="The Spring, Flora (late 1470s or early 1480s)",
convert_to_base64=True,
),
rc.Image(
"https://assets.midlibrary.io/6629522db4ea3030cf8c4f18/6629522eb4ea3030cf8c5df0_Idealised%20Portrait%20of%20a%20Lady%20(Portrait%20of%20Simonetta%20Vespucci%20as%20Nymph)%20(1480%E2%80%931485).jpg",
label="Portrait of Simonetta Vespucci",
convert_to_base64=True,
),
),
)
report.save(view, "index.html", prettify_html=False)
Hitchhiker's Guide to the Galaxy:
Gross profit margin:
A commonly tracked metric by finance departments that can be found on an income statement.
Accuracy:
Number of correct predictions by Total number of predictions
Recurring revenue:
Recurring revenue is the portion of a company's revenue that is predictable and stable.
Capacity utilization:
A popular productivity metric that measures the ratio of actual output to potential output.
Asset turnover ratio:
Asset turnover ratio is a financial metric that shows how efficiently a company generates revenue from its assets.
Lizzie:
Julie:
Andrea:
Successful Requests:
Not Found Requests:
Love all, trust a few, do wrong to none.
Moderate lamentation is the right of the dead, excessive grief the enemy to the living.
Something is rotten in the state of Denmark.
There are more things in heaven and earth, Horatio,
Than are dreamt of in our philosophy.
To be, or not to be, that is the question.
How all occasions do inform against me, and spur my dull revenge.
But, soft, what light through yonder window breaks?
It is the east, and Juliet is the sun.
O happy dagger,
This is thy sheath: there rust, and let me die.
For never was a story of more woe
Than this of Juliet and her Romeo.
Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice “without pictures or conversations?”
So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her.
There was nothing so very remarkable in that; nor did Alice think it so very much out of the way to hear the Rabbit say to itself, “Oh dear! Oh dear! I shall be late!” (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually took a watch out of its waistcoat-pocket, and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge.
### Example Java
public static void main(String...args) {
System.out.println(
randomString(-229985452) + ' ' + randomString(-147909649)
);
}
public static String randomString(int seed) {
Random rand = new Random(seed);
StringBuilder sb = new StringBuilder();
for (int i = 0;; i++) {
int n = rand.nextInt(27);
if (n == 0) break;
sb.append((char)('`' + n));
}
return sb.toString();
GitHub | PyPI | Documentation | Issues | Getting Started
Library to assemble reports in HTML from various components using python. Inspired by DataPane which is no longer maintained and targetted more interactive use cases.
plotly
and matplotlib
json
/yaml
/python
/java
/ptolog
code blocks with color syntax highlighting:icon-name:
, for example :pizza:
matplotlib_venn
, or SVG)logru
import report_creator as rc
with rc.ReportCreator(
title="My Report",
description="My Report Description",
footer="My Report Footer",
) as report:
view = rc.Block(
rc.Text(
"""It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of light, it was the season of darkness, it was the spring of hope, it was the winter of despair.""",
label="Charles Dickens, A Tale of Two Cities",
),
rc.Group(
rc.Metric(
heading="Answer to Life, The Universe, and Everything",
value="42",
),
rc.Metric(
heading="Author",
value="Douglas Adams",
),
),
rc.Bar(
px.data.medals_long(),
x="nation",
y="count",
dimension="medal",
label="Bar Chart - Olympic Medals",
),
rc.Scatter(
px.data.iris(),
x="sepal_width",
y="sepal_length",
dimension="species",
marginal="histogram",
label="Scatter Plot - Iris",
),
)
report.save(view, "report.html")
conda create --name rc python=3.12
conda activate rc
make setup
# recommended for code hygiene
make format
# install as a local package:
python3 -m pip install -e .
# see dependency tree:
pipdeptree --exclude pip,pipdeptree,setuptools,wheel,twine
# build examples:
make examples
# build a specific example:
make examples EXAMPLES=examples/myreport.py
# run tests
make tests
# build docs
make docs
# release new version
make release
@ show list of make targets
make targets
country | continent | year | lifeExp | pop | gdpPercap | iso_alpha | iso_num |
---|---|---|---|---|---|---|---|
Albania | Europe | 2002 | 75.65 | 3508512 | 4604.21 | ALB | 8 |
Austria | Europe | 2002 | 78.98 | 8148312 | 32417.61 | AUT | 40 |
Belgium | Europe | 2002 | 78.32 | 10311970 | 30485.88 | BEL | 56 |
Bosnia and Herzegovina | Europe | 2002 | 74.09 | 4165416 | 6018.98 | BIH | 70 |
Bulgaria | Europe | 2002 | 72.14 | 7661799 | 7696.78 | BGR | 100 |
Croatia | Europe | 2002 | 74.88 | 4481020 | 11628.39 | HRV | 191 |
Czech Republic | Europe | 2002 | 75.51 | 10256295 | 17596.21 | CZE | 203 |
Denmark | Europe | 2002 | 77.18 | 5374693 | 32166.50 | DNK | 208 |
Finland | Europe | 2002 | 78.37 | 5193039 | 28204.59 | FIN | 246 |
France | Europe | 2002 | 79.59 | 59925035 | 28926.03 | FRA | 250 |
Germany | Europe | 2002 | 78.67 | 82350671 | 30035.80 | DEU | 276 |
Greece | Europe | 2002 | 78.26 | 10603863 | 22514.25 | GRC | 300 |
Hungary | Europe | 2002 | 72.59 | 10083313 | 14843.94 | HUN | 348 |
Iceland | Europe | 2002 | 80.50 | 288030 | 31163.20 | ISL | 352 |
Ireland | Europe | 2002 | 77.78 | 3879155 | 34077.05 | IRL | 372 |
Italy | Europe | 2002 | 80.24 | 57926999 | 27968.10 | ITA | 380 |
Montenegro | Europe | 2002 | 73.98 | 720230 | 6557.19 | MNE | 499 |
Netherlands | Europe | 2002 | 78.53 | 16122830 | 33724.76 | NLD | 528 |
Norway | Europe | 2002 | 79.05 | 4535591 | 44683.98 | NOR | 578 |
Poland | Europe | 2002 | 74.67 | 38625976 | 12002.24 | POL | 616 |
Portugal | Europe | 2002 | 77.29 | 10433867 | 19970.91 | PRT | 620 |
Romania | Europe | 2002 | 71.32 | 22404337 | 7885.36 | ROU | 642 |
Serbia | Europe | 2002 | 73.21 | 10111559 | 7236.08 | SRB | 688 |
Slovak Republic | Europe | 2002 | 73.80 | 5410052 | 13638.78 | SVK | 703 |
Slovenia | Europe | 2002 | 76.66 | 2011497 | 20660.02 | SVN | 705 |
Spain | Europe | 2002 | 79.78 | 40152517 | 24835.47 | ESP | 724 |
Sweden | Europe | 2002 | 80.04 | 8954175 | 29341.63 | SWE | 752 |
Switzerland | Europe | 2002 | 80.62 | 7361757 | 34480.96 | CHE | 756 |
Turkey | Europe | 2002 | 70.84 | 67308928 | 6508.09 | TUR | 792 |
United Kingdom | Europe | 2002 | 78.47 | 59912431 | 29479.00 | GBR | 826 |
sepal_length | sepal_width | petal_length | petal_width | species | species_id |
---|---|---|---|---|---|
5.10 | 3.50 | 1.40 | 0.20 | setosa | 1 |
4.90 | 3.00 | 1.40 | 0.20 | setosa | 1 |
4.70 | 3.20 | 1.30 | 0.20 | setosa | 1 |
4.60 | 3.10 | 1.50 | 0.20 | setosa | 1 |
5.00 | 3.60 | 1.40 | 0.20 | setosa | 1 |
5.40 | 3.90 | 1.70 | 0.40 | setosa | 1 |
4.60 | 3.40 | 1.40 | 0.30 | setosa | 1 |
5.00 | 3.40 | 1.50 | 0.20 | setosa | 1 |
4.40 | 2.90 | 1.40 | 0.20 | setosa | 1 |
4.90 | 3.10 | 1.50 | 0.10 | setosa | 1 |
5.40 | 3.70 | 1.50 | 0.20 | setosa | 1 |
4.80 | 3.40 | 1.60 | 0.20 | setosa | 1 |
4.80 | 3.00 | 1.40 | 0.10 | setosa | 1 |
4.30 | 3.00 | 1.10 | 0.10 | setosa | 1 |
5.80 | 4.00 | 1.20 | 0.20 | setosa | 1 |
5.70 | 4.40 | 1.50 | 0.40 | setosa | 1 |
5.40 | 3.90 | 1.30 | 0.40 | setosa | 1 |
5.10 | 3.50 | 1.40 | 0.30 | setosa | 1 |
5.70 | 3.80 | 1.70 | 0.30 | setosa | 1 |
5.10 | 3.80 | 1.50 | 0.30 | setosa | 1 |
5.40 | 3.40 | 1.70 | 0.20 | setosa | 1 |
5.10 | 3.70 | 1.50 | 0.40 | setosa | 1 |
4.60 | 3.60 | 1.00 | 0.20 | setosa | 1 |
5.10 | 3.30 | 1.70 | 0.50 | setosa | 1 |
4.80 | 3.40 | 1.90 | 0.20 | setosa | 1 |
5.00 | 3.00 | 1.60 | 0.20 | setosa | 1 |
5.00 | 3.40 | 1.60 | 0.40 | setosa | 1 |
5.20 | 3.50 | 1.50 | 0.20 | setosa | 1 |
5.20 | 3.40 | 1.40 | 0.20 | setosa | 1 |
4.70 | 3.20 | 1.60 | 0.20 | setosa | 1 |
4.80 | 3.10 | 1.60 | 0.20 | setosa | 1 |
5.40 | 3.40 | 1.50 | 0.40 | setosa | 1 |
5.20 | 4.10 | 1.50 | 0.10 | setosa | 1 |
5.50 | 4.20 | 1.40 | 0.20 | setosa | 1 |
4.90 | 3.10 | 1.50 | 0.10 | setosa | 1 |
5.00 | 3.20 | 1.20 | 0.20 | setosa | 1 |
5.50 | 3.50 | 1.30 | 0.20 | setosa | 1 |
4.90 | 3.10 | 1.50 | 0.10 | setosa | 1 |
4.40 | 3.00 | 1.30 | 0.20 | setosa | 1 |
5.10 | 3.40 | 1.50 | 0.20 | setosa | 1 |
5.00 | 3.50 | 1.30 | 0.30 | setosa | 1 |
4.50 | 2.30 | 1.30 | 0.30 | setosa | 1 |
4.40 | 3.20 | 1.30 | 0.20 | setosa | 1 |
5.00 | 3.50 | 1.60 | 0.60 | setosa | 1 |
5.10 | 3.80 | 1.90 | 0.40 | setosa | 1 |
4.80 | 3.00 | 1.40 | 0.30 | setosa | 1 |
5.10 | 3.80 | 1.60 | 0.20 | setosa | 1 |
4.60 | 3.20 | 1.40 | 0.20 | setosa | 1 |
5.30 | 3.70 | 1.50 | 0.20 | setosa | 1 |
5.00 | 3.30 | 1.40 | 0.20 | setosa | 1 |
7.00 | 3.20 | 4.70 | 1.40 | versicolor | 2 |
6.40 | 3.20 | 4.50 | 1.50 | versicolor | 2 |
6.90 | 3.10 | 4.90 | 1.50 | versicolor | 2 |
5.50 | 2.30 | 4.00 | 1.30 | versicolor | 2 |
6.50 | 2.80 | 4.60 | 1.50 | versicolor | 2 |
5.70 | 2.80 | 4.50 | 1.30 | versicolor | 2 |
6.30 | 3.30 | 4.70 | 1.60 | versicolor | 2 |
4.90 | 2.40 | 3.30 | 1.00 | versicolor | 2 |
6.60 | 2.90 | 4.60 | 1.30 | versicolor | 2 |
5.20 | 2.70 | 3.90 | 1.40 | versicolor | 2 |
5.00 | 2.00 | 3.50 | 1.00 | versicolor | 2 |
5.90 | 3.00 | 4.20 | 1.50 | versicolor | 2 |
6.00 | 2.20 | 4.00 | 1.00 | versicolor | 2 |
6.10 | 2.90 | 4.70 | 1.40 | versicolor | 2 |
5.60 | 2.90 | 3.60 | 1.30 | versicolor | 2 |
6.70 | 3.10 | 4.40 | 1.40 | versicolor | 2 |
5.60 | 3.00 | 4.50 | 1.50 | versicolor | 2 |
5.80 | 2.70 | 4.10 | 1.00 | versicolor | 2 |
6.20 | 2.20 | 4.50 | 1.50 | versicolor | 2 |
5.60 | 2.50 | 3.90 | 1.10 | versicolor | 2 |
5.90 | 3.20 | 4.80 | 1.80 | versicolor | 2 |
6.10 | 2.80 | 4.00 | 1.30 | versicolor | 2 |
6.30 | 2.50 | 4.90 | 1.50 | versicolor | 2 |
6.10 | 2.80 | 4.70 | 1.20 | versicolor | 2 |
6.40 | 2.90 | 4.30 | 1.30 | versicolor | 2 |
6.60 | 3.00 | 4.40 | 1.40 | versicolor | 2 |
6.80 | 2.80 | 4.80 | 1.40 | versicolor | 2 |
6.70 | 3.00 | 5.00 | 1.70 | versicolor | 2 |
6.00 | 2.90 | 4.50 | 1.50 | versicolor | 2 |
5.70 | 2.60 | 3.50 | 1.00 | versicolor | 2 |
5.50 | 2.40 | 3.80 | 1.10 | versicolor | 2 |
5.50 | 2.40 | 3.70 | 1.00 | versicolor | 2 |
5.80 | 2.70 | 3.90 | 1.20 | versicolor | 2 |
6.00 | 2.70 | 5.10 | 1.60 | versicolor | 2 |
5.40 | 3.00 | 4.50 | 1.50 | versicolor | 2 |
6.00 | 3.40 | 4.50 | 1.60 | versicolor | 2 |
6.70 | 3.10 | 4.70 | 1.50 | versicolor | 2 |
6.30 | 2.30 | 4.40 | 1.30 | versicolor | 2 |
5.60 | 3.00 | 4.10 | 1.30 | versicolor | 2 |
5.50 | 2.50 | 4.00 | 1.30 | versicolor | 2 |
5.50 | 2.60 | 4.40 | 1.20 | versicolor | 2 |
6.10 | 3.00 | 4.60 | 1.40 | versicolor | 2 |
5.80 | 2.60 | 4.00 | 1.20 | versicolor | 2 |
5.00 | 2.30 | 3.30 | 1.00 | versicolor | 2 |
5.60 | 2.70 | 4.20 | 1.30 | versicolor | 2 |
5.70 | 3.00 | 4.20 | 1.20 | versicolor | 2 |
5.70 | 2.90 | 4.20 | 1.30 | versicolor | 2 |
6.20 | 2.90 | 4.30 | 1.30 | versicolor | 2 |
5.10 | 2.50 | 3.00 | 1.10 | versicolor | 2 |
5.70 | 2.80 | 4.10 | 1.30 | versicolor | 2 |
6.30 | 3.30 | 6.00 | 2.50 | virginica | 3 |
5.80 | 2.70 | 5.10 | 1.90 | virginica | 3 |
7.10 | 3.00 | 5.90 | 2.10 | virginica | 3 |
6.30 | 2.90 | 5.60 | 1.80 | virginica | 3 |
6.50 | 3.00 | 5.80 | 2.20 | virginica | 3 |
7.60 | 3.00 | 6.60 | 2.10 | virginica | 3 |
4.90 | 2.50 | 4.50 | 1.70 | virginica | 3 |
7.30 | 2.90 | 6.30 | 1.80 | virginica | 3 |
6.70 | 2.50 | 5.80 | 1.80 | virginica | 3 |
7.20 | 3.60 | 6.10 | 2.50 | virginica | 3 |
6.50 | 3.20 | 5.10 | 2.00 | virginica | 3 |
6.40 | 2.70 | 5.30 | 1.90 | virginica | 3 |
6.80 | 3.00 | 5.50 | 2.10 | virginica | 3 |
5.70 | 2.50 | 5.00 | 2.00 | virginica | 3 |
5.80 | 2.80 | 5.10 | 2.40 | virginica | 3 |
6.40 | 3.20 | 5.30 | 2.30 | virginica | 3 |
6.50 | 3.00 | 5.50 | 1.80 | virginica | 3 |
7.70 | 3.80 | 6.70 | 2.20 | virginica | 3 |
7.70 | 2.60 | 6.90 | 2.30 | virginica | 3 |
6.00 | 2.20 | 5.00 | 1.50 | virginica | 3 |
6.90 | 3.20 | 5.70 | 2.30 | virginica | 3 |
5.60 | 2.80 | 4.90 | 2.00 | virginica | 3 |
7.70 | 2.80 | 6.70 | 2.00 | virginica | 3 |
6.30 | 2.70 | 4.90 | 1.80 | virginica | 3 |
6.70 | 3.30 | 5.70 | 2.10 | virginica | 3 |
7.20 | 3.20 | 6.00 | 1.80 | virginica | 3 |
6.20 | 2.80 | 4.80 | 1.80 | virginica | 3 |
6.10 | 3.00 | 4.90 | 1.80 | virginica | 3 |
6.40 | 2.80 | 5.60 | 2.10 | virginica | 3 |
7.20 | 3.00 | 5.80 | 1.60 | virginica | 3 |
7.40 | 2.80 | 6.10 | 1.90 | virginica | 3 |
7.90 | 3.80 | 6.40 | 2.00 | virginica | 3 |
6.40 | 2.80 | 5.60 | 2.20 | virginica | 3 |
6.30 | 2.80 | 5.10 | 1.50 | virginica | 3 |
6.10 | 2.60 | 5.60 | 1.40 | virginica | 3 |
7.70 | 3.00 | 6.10 | 2.30 | virginica | 3 |
6.30 | 3.40 | 5.60 | 2.40 | virginica | 3 |
6.40 | 3.10 | 5.50 | 1.80 | virginica | 3 |
6.00 | 3.00 | 4.80 | 1.80 | virginica | 3 |
6.90 | 3.10 | 5.40 | 2.10 | virginica | 3 |
6.70 | 3.10 | 5.60 | 2.40 | virginica | 3 |
6.90 | 3.10 | 5.10 | 2.30 | virginica | 3 |
5.80 | 2.70 | 5.10 | 1.90 | virginica | 3 |
6.80 | 3.20 | 5.90 | 2.30 | virginica | 3 |
6.70 | 3.30 | 5.70 | 2.50 | virginica | 3 |
6.70 | 3.00 | 5.20 | 2.30 | virginica | 3 |
6.30 | 2.50 | 5.00 | 1.90 | virginica | 3 |
6.50 | 3.00 | 5.20 | 2.00 | virginica | 3 |
6.20 | 3.40 | 5.40 | 2.30 | virginica | 3 |
5.90 | 3.00 | 5.10 | 1.80 | virginica | 3 |
district | Coderre | Bergeron | Joly | total | winner | result | district_id |
---|---|---|---|---|---|---|---|
101-Bois-de-Liesse | 2481 | 1829 | 3024 | 7334 | Joly | plurality | 101 |
102-Cap-Saint-Jacques | 2525 | 1163 | 2675 | 6363 | Joly | plurality | 102 |
11-Sault-au-Récollet | 3348 | 2770 | 2532 | 8650 | Coderre | plurality | 11 |
111-Mile-End | 1734 | 4782 | 2514 | 9030 | Bergeron | majority | 111 |
112-DeLorimier | 1770 | 5933 | 3044 | 10747 | Bergeron | majority | 112 |
113-Jeanne-Mance | 1455 | 3599 | 2316 | 7370 | Bergeron | plurality | 113 |
12-Saint-Sulpice | 3252 | 2521 | 2543 | 8316 | Coderre | plurality | 12 |
121-La Pointe-aux-Prairies | 5456 | 1760 | 3330 | 10546 | Coderre | majority | 121 |
122-Pointe-aux-Trembles | 4734 | 1879 | 2852 | 9465 | Coderre | majority | 122 |
123-Rivière-des-Prairies | 5737 | 958 | 1656 | 8351 | Coderre | majority | 123 |
13-Ahuntsic | 2979 | 3430 | 2873 | 9282 | Bergeron | plurality | 13 |
131-Saint-Édouard | 1827 | 6408 | 2815 | 11050 | Bergeron | majority | 131 |
132-Étienne-Desmarteau | 2331 | 5748 | 2788 | 10867 | Bergeron | majority | 132 |
133-Vieux-Rosemont | 2670 | 4962 | 3234 | 10866 | Bergeron | plurality | 133 |
134-Marie-Victorin | 3673 | 3155 | 2431 | 9259 | Coderre | plurality | 134 |
14-Bordeaux-Cartierville | 3612 | 1554 | 2081 | 7247 | Coderre | plurality | 14 |
141-Côte-de-Liesse | 4308 | 1320 | 3959 | 9587 | Coderre | plurality | 141 |
142-Norman-McLaren | 4104 | 1459 | 2822 | 8385 | Coderre | plurality | 142 |
151-Saint-Léonard-Est | 3931 | 882 | 1641 | 6454 | Coderre | majority | 151 |
152-Saint-Léonard-Ouest | 5387 | 1184 | 1908 | 8479 | Coderre | majority | 152 |
161-Saint-HenriPetite-BourgognePointe-Saint-Charles | 2432 | 3368 | 3578 | 9378 | Joly | plurality | 161 |
162-Saint-PaulÉmard | 2566 | 2092 | 2438 | 7096 | Coderre | plurality | 162 |
171-ChamplainL'Île-des-Soeurs | 3347 | 2562 | 3291 | 9200 | Coderre | plurality | 171 |
172-Desmarchais-Crawford | 2476 | 2631 | 2849 | 7956 | Joly | plurality | 172 |
181-Peter-McGill | 1451 | 754 | 1894 | 4099 | Joly | plurality | 181 |
182-Saint-Jacques | 1906 | 2169 | 2282 | 6357 | Joly | plurality | 182 |
183-Sainte-Marie | 1347 | 2827 | 2271 | 6445 | Bergeron | plurality | 183 |
191-Saint-Michel | 3668 | 984 | 1220 | 5872 | Coderre | majority | 191 |
192-François-Perrault | 2878 | 2666 | 2039 | 7583 | Coderre | plurality | 192 |
193-Villeray | 2201 | 5819 | 2782 | 10802 | Bergeron | majority | 193 |
194-Parc-Extension | 2420 | 1793 | 1402 | 5615 | Coderre | plurality | 194 |
21-Ouest | 2184 | 691 | 1076 | 3951 | Coderre | majority | 21 |
22-Est | 1589 | 708 | 1172 | 3469 | Coderre | plurality | 22 |
23-Centre | 2526 | 851 | 1286 | 4663 | Coderre | majority | 23 |
31-Darlington | 1873 | 1182 | 1232 | 4287 | Coderre | plurality | 31 |
32-Côte-des-Neiges | 1644 | 1950 | 1578 | 5172 | Bergeron | plurality | 32 |
33-Snowdon | 1548 | 1503 | 1636 | 4687 | Joly | plurality | 33 |
34-Notre-Dame-de-Grâce | 1773 | 2653 | 3262 | 7688 | Joly | plurality | 34 |
35-Loyola | 2040 | 1437 | 2648 | 6125 | Joly | plurality | 35 |
41-du Canal | 1165 | 832 | 1266 | 3263 | Joly | plurality | 41 |
42-J.-Émery-Provost | 1193 | 653 | 1157 | 3003 | Coderre | plurality | 42 |
43-Fort-Rolland | 1325 | 1205 | 1908 | 4438 | Joly | plurality | 43 |
51-Sault-Saint-Louis | 4201 | 1642 | 3717 | 9560 | Coderre | plurality | 51 |
52-Cecil-P.-Newman | 3536 | 1330 | 2943 | 7809 | Coderre | plurality | 52 |
61-Pierre-Foretier | 631 | 258 | 998 | 1887 | Joly | majority | 61 |
62-Denis-Benjamin-Viger | 595 | 226 | 1068 | 1889 | Joly | majority | 62 |
63-Jacques-Bizard | 518 | 224 | 690 | 1432 | Joly | plurality | 63 |
64-Sainte-Geneviève | 332 | 131 | 326 | 789 | Coderre | plurality | 64 |
71-Tétreaultville | 3694 | 2589 | 3454 | 9737 | Coderre | plurality | 71 |
72-MaisonneuveLongue-Pointe | 2746 | 3250 | 3139 | 9135 | Bergeron | plurality | 72 |
73-Hochelaga | 1546 | 3679 | 2675 | 7900 | Bergeron | plurality | 73 |
74-Louis-Riel | 3509 | 2178 | 2338 | 8025 | Coderre | plurality | 74 |
81-Marie-Clarac | 6591 | 1085 | 1435 | 9111 | Coderre | majority | 81 |
82-Ovide-Clermont | 6229 | 780 | 1051 | 8060 | Coderre | majority | 82 |
91-Claude-Ryan | 996 | 643 | 423 | 2062 | Coderre | plurality | 91 |
92-Joseph-Beaubien | 540 | 833 | 592 | 1965 | Bergeron | plurality | 92 |
93-Robert-Bourassa | 446 | 465 | 419 | 1330 | Bergeron | plurality | 93 |
94-Jeanne-Sauvé | 491 | 698 | 489 | 1678 | Bergeron | plurality | 94 |
nation | medal | count |
---|---|---|
South Korea | gold | 24 |
China | gold | 10 |
Canada | gold | 9 |
South Korea | silver | 13 |
China | silver | 15 |
Canada | silver | 12 |
South Korea | bronze | 11 |
China | bronze | 8 |
Canada | bronze | 12 |
direction | strength | frequency |
---|---|---|
N | 0-1 | 0.50 |
NNE | 0-1 | 0.60 |
NE | 0-1 | 0.50 |
ENE | 0-1 | 0.40 |
E | 0-1 | 0.40 |
ESE | 0-1 | 0.30 |
SE | 0-1 | 0.40 |
SSE | 0-1 | 0.40 |
S | 0-1 | 0.60 |
SSW | 0-1 | 0.40 |
SW | 0-1 | 0.50 |
WSW | 0-1 | 0.60 |
W | 0-1 | 0.60 |
WNW | 0-1 | 0.50 |
NW | 0-1 | 0.40 |
NNW | 0-1 | 0.10 |
N | 1-2 | 1.60 |
NNE | 1-2 | 1.80 |
NE | 1-2 | 1.50 |
ENE | 1-2 | 1.60 |
E | 1-2 | 1.60 |
ESE | 1-2 | 1.20 |
SE | 1-2 | 1.50 |
SSE | 1-2 | 1.70 |
S | 1-2 | 2.20 |
SSW | 1-2 | 2.00 |
SW | 1-2 | 2.30 |
WSW | 1-2 | 2.40 |
W | 1-2 | 2.30 |
WNW | 1-2 | 2.60 |
NW | 1-2 | 2.30 |
NNW | 1-2 | 0.80 |
N | 2-3 | 0.90 |
NNE | 2-3 | 1.30 |
NE | 2-3 | 1.60 |
ENE | 2-3 | 0.90 |
E | 2-3 | 1.00 |
ESE | 2-3 | 0.60 |
SE | 2-3 | 0.60 |
SSE | 2-3 | 0.90 |
S | 2-3 | 1.40 |
SSW | 2-3 | 1.70 |
SW | 2-3 | 1.90 |
WSW | 2-3 | 2.20 |
W | 2-3 | 1.80 |
WNW | 2-3 | 1.70 |
NW | 2-3 | 1.80 |
NNW | 2-3 | 0.80 |
N | 3-4 | 0.90 |
NNE | 3-4 | 0.80 |
NE | 3-4 | 1.20 |
ENE | 3-4 | 1.00 |
E | 3-4 | 0.80 |
ESE | 3-4 | 0.40 |
SE | 3-4 | 0.50 |
SSE | 3-4 | 0.50 |
S | 3-4 | 0.80 |
SSW | 3-4 | 0.90 |
SW | 3-4 | 1.30 |
WSW | 3-4 | 1.10 |
W | 3-4 | 1.20 |
WNW | 3-4 | 1.20 |
NW | 3-4 | 1.30 |
NNW | 3-4 | 1.00 |
N | 4-4 | 0.40 |
NNE | 4-4 | 0.50 |
NE | 4-4 | 1.20 |
ENE | 4-4 | 0.50 |
E | 4-4 | 0.40 |
ESE | 4-4 | 0.20 |
SE | 4-4 | 0.40 |
SSE | 4-4 | 0.40 |
S | 4-4 | 0.70 |
SSW | 4-4 | 0.60 |
SW | 4-4 | 0.70 |
WSW | 4-4 | 0.80 |
W | 4-4 | 0.90 |
WNW | 4-4 | 1.00 |
NW | 4-4 | 1.00 |
NNW | 4-4 | 0.70 |
N | 4-5 | 0.30 |
NNE | 4-5 | 0.30 |
NE | 4-5 | 0.60 |
ENE | 4-5 | 0.20 |
E | 4-5 | 0.10 |
ESE | 4-5 | 0.10 |
SE | 4-5 | 0.05 |
SSE | 4-5 | 0.10 |
S | 4-5 | 0.10 |
SSW | 4-5 | 0.20 |
SW | 4-5 | 0.30 |
WSW | 4-5 | 0.40 |
W | 4-5 | 0.90 |
WNW | 4-5 | 0.90 |
NW | 4-5 | 0.90 |
NNW | 4-5 | 0.30 |
N | 5-6 | 0.20 |
NNE | 5-6 | 0.10 |
NE | 5-6 | 0.10 |
ENE | 5-6 | 0.10 |
E | 5-6 | 0.10 |
ESE | 5-6 | 0.10 |
SE | 5-6 | 0.05 |
SSE | 5-6 | 0.05 |
S | 5-6 | 0.10 |
SSW | 5-6 | 0.05 |
SW | 5-6 | 0.20 |
WSW | 5-6 | 0.20 |
W | 5-6 | 0.40 |
WNW | 5-6 | 0.70 |
NW | 5-6 | 0.70 |
NNW | 5-6 | 0.40 |
N | 6+ | 0.10 |
NNE | 6+ | 0.10 |
NE | 6+ | 0.10 |
ENE | 6+ | 0.10 |
E | 6+ | 0.10 |
ESE | 6+ | 0.05 |
SE | 6+ | 0.05 |
SSE | 6+ | 0.05 |
S | 6+ | 0.05 |
SSW | 6+ | 0.10 |
SW | 6+ | 0.10 |
WSW | 6+ | 0.10 |
W | 6+ | 0.90 |
WNW | 6+ | 2.20 |
NW | 6+ | 1.50 |
NNW | 6+ | 0.20 |
___________________________________
< This is an unformatted component >
-----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||