{"id":13475091,"url":"https://github.com/yuankunzhang/charming","last_synced_at":"2025-05-13T15:10:08.326Z","repository":{"id":177591878,"uuid":"660253968","full_name":"yuankunzhang/charming","owner":"yuankunzhang","description":"A visualization library for Rust","archived":false,"fork":false,"pushed_at":"2025-05-11T10:03:10.000Z","size":2145,"stargazers_count":2148,"open_issues_count":16,"forks_count":87,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-05-11T11:19:06.509Z","etag":null,"topics":["chart","data-science","rust","visualization","webassembly"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuankunzhang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-29T15:28:29.000Z","updated_at":"2025-05-11T10:03:13.000Z","dependencies_parsed_at":"2024-02-17T23:31:47.024Z","dependency_job_id":"ffce0414-4b0d-4351-89f9-2e394d6e29b2","html_url":"https://github.com/yuankunzhang/charming","commit_stats":{"total_commits":226,"total_committers":19,"mean_commits":"11.894736842105264","dds":0.4070796460176991,"last_synced_commit":"b67605f31e5a01dbe83877ee0a4a1b378e75a000"},"previous_names":["yuankunzhang/echarts-rs","yuankunzhang/charming"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuankunzhang%2Fcharming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuankunzhang%2Fcharming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuankunzhang%2Fcharming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuankunzhang%2Fcharming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuankunzhang","download_url":"https://codeload.github.com/yuankunzhang/charming/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253969247,"owners_count":21992263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chart","data-science","rust","visualization","webassembly"],"created_at":"2024-07-31T16:01:17.268Z","updated_at":"2025-05-13T15:10:03.302Z","avatar_url":"https://github.com/yuankunzhang.png","language":"Rust","funding_links":[],"categories":["Rust","Scientific Computation","data-science","Data Science"],"sub_categories":["Visualization"],"readme":"# Charming - A Rust Visualization Library\n\n[![crates.io](https://img.shields.io/crates/v/charming.svg)](https://crates.io/crates/charming)\n[![docs.rs](https://docs.rs/charming/badge.svg)](https://docs.rs/charming)\n\nCharming is a powerful and versatile chart rendering library for Rust that leverages the power of [Apache ECharts](https://echarts.apache.org/en/index.html) to deliver high-quality data visualizations. Built with the Rust programming language, this library aims to provide the Rust ecosystem with an intuitive and effective way to generate and visualize charts, using a declarative and user-friendly API.\n\nHighlights:\n\n- Easy-to-use, declaritive API.\n- Abundant chart types with rich and customizable chart themes and styles.\n- Ready to use in WebAssembly environments.\n- Rendering to multiple formats, including HTML, SVG, PNG, JPEG, GIF, WEBP, PNM, TIFF, TGA, DDS, BMP, ICO, HDR, OPENEXR, FARBFELD, AVIF, and QOI.\n\n## Themes\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/default.png\" alt=\"Default\" /\u003e\u003cp align=\"center\"\u003eDefault\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/dark.png\" alt=\"Dark\" /\u003e\u003cp align=\"center\"\u003eDark\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/vintage.png\" alt=\"Vintage\" /\u003e\u003cp align=\"center\"\u003eVintage\u003c/p\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/westeros.png\" alt=\"Westeros\" /\u003e\u003cp align=\"center\"\u003eWesteros\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/essos.png\" alt=\"Essos\" /\u003e\u003cp align=\"center\"\u003eEssos\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/wonderland.png\" alt=\"Wonderland\" /\u003e\u003cp align=\"center\"\u003eWonderland\u003c/p\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/walden.png\" alt=\"Walden\" /\u003e\u003cp align=\"center\"\u003eWalden\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/chalk.png\" alt=\"Chalk\" /\u003e\u003cp align=\"center\"\u003eChalk\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/infographic.png\" alt=\"Infographic\" /\u003e\u003cp align=\"center\"\u003eInfographic\u003c/p\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/macarons.png\" alt=\"Macarons\" /\u003e\u003cp align=\"center\"\u003eMacarons\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/roma.png\" alt=\"Roma\" /\u003e\u003cp align=\"center\"\u003eRoma\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/shine.png\" alt=\"Shine\" /\u003e\u003cp align=\"center\"\u003eShine\u003c/p\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/purple-passion.png\" alt=\"Purple Passion\" /\u003e\u003cp align=\"center\"\u003ePurple Passion\u003c/p\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./img/theme/halloween.png\" alt=\"Halloween\" /\u003e\u003cp align=\"center\"\u003eHalloween\u003c/p\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\nFuture versions of Charming will support custom themes.\n\n## Basic Usage\n\nAdd charming as a dependency:\n\n```sh\n$ cargo add charming\n```\n\nRefer to the documentation of the [`Chart`](https://docs.rs/charming/latest/charming/struct.Chart.html) struct for how to create a chart with various components.\n\nOnce you create a chart, you can render it into various format. Charming provides three types of renderers:\n\n- **HTML renderer**: `HtmlRenderer` renders a chart into an HTML fragments and offloads the actual rendering to user's web browser for an interactive, seamless experience. This renderer is useful when you want to render a chart on the client side, e.g., in a web application.\n- **Image renderer**: `ImageRenderer` renders a chart into an image file. This renderer makes use of an embed [deno_core](https://github.com/denoland/deno_core) engine to execute the JavaScript code of Echarts and generate an image file. This renderer is disabled by default, and you need to enable the `ssr` (Server-Side Rendering) feature to use it.\n- **WASM renderer**: `WasmRenderer` renders a chart in a WebAssembly runtime. This renderer is disabled by default, and you need to enable the `wasm` feature to use it. **Note that the `wasm` feature and `ssr` feature are mutually exclusive**.\n\nHere is an example of drawing a simple pie chart into an SVG file:\n\n```rust\nuse charming::{\n    component::Legend,\n    element::ItemStyle,\n    series::{Pie, PieRoseType},\n    Chart, ImageRenderer\n};\n\nfn main() {\n    let chart = Chart::new()\n        .legend(Legend::new().top(\"bottom\"))\n        .series(\n            Pie::new()\n                .name(\"Nightingale Chart\")\n                .rose_type(PieRoseType::Radius)\n                .radius(vec![\"50\", \"250\"])\n                .center(vec![\"50%\", \"50%\"])\n                .item_style(ItemStyle::new().border_radius(8))\n                .data(vec![\n                    (40.0, \"rose 1\"),\n                    (38.0, \"rose 2\"),\n                    (32.0, \"rose 3\"),\n                    (30.0, \"rose 4\"),\n                    (28.0, \"rose 5\"),\n                    (26.0, \"rose 6\"),\n                    (22.0, \"rose 7\"),\n                    (18.0, \"rose 8\"),\n                ]),\n        );\n\n    let mut renderer = ImageRenderer::new(1000, 800);\n    renderer.save(\u0026chart, \"/tmp/nightingale.svg\");\n}\n```\n\nThis code creates the following SVG file:\n\n![](img/nightingale.svg)\n\nAs another example, the code file [gallery/src/dataset/encode_and_matrix.rs](./gallery/src/dataset/encode_and_matrix.rs) draws a complex chart with four sub-charts:\n\n![](img/encode-and-matrix.svg)\n\n### MSRV\n\nWe do not provide any minimal supported Rust version and it is usually the latest stable release as the deno dependency upgrades their version very frequently.\n\n### Crate Feature Flags\n\nThe following two feature flags are available, **note that they can't be used together**:\n\n- `ssr` - Enables the `ImageRenderer`, which provides the capability to generate image files.\n- `wasm` - Enables the `WasmRenderer`, which provides the capability to render charts in WebAssembly runtime.\n\n### Renderers\n\n```rs\n// Use HtmlRenderer.\nuse charming::HtmlRenderer;\n\n// Chart dimension 1000x800.\nlet renderer = HtmlRenderer::new(\"my charts\", 1000, 800);\n// Render the chart as HTML string.\nlet html_str = renderer.render(\u0026chart).unwrap();\n// Save the chart as HTML file.\nrenderer.save(\u0026chart, \"/tmp/chart.html\").unwrap();\n\n\n// Use ImageRenderer. The `ssr` feature needs to be enabled.\nuse charming::{ImageRenderer, ImageFormat};\n\n// Chart dimension 1000x800.\nlet mut renderer = ImageRenderer::new(1000, 800);\n// Render the chart as SVG string.\nrenderer.render(\u0026chart).unwrap();\n// Render the chart as PNG bytes.\nrenderer.render_format(ImageFormat::Png, \u0026chart).unwrap();\n// Save the chart as SVG file.\nrenderer.save(\u0026chart, \"/tmp/chart.svg\").unwrap();\n// Save the chart as PNG file.\nrenderer.save_format(ImageFormat::Png, \u0026chart, \"/tmp/chart.png\");\n\n\n// Use WasmRenderer. The `wasm` feature needs to be enabled.\nuse charming::WasmRenderer;\n\n// Chart dimension 1000x800.\nlet renderer = WasmRenderer::new(1000, 800);\n// Render the chart in the WebAssembly runtime\nrenderer.render(\"my-chart-id\", \u0026chart).unwrap();\n```\n\n### Themes\n\nCharming supports a number of themes out of the box. You can use the `Theme` enum to specify a theme for your chart. For instance, the following code snippet shows how to use the `Westeros` theme:\n\n```rust\nuse charming::{Chart, ImageRenderer};\nuse charming::theme::Theme;\nuse charming::component::Title;\n\nImageRenderer::new(1000, 800).theme(Theme::Westeros).save(\n    \u0026Chart::new().title(Title::new().text(\"Westeros\")),\n    \"/tmp/westeros.svg\",\n);\n```\n\nFuture versions of Charming will support custom themes.\n\n## Gallery\n\nHere are some selected chart examples. Click on any single chart to view its source code file.\n\nYou can also clone the repo and run `cargo run --bin gallery` to view the interactive charts on the rendered HTML page.\n\n### Bar Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/bar/bar_with_background.rs\"\u003e\u003cimg src=\"./img/bar/bar_with_background.svg\" width=\"40%\" alt=\"Bar with Background\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/bar/basic_bar.rs\"\u003e\u003cimg src=\"./img/bar/basic_bar.svg\" width=\"40%\" alt=\"Basic Bar\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/bar/radial_polar_bar_label_position.rs\"\u003e\u003cimg src=\"./img/bar/radial_polar_bar_label_position.svg\" width=\"40%\" alt=\"Radial Polar Bar Label Position\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/bar/set_style_of_single_bar.rs\"\u003e\u003cimg src=\"./img/bar/set_style_of_single_bar.svg\" width=\"40%\" alt=\"Set Style of Single Bar\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/bar/stacked_column.rs\"\u003e\u003cimg src=\"./img/bar/stacked_column.svg\" width=\"40%\" alt=\"Stacked Column\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/bar/tangential_polar_bar.rs\"\u003e\u003cimg src=\"./img/bar/tangential_polar_bar.svg\" width=\"40%\" alt=\"Tangential Polar Bar\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/bar/waterfall.rs\"\u003e\u003cimg src=\"./img/bar/waterfall.svg\" width=\"40%\" alt=\"Waterfall\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/bar/world_population.rs\"\u003e\u003cimg src=\"./img/bar/world_population.svg\" width=\"40%\" alt=\"World Population\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Boxplot Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/boxplot/boxplot_light_velocity.rs\"\u003e\u003cimg src=\"./img/boxplot/boxplot_light_velocity.svg\" width=\"40%\" alt=\"Boxplot Light Velocity\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/boxplot/multiple_categories.rs\"\u003e\u003cimg src=\"./img/boxplot/multiple_categories.svg\" width=\"40%\" alt=\"Multiple Categories\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Candlestick Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/candlestick/basic_candlestick.rs\"\u003e\u003cimg src=\"./img/candlestick/basic_candlestick.svg\" width=\"40%\" alt=\"Basic Candlestick\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/candlestick/shanghai_index.rs\"\u003e\u003cimg src=\"./img/candlestick/shanghai_index.svg\" width=\"40%\" alt=\"Shanghai Index\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Funnel Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/funnel/funnel_chart.rs\"\u003e\u003cimg src=\"./img/funnel/funnel_chart.svg\" width=\"40%\" alt=\"Funnel Chart\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/funnel/multiple_funnels.rs\"\u003e\u003cimg src=\"./img/funnel/multiple_funnels.svg\" width=\"40%\" alt=\"Multiple Funnels\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Gauge Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/gauge/gauge_barometer.rs\"\u003e\u003cimg src=\"./img/gauge/gauge_barometer.svg\" width=\"40%\" alt=\"Gauge Barometer\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/gauge/gauge_basic.rs\"\u003e\u003cimg src=\"./img/gauge/gauge_basic.svg\" width=\"40%\" alt=\"Gauge Basic\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/gauge/gauge_simple.rs\"\u003e\u003cimg src=\"./img/gauge/gauge_simple.svg\" width=\"40%\" alt=\"Gauge Simple\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Graph Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/graph/hide_overlapped_label.rs\"\u003e\u003cimg src=\"./img/graph/hide_overlapped_label.svg\" width=\"40%\" alt=\"Hide Overlapped Label\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/graph/les_miserables.rs\"\u003e\u003cimg src=\"./img/graph/les_miserables.svg\" width=\"40%\" alt=\"Les Miserables\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Heatmap Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/heatmap/heatmap_on_cartesian.rs\"\u003e\u003cimg src=\"./img/heatmap/heatmap_on_cartesian.svg\" width=\"40%\" alt=\"Heatmap on Cartesian\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Line Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/line/area_pieces.rs\"\u003e\u003cimg src=\"./img/line/area_pieces.svg\" width=\"40%\" alt=\"Area Pieces\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/basic_area.rs\"\u003e\u003cimg src=\"./img/line/basic_area.svg\" width=\"40%\" alt=\"Basic Area\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/basic_line.rs\"\u003e\u003cimg src=\"./img/line/basic_line.svg\" width=\"40%\" alt=\"Basic Line\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/confidence_band.rs\"\u003e\u003cimg src=\"./img/line/confidence_band.svg\" width=\"40%\" alt=\"Confidence Band\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/data_transform_filter.rs\"\u003e\u003cimg src=\"./img/line/data_transform_filter.svg\" width=\"40%\" alt=\"Data Transform Filter\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/distribution_of_electricity.rs\"\u003e\u003cimg src=\"./img/line/distribution_of_electricity.svg\" width=\"40%\" alt=\"Distribution of Electricity\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/gradient_stacked_area.rs\"\u003e\u003cimg src=\"./img/line/gradient_stacked_area.svg\" width=\"40%\" alt=\"Gradient Stacked Area\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/large_scale_area.rs\"\u003e\u003cimg src=\"./img/line/large_scale_area.svg\" width=\"40%\" alt=\"Large Scale Area\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/line_gradient.rs\"\u003e\u003cimg src=\"./img/line/line_gradient.svg\" width=\"40%\" alt=\"Line Gradient\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/rainfall.rs\"\u003e\u003cimg src=\"./img/line/rainfall.svg\" width=\"40%\" alt=\"Rainfall\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/rainfall_vs_evaporation.rs\"\u003e\u003cimg src=\"./img/line/rainfall_vs_evaporation.svg\" width=\"40%\" alt=\"Rainfall Vs. Evaporation\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/smoothed_line.rs\"\u003e\u003cimg src=\"./img/line/smoothed_line.svg\" width=\"40%\" alt=\"Smoothed Line\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/stacked_area.rs\"\u003e\u003cimg src=\"./img/line/stacked_area.svg\" width=\"40%\" alt=\"Stacked Area\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/stacked_line.rs\"\u003e\u003cimg src=\"./img/line/stacked_line.svg\" width=\"40%\" alt=\"Stacked Line\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/step_line.rs\"\u003e\u003cimg src=\"./img/line/step_line.svg\" width=\"40%\" alt=\"Step Line\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/temperature_change.rs\"\u003e\u003cimg src=\"./img/line/temperature_change.svg\" width=\"40%\" alt=\"Temperature Change\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/line/two_value_axes_in_polar.rs\"\u003e\u003cimg src=\"./img/line/two_value_axes_in_polar.svg\" width=\"40%\" alt=\"Two Value-Axes in Polar\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Parallel Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/parallel/basic_parallel.rs\"\u003e\u003cimg src=\"./img/parallel/basic_parallel.svg\" width=\"40%\" alt=\"Basic Parallel\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/parallel/parallel_aqi.rs\"\u003e\u003cimg src=\"./img/parallel/parallel_aqi.svg\" width=\"40%\" alt=\"Parallel AQI\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Pie Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/pie/doughnut_chart_with_rounded_corner.rs\"\u003e\u003cimg src=\"./img/pie/doughnut_chart_with_rounded_corner.svg\" width=\"40%\" alt=\"Nightingale\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/pie/nightingale.rs\"\u003e\u003cimg src=\"./img/pie/nightingale.svg\" width=\"40%\" alt=\"Nightingale\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/pie/referer_of_a_website.rs\"\u003e\u003cimg src=\"./img/pie/referer_of_a_website.svg\" width=\"40%\" alt=\"Referer of a Website\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Radar Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/radar/basic_radar.rs\"\u003e\u003cimg src=\"./img/radar/basic_radar.svg\" width=\"40%\" alt=\"Basic Radar\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/radar/multiple_radar.rs\"\u003e\u003cimg src=\"./img/radar/multiple_radar.svg\" width=\"40%\" alt=\"Multiple Radar\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/radar/proportion_of_browsers.rs\"\u003e\u003cimg src=\"./img/radar/proportion_of_browsers.svg\" width=\"40%\" alt=\"Proportion of Browsers\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Sankey Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/sankey/basic_sankey.rs\"\u003e\u003cimg src=\"./img/sankey/basic_sankey.svg\" width=\"40%\" alt=\"Basic Sankey\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/sankey/node_align_left_sankey.rs\"\u003e\u003cimg src=\"./img/sankey/node_align_left_sankey.svg\" width=\"40%\" alt=\"Node Align Left Sankey\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/sankey/sankey_orient_vertical.rs\"\u003e\u003cimg src=\"./img/sankey/sankey_orient_vertical.svg\" width=\"40%\" alt=\"Sankey Orient Vertical\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Scatter Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/scatter/anscombe_quartet.rs\"\u003e\u003cimg src=\"./img/scatter/anscombe_quartet.svg\" width=\"40%\" alt=\"Anscombe Quartet\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/scatter/basic_scatter.rs\"\u003e\u003cimg src=\"./img/scatter/basic_scatter.svg\" width=\"40%\" alt=\"Basic Scatter\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/scatter/bubble_chart.rs\"\u003e\u003cimg src=\"./img/scatter/bubble_chart.svg\" width=\"40%\" alt=\"Bubble Chart\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/scatter/effect_scatter.rs\"\u003e\u003cimg src=\"./img/scatter/effect_scatter.svg\" width=\"40%\" alt=\"Effect Scatter\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/scatter/punch_card_of_github.rs\"\u003e\u003cimg src=\"./img/scatter/punch_card_of_github.svg\" width=\"40%\" alt=\"Punch Card of Github\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Sunburst Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/sunburst/drink_flavors.rs\"\u003e\u003cimg src=\"./img/sunburst/drink_flavors.svg\" width=\"40%\" alt=\"Drink Flavors\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Theme River Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/theme_river/theme_river_lastfm.rs\"\u003e\u003cimg src=\"./img/theme_river/theme_river_lastfm.svg\" width=\"40%\" alt=\"Theme River LastFM\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Tree Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/tree/from_left_to_right_tree.rs\"\u003e\u003cimg src=\"./img/tree/from_left_to_right_tree.svg\" width=\"40%\" alt=\"From Left to Right Tree\" /\u003e\u003c/a\u003e\n\u003ca href=\"./gallery/src/tree/multiple_trees.rs\"\u003e\u003cimg src=\"./img/tree/multiple_trees.svg\" width=\"40%\" alt=\"Multiple Trees\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n### Custom Charts\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"./gallery/src/candlestick/ohlc.rs\"\u003e\u003cimg src=\"./img/candlestick/ohlc.svg\" width=\"40%\" alt=\"Custom Error Bar/Candle Stick\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuankunzhang%2Fcharming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuankunzhang%2Fcharming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuankunzhang%2Fcharming/lists"}