charts-rs v0.3.0 版本更新发布
charts-rs
charts-rs
是纯rust实现的图表库,使用简单而且性能高效,生成svg低于10ms,而png也低于50ms,便于在各种无法直接渲染svg的场景下使用,现已支持更多的图片格式输出,如:jpeg,webp,以及avif。
概要
charts-rs
提供简单的方式生成图表,它支持svg
、png
、jepg
、webp
以及avif
等多种输出格式,以及支持light
, dark
, grafana
,ant
,vintage
, walden
, westeros
, chalk
与shine
主题,默认的主题为light
。现已支持以下类型的图表:Bar
, HorizontalBar
, Line
, Pie
, Radar
,Scatter
,Candlestick
,Table
以及 MultiChart
,其相关样式参考Apache ECharts
。
特性
- 所有图表均支持多种主题,当前已支持了9种主题颜色
- 可通过ttf或otf中加载更多的字体库,默认的
Roboto
字体并未支持中文,需要选择Noto Sans SC
- 支持平滑,填充,最低最高点以及线标示
- 图表使用多种文本标示,例如:圆角矩形、圆形以及矩形等
- 曲线图支持平滑曲线、拆线、区域填充等效果
- 饼图支持普通与玫瑰饼图
- 支持两组Y轴线的展示
- 图表中的所有元素均支持颜色、字体、字体颜色等基本属性配置
- 支持以
json
的形式初始化图表,更简单易用 - svg、png、jpeg、webp以及avif的格式便于更多的应用场景
- 网页版的json编辑器可用于一步式尝试各选项的效果,填充简化与完整版的配置选择
示例
可以使用网页版尝试使用charts-rs
的相关图表示例,可以直接改动配置后,重新生成效果图,非常简单而有用。
示例地址: https://charts.npmtrend.com/
示例项目代码: https://github.com/vicanso/charts-rs-web
Mix line bar
Horizontal bar
Line
Pie
Radar
Scatter
Candlestick
Multi Chart
Rust示例
使用Option的形式创建图表
use charts_rs::{
BarChart, Box, SeriesCategory, THEME_GRAFANA
};
let mut bar_chart = BarChart::new_with_theme(
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".to_string(),
"Tue".to_string(),
"Wed".to_string(),
"Thu".to_string(),
"Fri".to_string(),
"Sat".to_string(),
"Sun".to_string(),
],
THEME_GRAFANA,
);
bar_chart.title_text = "Mixed Line and Bar".to_string();
bar_chart.legend_margin = Some(Box {
top: bar_chart.title_height,
bottom: 5.0,
..Default::default()
});
bar_chart.series_list[2].category = Some(SeriesCategory::Line);
bar_chart.series_list[2].y_axis_index = 1;
bar_chart.series_list[2].label_show = true;
bar_chart
.y_axis_configs
.push(bar_chart.y_axis_configs[0].clone());
bar_chart.y_axis_configs[0].axis_formatter = Some("{c} ml".to_string());
bar_chart.y_axis_configs[1].axis_formatter = Some("{c} °C".to_string());
println!("{}", &bar_chart.svg().unwrap());
svg_to_png(&bar_chart.svg().unwrap()).unwrap();
通过JSON字符串配置的形式创建图表
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();
开源协议声明
This project is licensed under the Apache License 2.0 license.

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Linus“温馨提示”:Intel Xe 驱动代码严重缺乏测试
Linux 6.8 的 Direct Rendering Manager (DRM)内核图形/显示驱动程序更新包括新的英特尔"Xe"DRM 和 PowerVR Imagination 驱动程序、实验形式的 AMD 色彩管理属性、Raspberry Pi 5 图形支持等。 但 Linus Torvalds 最近在合并相关代码时却发现,一些新提交的 Intel Xe 驱动程序代码"严重缺乏"测试。对此,他在内核邮件列表中表达了自己的不满: 你的测试严重不足。甚至无法构建,原因似乎在于该commit b49e894c3fd8 ("drm/i915: Replace custom intel runtime_pm tracker with ref_tracker library")将"intel_wakeref_t"类型从"deep_stack_handle_t"改为了"unsigned long"...... 真令人不悦。我已经修复了那个损坏的 Xe compat 头文件并完成了构建,但这绝对不是事情的本来应该有的样子。我怎么会遇到这种情况?竟然会没有进行任何构建测试。 为什么 %^!@$%...
-
下一篇
JS 网页全自动翻译 v2.11 发布,全球翻译节点优化
两行 js 实现 html 全自动翻译。 无需改动页面、无语言配置文件、无 API Key、对 SEO 友好! 升级说明 多节点就近翻译,在节点增加1分钟的缓存,避免频繁测速增加主服务器并发 增加有ao3读者们赞助的美国加利福尼亚州翻译服务网络节点 优化反射中获取指定翻译通道,避免如果翻译通道的包中有多个类,会只寻找实现了翻译接口的类 优化setVersion2() 的提示,如果不存在自定义 translate.setVersion2() ,那么不会再控制台再出现这个提示 修复翻译服务的翻译通道,如果未找到翻译通道,会直接用第一个存在的翻译通道。修复为如果未指定翻译通道,请求接口时接口会返回明确的错误提示 控制台去掉未发现语种字符的 not find is language 的打印 优化动态监听元素改动有时遗漏元素不翻译的问题 优化 translate.execute 传入的 docs 判断 优化如果使用元素整体翻译,原字符串中带有 | 字符会导致翻译结果重复的问题 增加 translate.request.speedDetectionControl.hostMasterNodeCut...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker容器配置,解决镜像无法拉取问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2更换Tomcat为Jetty,小型站点的福音