charts-rs

中文

charts-rs is a charting library for rust. It's simple and fast.

Crates.io MIT licensed Build status

Overview

charts-rs is simpler way for generating charts, which supports svg and png format and themes: light, dark, grafana and ant. The default theme is light. These charts are supported: Bar, HorizontalBar, Line, Pie, Radar, Scatter, Candlestick, Table and MultiChart.

Apache ECharts is popular among Front-end developers, and charts-rs reference it. Developers can generate charts almost the same as Apache ECharts.

Demo

You can try to use the web demo page, it's simple and useful.

Charts Web Demo Page: https://charts.npmtrend.com/

Charts Web Source: https://github.com/vicanso/charts-rs-web

charts-rs

Mix line bar

charts-rs

Horizontal bar

charts-rs

Line

charts-rs

Pie

charts-rs

Radar

charts-rs

Scatter

charts-rs

Candlestick

charts-rs

Table

charts-rs

Multi Chart

charts-rs

Example

New from option

```rust use chartsrs::{ BarChart, Box, SeriesCategory, THEMEGRAFANA }; let mut barchart = BarChart::newwiththeme( vec![ ("Evaporation", vec![2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6]).into(), ( "Precipitation", vec![2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6], ) .into(), ("Temperature", vec![2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3]).into(), ], vec![ "Mon".tostring(), "Tue".tostring(), "Wed".tostring(), "Thu".tostring(), "Fri".tostring(), "Sat".tostring(), "Sun".tostring(), ], THEMEGRAFANA, ); barchart.titletext = "Mixed Line and Bar".tostring(); barchart.legendmargin = Some(Box { top: barchart.titleheight, bottom: 5.0, ..Default::default() }); barchart.serieslist[2].category = Some(SeriesCategory::Line); barchart.serieslist[2].yaxisindex = 1; barchart.serieslist[2].label_show = true;

barchart .yaxisconfigs .push(barchart.yaxisconfigs[0].clone()); barchart.yaxisconfigs[0].axisformatter = Some("{c} ml".tostring()); barchart.yaxisconfigs[1].axisformatter = Some("{c} °C".tostring());

println!("{}", &barchart.svg().unwrap()); svgtopng(&barchart.svg().unwrap()).unwrap(); ```

From json

rust,no_run use charts_rs::{BarChart, svg_to_png}; let bar_chart = BarChart::from_json( r###"{ "width": 630, "height": 410, "margin": { "left": 10, "top": 5, "right": 10 }, "title_text": "Bar Chart", "title_font_color": "#345", "title_align": "right", "sub_title_text": "demo", "legend_align": "left", "series_list": [ { "name": "Email", "label_show": true, "data": [120.0, 132.0, 101.0, 134.0, 90.0, 230.0, 210.0] }, { "name": "Union Ads", "data": [220.0, 182.0, 191.0, 234.0, 290.0, 330.0, 310.0] } ], "x_axis_data": [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ] }"###, ).unwrap(); println!("{}", bar_chart.svg().unwrap()); svg_to_png(&bar_chart.svg().unwrap()).unwrap();

License

This project is licensed under the [Apache License 2.0 license].