KS

Kitchen Sink

All the things


Code (kitchen_sink.py) to create this report
kitchen_sink.py

import logging
import textwrap

import pandas as pd
import plotly.express as px

import report_creator as rc

logging.basicConfig(level=logging.DEBUG)


if __name__ == "__main__":
    # set up of example text, plots and dataframes
    df1 = pd.DataFrame(
        {
            "Name": ["Alice", "Bob", "Eva"],
            "Age": [25, 30, 35],
            "City": ["New York", "Los Angeles", "Chicago"],
            "Salary": [70000, 85000, 95000],
        }
    )
    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("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](https://github.com/darenr/report_creator) (v{rc.__version__}), `pip install report-creator` :cat_face:",
        flat_look=True,
    ) as report:
        view = rc.Block(
            rc.Collapse(
                rc.Code(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.Group(
                rc.Metric(
                    heading="System Processor Load",
                    value=72.5,
                    unit="%",
                    label="Current CPU utilization across all cores",
                    gauge={"min_value": 0, "max_value": 100, "color": "red"},
                ),
                rc.Metric(
                    heading="Memory Usage",
                    value=4.2,
                    unit="GB",
                    label="Available physical memory",
                    gauge={"min_value": 0, "max_value": 16, "color": "green"},
                ),
            ),
            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/example-public-logs.csv"),
                    condition="status == 200",
                    date="time",
                    color="green",
                    frequency="B",
                ),
                rc.EventMetric(
                    pd.read_csv("examples/example-public-logs.csv"),
                    condition="status == 404",
                    date="time",
                    frequency="B",
                    heading="Not Found (404) Requests",
                ),
                label="Log File Metrics",
            ),
            rc.Group(
                rc.Timeline(
                pd.DataFrame({
                    "task":   ["Design", "Development", "Testing", "Deploy"],
                    "start":  pd.to_datetime(["2024-01-01", "2024-01-15", "2024-02-01", "2024-02-15"]),
                    "finish": pd.to_datetime(["2024-01-14", "2024-01-31", "2024-02-14", "2024-02-28"]),
                    "team":   ["Engineering", "Engineering", "QA", "DevOps"],
                }),
                task="task",
                start="start",
                finish="finish",
                dimension="team",
                label="Q1 Project Plan",
            ), label="Timeline"),
            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="Pale Blue Dot (1994) by Carl Sagan",
                sublabel="For all the software engineers that have been inspired by Carl Sagan's words to pursue a career in computer science and engineering, many of which I consider to be friends and colleagues. This is for you.",
            ),
            rc.Group(
                rc.Java(
                    textwrap.dedent("""
                    public class HelloWorld {
                        public static void main(String[] args) {
                            // Print "Hello, World!" to the console
                            System.out.println("Hello, World!");
                        }
                    }
                    """),
                    label="Java",
                ),
                rc.Prolog(
                    textwrap.dedent("""
                    % Define a rule to display the message
                    hello_world :- 
                        write('Hello, World!'), nl.

                    % To run, consult the file and call the rule:
                    % ?- hello_world.
                    """),
                    label="Prolog",
                ),
            ),
            rc.Group(
                rc.Sql(
                    textwrap.dedent("""
                    -- Example SQL
                    SELECT
                        ename,
                        DECODE(deptno,
                            10, 'Accounting',
                            20, 'Research',
                            30, 'Sales',
                            40, 'Operations',
                        ) AS department_name
                    FROM
                        scott.emp;
                    """),
                    label="SQL",
                ),
                rc.Json(
                    textwrap.dedent("""
                    {
                        "name": "Alice",
                        "age": 25,
                        "city": "Wonderland",
                        "hobbies": ["reading", "adventures", "tea parties", "cats"]
                    }
                    """),
                    label="JSON",
                ),
            ),
            rc.Separator(),
            rc.Group(
                rc.Info("This is an **info** callout! You can use standard *Markdown* here too.", label="Info Callout"),
                rc.Warning("This is a **warning** callout! Beware of dragons and failing pipelines.", label="Warning Callout"),
                rc.Error("This is an **error** callout! Something went terribly wrong.", label="Error Callout"),
            ),
            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="2002 Population of European continent",
                ),
                rc.Pie(
                    px.data.gapminder().query("year == 2002").query("continent == 'Americas'"),
                    values="pop",
                    names="country",
                    label="2002 Population of American continent",
                ),
            ),
            rc.Group(
                rc.Histogram(
                    px.data.tips(),
                    x="total_bill",
                    dimension="sex",
                    label="Total Bill by Sex",
                ),
                rc.Box(
                    px.data.tips(),
                    y="total_bill",
                    dimension="day",
                    label="Total Bill by Day of Week",
                ),
            ),
            rc.Select(
                blocks=[
                    rc.Bar(
                        px.data.medals_long(),
                        x="nation",
                        y="count",
                        dimension="medal",
                        label="Olympic Medals",
                    ),
                    rc.Scatter(
                        df=px.data.iris(),
                        x="sepal_width",
                        y="sepal_length",
                        dimension="species",
                        marginal="histogram",
                        label="Iris Scatter Plot with Marginal Histograms",
                    ),
                ],
                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
                """,
                        pan_and_zoom=False,
                        label="Example Git Graph",
                    ),
                ],
                label="Tab Group of Diagrams",
            ),
            rc.Separator(),
            rc.Radar(
                df=pd.DataFrame(
                    {
                        "Llama3.1": {
                            "MMLU (Accuracy)": 0.72,
                            "TruthfulQA (Accuracy)": 0.65,
                            "Winogrande (Accuracy)": 0.85,
                            "ARC-Challenge (Accuracy)": 0.48,
                            "ARC-Easy (Accuracy)": 0.78,
                            "CommonsenseQA (Accuracy)": 0.68,
                            "BoolQ (Accuracy)": 0.80,
                            "CB (Accuracy)": 0.88,
                            "COPA (Accuracy)": 0.95,
                            "WiC (Accuracy)": 0.75,
                            "ReCoRD (F1)": 0.72,
                            "RACE-h (Accuracy)": 0.60,
                            "RACE-m (Accuracy)": 0.65,
                        },
                        "Llama3.2": {  # Example of a second model
                            "MMLU (Accuracy)": 0.75,
                            "TruthfulQA (Accuracy)": 0.68,
                            "Winogrande (Accuracy)": 0.88,
                            "ARC-Challenge (Accuracy)": 0.52,
                            "ARC-Easy (Accuracy)": 0.81,
                            "CommonsenseQA (Accuracy)": 0.71,
                            "BoolQ (Accuracy)": 0.83,
                            "CB (Accuracy)": 0.90,
                            "COPA (Accuracy)": 0.97,
                            "WiC (Accuracy)": 0.78,
                            "ReCoRD (F1)": 0.75,
                            "RACE-h (Accuracy)": 0.63,
                            "RACE-m (Accuracy)": 0.68,
                        },
                    }
                ).T,
                lock_minimum_to_zero=True,
                filled=False,
                label="Radar Chart of Model Performance",
            ),
            rc.Unformatted(
                r"""
 ___________________________________
< This is an unformatted component >
 -----------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
""",
                label="Unformatted",
            ),
            rc.Group(
                rc.Image(
                    "https://placehold.co/600x400/000000/FF5733.png",
                    label="Placeholder Image 1",
                    link_to="https://placehold.co",
                    convert_to_base64=True,
                ),
                rc.Image(
                    "https://placehold.co/600x400/000000/33FF57.png",
                    label="Placeholder Image 2",
                    convert_to_base64=True,
                ),
                rc.Image(
                    "https://placehold.co/600x400/000000/3357FF.png",
                    label="Placeholder Image 3",
                    convert_to_base64=True,
                ),
            ),
            rc.Separator(),
            rc.Gallery(
                [
                    f"https://placehold.co/600x400/{rc.report_creator_colors[i%len(rc.report_creator_colors)][1:]}/fff.png" for i in range(1, 7)
                ],
                labels=[f"Random Image {i}" for i in range(1, 7)],
                label="Gallery Component",
                convert_to_base64=True
            ),
        )

        report.save(view, "examples/kitchen_sink.html", prettify_html=False)
Grouped Metrics

Hitchhiker's Guide to the Galaxy:

Don't Panic

Gross profit margin:

65%

A commonly tracked metric by finance departments that can be found on an income statement.

Accuracy:

0.95

Number of correct predictions by Total number of predictions

Recurring revenue:

$10.7B

Recurring revenue is the portion of a company's revenue that is predictable and stable.

Capacity utilization:

42%

A popular productivity metric that measures the ratio of actual output to potential output.

Asset turnover ratio:

3.3

Asset turnover ratio is a financial metric that shows how efficiently a company generates revenue from its assets.

System Processor Load:

72.5%

Current CPU utilization across all cores

Memory Usage:

4.2GB

Available physical memory




Metrics Group from DataFrame

Alice:

25

Bob:

30

Eva:

35

Table of DataFrame
Name Age City Salary
Alice 25 New York 70000
Bob 30 Los Angeles 85000
Eva 35 Chicago 95000
Log File Metrics

status == 200:

2717

Not Found (404) Requests:

208

Timeline
Accordion
All's Well That Ends Well
All's Well That Ends Well

Love all, trust a few, do wrong to none.

Moderate lamentation is the right of the dead, excessive grief the enemy to the living.

Hamlet
Hamlet

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.

Romeo and Juliet
Romeo and Juliet

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.

Pale Blue Dot (1994) by Carl Sagan

For all the software engineers that have been inspired by Carl Sagan's words to pursue a career in computer science and engineering, many of which I consider to be friends and colleagues. This is for you.

... Look again at that dot. That's here. That's home. That's us. On it everyone you love, everyone you know, everyone you ever heard of, every human being who ever was, lived out their lives. The aggregate of our joy and suffering, thousands of confident religions, ideologies, and economic doctrines, every hunter and forager, every hero and coward, every creator and destroyer of civilization, every king and peasant, every young couple in love, every mother and father, hopeful child, inventor and explorer, every teacher of morals, every corrupt politician, every "superstar," every "supreme leader," every saint and sinner in the history of our species lived there - on a mote of dust suspended in a sunbeam.

The Earth is a very small stage in a vast cosmic arena. Think of the rivers of blood spilled by all those generals and emperors, so that, in glory and triumph, they could become the momentary masters of a fraction of a dot. Think of the endless cruelties visited by the inhabitants of one corner of this pixel on the scarcely distinguishable inhabitants of some other corner, how frequent their misunderstandings, how eager they are to kill one another, how fervent their hatreds. Our posturings, our imagined self-importance, the delusion that we have some privileged position in the Universe, are challenged by this point of pale light.

Our planet is a lonely speck in the great enveloping cosmic dark. In our obscurity, in all this vastness, there is no hint that help will come from elsewhere to save us from ourselves.

The Earth is the only world known so far to harbor life. There is nowhere else, at least in the near future, to which our species could migrate. Visit, yes. Settle, not yet. Like it or not, for the moment the Earth is where we make our stand.

It has been said that astronomy is a humbling and character building experience. There is perhaps no better demonstration of the folly of human conceits than this distant image of our tiny world. To me, it underscores our responsibility to deal more kindly with one another, and to preserve and cherish the pale blue dot, the only home we've ever known.

Java

public class HelloWorld {
    public static void main(String[] args) {
        // Print "Hello, World!" to the console
        System.out.println("Hello, World!");
    }
}
Prolog

% Define a rule to display the message
hello_world :- 
    write('Hello, World!'), nl.

% To run, consult the file and call the rule:
% ?- hello_world.
SQL

-- Example SQL
SELECT
    ename,
    DECODE(deptno,
        10, 'Accounting',
        20, 'Research',
        30, 'Sales',
        40, 'Operations',
    ) AS department_name
FROM
    scott.emp;
JSON

{
  "name": "Alice",
  "age": 25,
  "city": "Wonderland",
  "hobbies": [
    "reading",
    "adventures",
    "tea parties",
    "cats"
  ]
}



Info Callout

Note

This is an info callout! You can use standard Markdown here too.

Warning Callout

Warning

This is a warning callout! Beware of dragons and failing pipelines.

Error Callout

Error

This is an error callout! Something went terribly wrong.




README.md

Report Creator

PyPI Version Python Versions

GitHub Actions Workflow Status Read the Docs

License

GitHub | PyPI | Documentation | Issues | Getting Started

Library to assemble reports in HTML from various components using python. This is not meant to be a replacement for do-it-yourself HTML, it's a tool to put together professional looking reports from python easily and quickly. The philosophy for layout is that components flow in either the horizontal (rc.Group()) or Vertical (rc.Block()) direction.

New in v1.2.5 create slide decks using rc.Deck() and rc.Slide() components. See the Deck example.

Talk to this repo using DeepWiki Report Creator

Use the documentation in Cursor, Windsurf, Claude Desktop or another MCP Client via the Context7 MCP for example

Create an html report on this dataframe, use context7

Features

Data & Visualization

  • Deep Pandas Integration: Native support for DataFrames in Table, DataTable (searcheable/sortable), and Metric components.
  • Interactive Plotting: Full support for Plotly figures with a custom theme for professional-looking charts by default.
  • Matplotlib & Seaborn: Automatic detection and rendering of Matplotlib and Seaborn objects, with consistent styling using a context manager.
  • Specialized Charts: Built-in components for Radar charts, Bar, Line, Pie, Scatter, Box, and Histogram.
  • Advanced Metrics: Metric and MetricGroup for KPI displays, including EventMetric for time-series frequency analysis.

Content & Layout

  • Rich Layout System: Flexible report structuring using rc.Block() (vertical) and rc.Group() (horizontal) stacks.
  • Modern UI Components: Interactive elements like Accordion/Collapse sections and Select tabbed interfaces.
  • Superior Markdown: Full GitHub Flavored Markdown (GFM) support, including Emojis, Math (LaTeX), and RST directives.
  • Diagrams as Code: Native Mermaid.js support for flowcharts, sequence diagrams, and more, with built-in pan and zoom.

Technical Capabilities

  • Syntax Highlighting: Code blocks with support for multiple languages including Sql, Python, Yaml, and Json.
  • SQL Prettifier: Heuristic formatting for SQL queries to improve readability in reports.
  • Smart Media Handling: Images and Galleries can be local, remote (fetched at build time), or Base64 encoded, with automatic styling.
  • Self-Contained Output: Generates standalone HTML files that bundle only the required JavaScript dependencies (Plotly, DataTables, etc.).
  • Deterministic Styling: Automatic, repeatable color generation for headings and labels to ensure visual consistency.

Example

import report_creator as rc

with rc.ReportCreator(
    title="My Report",
    description="My Report Description",
    footer="My Report Footer",
    accent_color="red",
) 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")

Development

This project has been configured for Claude Clode. These are entirely optional to use for development.

conda create -n rc -c conda-forge python=3.13
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 doc
make doc

# release new version
make release

# show list of make targets
make targets

Get in touch

This project is under active development

rc.Widget() of a Plotly Figure



Tabbed Plots



HTML SVG Circles of Report Creator Colors



Tab Group of Data Tables

2002 European Population
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

Iris Petals
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

2013 Montreal Election
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

Olympic Speed Skating
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

Wind Intensity
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



Tab Group of Diagrams
Example AI Mind Map Diagram
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)
pan (mouse drag) and zoom (shift + mouse wheel) (reset)
Example Git Graph
graph LR
                        A[Square Rect] -- Link text --> B((Circle))
                        A --> C(Round Rect)
                        B --> D{Rhombus}
                        C --> D



Unformatted
___________________________________
< This is an unformatted component >
 -----------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
Placeholder Image 1
Placeholder Image 1
Placeholder Image 2
Placeholder Image 2
Placeholder Image 3
Placeholder Image 3