2个版本
0.1.5 | 2022年2月19日 |
---|---|
0.1.4 |
|
#458 in 可视化
5MB
4.5K SLoC
Bevy游戏引擎的绘图库,注重美学和交互性。它可以处理数据点(见“最小化”、“标记”和“bevy”示例)和显式函数(见“func”、“animate”和“runtime_setter”示例)。显式函数使用二次贝塞尔插值进行渲染,从而平滑曲线。
以下是文档链接。
如何开始
将“bevy_plot”添加到项目的Cargo.toml文件中的依赖项列表中,并查看示例,了解如何添加PlotPlugin、导入和使用Plot资产。
待办事项
- 减少API模板代码
- 交互式标记
- 与3D摄像机的兼容性
- 优化
lib.rs
:
Bevy游戏引擎的绘图库。要快速开始,运行一个Bevy App
,将PlotPlugin
添加到App
中,实例化一个Plot
结构体,并使用以下方法:
Plot::plot
(my_data: impl
Plotable
)
方法用于普通图表,Plot::plotm
(my_data: impl
Plotable
)
方法用于散点图(或带有标记的图表),或者Plot::plot_func
(my_function: fn(f32, f32) -> 32)
方法支持显式函数的绘图。
前两种方法中的 my_data
参数必须实现 Plotable
特性(例如 Vec<Vec2>
,Vec<(f32, f32)>
,Vec<f32>
等)。在第三种情况下,my_function
是一个显式函数,它接受两个参数(x 和时间)并返回一个 f32
。
以下代码可以在 examples/minimal.rs 中找到。
use bevy::prelude::*;
use bevy_plot::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(PlotPlugin)
.add_startup_system(setup)
.run();
}
fn setup(mut commands: Commands, mut plots: ResMut<Assets<Plot>>) {
commands.spawn_bundle(OrthographicCameraBundle::new_2d());
let mut plot = Plot::default();
let xs = (0..30).map(|i| i as f32 / 30.0).collect::<Vec<f32>>();
let ys = xs
.iter()
.map(|x| Vec2::new(*x, 0.5 * x))
.collect::<Vec<Vec2>>();
plot.plot(ys);
let plot_handle = plots.add(plot.clone());
commands.spawn().insert(plot_handle);
}
要自定义曲线和标记的外观,请参阅 Opt
枚举以及可用的选项,以及 Plot::plotopt
和 Plot::plotopt_func
方法。要自定义画布(网格、颜色等),请参阅 Plot
字段。使用 Plot::set_bounds
(lo, up)
方法设置 x 和 y 轴的范围,但 bevy_plot 在 lo.x > up.x 或 lo.y > up.y
时会引发 panic。
请注意,该库允许用户
- 使用鼠标滚轮进行缩放和缩小,
- 通过按住并拖动鼠标移动原点,
- 通过按下鼠标中键来生成目标和相应的坐标,以及
- 在运行时更改 Plot 字段(请参阅 examples/runtime_setter.rs)。
依赖关系
~45–60MB
~869K SLoC