Skip to main content

Crate siplot

Crate siplot 

Source
Expand description

siplot — silx-style scientific plotting on top of egui + wgpu.

See doc/design.md for the design. The layering mirrors silx’s BackendBase ↔ BackendPygfx:

  • core — the Plot model + Backend trait + shared types (Transform/Colormap …)
  • render — the wgpu renderer (egui_wgpu::CallbackTrait impl), owns GPU resources
  • widget — high-level plotting widgets plus PlotView for chrome + interaction + paint-callback registration

Current scope: vertical slice 1, steps 1–5 — a wgpu data layer (clear, colormapped image, polyline curve) under egui chrome (frame, grid, ticks, tick labels, colorbar), all sharing one coordinate transform.

Re-exports§

pub use crate::core::backend::Backend;
pub use crate::core::backend::CurveColor;
pub use crate::core::backend::CurveSpec;
pub use crate::core::backend::ImagePixelsSpec;
pub use crate::core::backend::ImageSpec;
pub use crate::core::backend::ItemHandle;
pub use crate::core::backend::MarkerSpec;
pub use crate::core::backend::PickResult;
pub use crate::core::backend::ShapeSpec;
pub use crate::core::backend::TriangleSpec;
pub use crate::core::background::Background;
pub use crate::core::background::DEFAULT_SNIP_WIDTH;
pub use crate::core::background::DEFAULT_STRIP_ITERATIONS;
pub use crate::core::background::DEFAULT_STRIP_THRESHOLD_FACTOR;
pub use crate::core::background::DEFAULT_STRIP_WIDTH;
pub use crate::core::background::poly_eval;
pub use crate::core::background::polyfit;
pub use crate::core::background::snip_background;
pub use crate::core::background::strip_background;
pub use crate::core::calibration::Calibration;
pub use crate::core::colormap::AutoscaleMode;
pub use crate::core::colormap::Colormap;
pub use crate::core::colormap::ColormapName;
pub use crate::core::colormap::DEFAULT_PERCENTILES;
pub use crate::core::colormap::Normalization;
pub use crate::core::colormap::register_colormap;
pub use crate::core::colormap::registered_colormap_cursor_color;
pub use crate::core::colormap::registered_colormaps;
pub use crate::core::colormap_io::ColormapIoError;
pub use crate::core::colormap_io::decode_colormap;
pub use crate::core::colormap_io::encode_colormap;
pub use crate::core::colormap_io::load_colormap;
pub use crate::core::colormap_io::save_colormap;
pub use crate::core::decimate::min_max_decimate;
pub use crate::core::dtime_ticks::DateTime;
pub use crate::core::dtime_ticks::DtUnit;
pub use crate::core::dtime_ticks::TimeZone;
pub use crate::core::dtime_ticks::best_unit;
pub use crate::core::dtime_ticks::calc_ticks;
pub use crate::core::dtime_ticks::calc_ticks_adaptive;
pub use crate::core::dtime_ticks::calc_ticks_adaptive_tz;
pub use crate::core::dtime_ticks::calc_ticks_tz;
pub use crate::core::dtime_ticks::format_tick;
pub use crate::core::dtime_ticks::format_tick_tz;
pub use crate::core::dtime_ticks::format_ticks;
pub use crate::core::dtime_ticks::format_ticks_tz;
pub use crate::core::fitting::BackgroundPeakFit;
pub use crate::core::fitting::Constraint;
pub use crate::core::fitting::DEFAULT_DELTACHI;
pub use crate::core::fitting::DEFAULT_MAX_ITER;
pub use crate::core::fitting::FitError;
pub use crate::core::fitting::FitFunction;
pub use crate::core::fitting::FitResult;
pub use crate::core::fitting::GaussianEstimateFit;
pub use crate::core::fitting::IterativeFit;
pub use crate::core::fitting::IterativeFitResult;
pub use crate::core::fitting::LOG2;
pub use crate::core::fitting::LeastSqResult;
pub use crate::core::fitting::LinearFit;
pub use crate::core::fitting::PeakModel;
pub use crate::core::fitting::atan_stepup_model;
pub use crate::core::fitting::estimate_atan_stepup;
pub use crate::core::fitting::estimate_gaussian;
pub use crate::core::fitting::estimate_gaussian_area;
pub use crate::core::fitting::estimate_height_position_fwhm;
pub use crate::core::fitting::estimate_lorentzian;
pub use crate::core::fitting::estimate_multi_gaussian;
pub use crate::core::fitting::estimate_pseudo_voigt;
pub use crate::core::fitting::estimate_slit;
pub use crate::core::fitting::estimate_stepdown;
pub use crate::core::fitting::estimate_stepup;
pub use crate::core::fitting::fit_in_range;
pub use crate::core::fitting::fit_multi_gaussian;
pub use crate::core::fitting::fit_multi_gaussian_full;
pub use crate::core::fitting::fit_peak_constrained;
pub use crate::core::fitting::fit_peak_from;
pub use crate::core::fitting::fit_peak_with_background;
pub use crate::core::fitting::fwhm_to_sigma_factor;
pub use crate::core::fitting::gaussian_area_model;
pub use crate::core::fitting::gaussian_model;
pub use crate::core::fitting::invert_matrix;
pub use crate::core::fitting::leastsq;
pub use crate::core::fitting::leastsq_constrained;
pub use crate::core::fitting::lorentzian_model;
pub use crate::core::fitting::multi_gaussian_model;
pub use crate::core::fitting::pseudo_voigt_model;
pub use crate::core::fitting::slit_model;
pub use crate::core::fitting::stepdown_model;
pub use crate::core::fitting::stepup_model;
pub use crate::core::items::Baseline;
pub use crate::core::items::ErrorBars;
pub use crate::core::items::LineStyle;
pub use crate::core::items::ScalarMask;
pub use crate::core::items::Symbol;
pub use crate::core::marker::DEFAULT_MARKER_SIZE;
pub use crate::core::marker::Marker;
pub use crate::core::marker::MarkerConstraint;
pub use crate::core::marker::MarkerKind;
pub use crate::core::marker::TextAnchor;
pub use crate::core::marker::apply_constraint;
pub use crate::core::peaks::DEFAULT_PEAK_SENSITIVITY;
pub use crate::core::peaks::Peak;
pub use crate::core::peaks::guess_fwhm;
pub use crate::core::peaks::peak_search_range;
pub use crate::core::plot::AxisConstraints;
pub use crate::core::plot::DataMargins;
pub use crate::core::plot::DataRange;
pub use crate::core::plot::DirtyState;
pub use crate::core::plot::ExtraAxis;
pub use crate::core::plot::GraphGrid;
pub use crate::core::plot::Plot;
pub use crate::core::plot::PlotId;
pub use crate::core::plot::TickMode;
pub use crate::core::plot::resolved_axis_label;
pub use crate::core::roi::BandLines;
pub use crate::core::roi::ManagedRoi;
pub use crate::core::roi::Roi;
pub use crate::core::roi::RoiEdge;
pub use crate::core::roi::RoiInteractionMode;
pub use crate::core::roi::RoiLineStyle;
pub use crate::core::roi_io::RoiIoError;
pub use crate::core::roi_io::decode_rois;
pub use crate::core::roi_io::encode_rois;
pub use crate::core::roi_io::load_rois;
pub use crate::core::roi_io::save_rois;
pub use crate::core::scatter_viz::BinnedStatistic;
pub use crate::core::scatter_viz::BinnedStatisticFunction;
pub use crate::core::scatter_viz::GridImage;
pub use crate::core::scatter_viz::GridMajorOrder;
pub use crate::core::scatter_viz::PointsViz;
pub use crate::core::scatter_viz::RegularGrid;
pub use crate::core::scatter_viz::ScatterLineProfile;
pub use crate::core::scatter_viz::Triangulation;
pub use crate::core::scatter_viz::binned_statistic;
pub use crate::core::scatter_viz::delaunay;
pub use crate::core::scatter_viz::detect_regular_grid;
pub use crate::core::scatter_viz::interpolate;
pub use crate::core::scatter_viz::irregular_grid_image;
pub use crate::core::scatter_viz::irregular_grid_pick;
pub use crate::core::scatter_viz::irregular_grid_triangles;
pub use crate::core::scatter_viz::regular_grid_pick;
pub use crate::core::scatter_viz::scatter_line_profile;
pub use crate::core::scatter_viz::solid_triangles;
pub use crate::core::scene3d::camera::Camera;
pub use crate::core::scene3d::camera::CameraDirection;
pub use crate::core::scene3d::camera::CameraExtrinsic;
pub use crate::core::scene3d::camera::CameraFace;
pub use crate::core::scene3d::camera::CameraMove;
pub use crate::core::scene3d::camera::Orthographic;
pub use crate::core::scene3d::camera::Perspective;
pub use crate::core::scene3d::camera::Projection;
pub use crate::core::scene3d::interaction::OrbitDrag;
pub use crate::core::scene3d::interaction::PanDrag;
pub use crate::core::scene3d::interaction::window_to_ndc;
pub use crate::core::scene3d::marching_cubes::MarchingCubes;
pub use crate::core::scene3d::marching_cubes::MarchingCubesError;
pub use crate::core::scene3d::marching_cubes::isosurface;
pub use crate::core::scene3d::mat4::Mat4;
pub use crate::core::scene3d::mat4::Vec3;
pub use crate::core::scene3d::mat4::mat4_look_at_dir;
pub use crate::core::scene3d::mat4::mat4_orthographic;
pub use crate::core::scene3d::mat4::mat4_perspective;
pub use crate::core::scene3d::mat4::mat4_rotate;
pub use crate::core::scene3d::mat4::mat4_scale;
pub use crate::core::scene3d::mat4::mat4_translate;
pub use crate::core::scene3d::pick::TriangleHit;
pub use crate::core::scene3d::pick::picking_segment;
pub use crate::core::scene3d::pick::segment_triangles_intersection;
pub use crate::core::scene3d::plane::Plane;
pub use crate::core::scene3d::plane::angle_between_vectors;
pub use crate::core::scene3d::plane::box_plane_intersect;
pub use crate::core::scene3d::plane::segment_plane_intersect;
pub use crate::core::shape::Line;
pub use crate::core::shape::Shape;
pub use crate::core::shape::ShapeKind;
pub use crate::core::shape::triangulate_simple_polygon;
pub use crate::core::sift_align::AffineTransformation;
pub use crate::core::sift_align::MATCH_RATIO_THRESHOLD;
pub use crate::core::sift_align::MatchedKeypoint;
pub use crate::core::sift_align::SiftAlignment;
pub use crate::core::sift_align::decompose_affine;
pub use crate::core::sift_align::sift_auto_align;
pub use crate::core::stats::ComCoord;
pub use crate::core::stats::StatScope;
pub use crate::core::stats::Stats;
pub use crate::core::transform::Axis;
pub use crate::core::transform::AxisSide;
pub use crate::core::transform::Margins;
pub use crate::core::transform::Scale;
pub use crate::core::transform::Transform;
pub use crate::core::transform::YAxis;
pub use crate::core::triangles::Triangles;
pub use crate::render::backend_wgpu::WgpuBackend;
pub use crate::render::backend_wgpu::install;
pub use crate::render::backend_wgpu::set_curve;
pub use crate::render::backend_wgpu::set_curves;
pub use crate::render::backend_wgpu::set_image;
pub use crate::render::backend_wgpu::set_images;
pub use crate::render::backend_wgpu::update_curve;
pub use crate::render::backend_wgpu::update_curve_at;
pub use crate::render::backend_wgpu::update_image_region;
pub use crate::render::gpu_curve::CurveData;
pub use crate::render::gpu_image::AggregationMode;
pub use crate::render::gpu_image::ImageData;
pub use crate::render::gpu_image::ImagePixels;
pub use crate::render::gpu_image::InterpolationMode;
pub use crate::render::gpu_image::aggregate_blocks;
pub use crate::render::gpu_scene3d::ImageInterpolation;
pub use crate::render::gpu_scene3d::PointMarker;
pub use crate::render::gpu_scene3d::Scene3dGeometry;
pub use crate::render::gpu_scene3d::Scene3dId;
pub use crate::render::gpu_scene3d::Scene3dImageLayer;
pub use crate::render::gpu_scene3d::Scene3dMeshVertex;
pub use crate::render::gpu_scene3d::Scene3dPoint;
pub use crate::render::gpu_scene3d::Scene3dResources;
pub use crate::render::gpu_scene3d::Scene3dTexturedMesh;
pub use crate::render::gpu_scene3d::Scene3dVertex;
pub use crate::render::gpu_scene3d::install_scene3d;
pub use crate::render::gpu_scene3d::paint_scene3d;
pub use crate::render::gpu_scene3d::set_scene3d;
pub use crate::render::gpu_scene3d::snapshot_scene3d;
pub use crate::render::save::SaveError;
pub use crate::render::save::SaveFormat;
pub use crate::render::save::encode_eps;
pub use crate::render::save::encode_pdf;
pub use crate::render::save::encode_png;
pub use crate::render::save::encode_ppm;
pub use crate::render::save::encode_svg;
pub use crate::render::save::encode_tiff;
pub use crate::render::save::rgba_to_rgb;
pub use crate::render::save::save_graph;
pub use crate::render::save::save_graph_with_format;
pub use crate::render::scene3d_items::Box3D;
pub use crate::render::scene3d_items::ColormapMesh3D;
pub use crate::render::scene3d_items::ComplexField3D;
pub use crate::render::scene3d_items::CutPlane;
pub use crate::render::scene3d_items::Cylinder3D;
pub use crate::render::scene3d_items::DEFAULT_CUT_PLANE_RESOLUTION;
pub use crate::render::scene3d_items::DEFAULT_ISOSURFACE_COLOR;
pub use crate::render::scene3d_items::DEFAULT_SCATTER2D_LINE_WIDTH;
pub use crate::render::scene3d_items::DEFAULT_SCATTER3D_SIZE;
pub use crate::render::scene3d_items::HeightMapData;
pub use crate::render::scene3d_items::HeightMapRGBA;
pub use crate::render::scene3d_items::Hexagon3D;
pub use crate::render::scene3d_items::ImageData3D;
pub use crate::render::scene3d_items::ImageRgba3D;
pub use crate::render::scene3d_items::Isosurface;
pub use crate::render::scene3d_items::Mesh3D;
pub use crate::render::scene3d_items::MeshColor;
pub use crate::render::scene3d_items::MeshDrawMode;
pub use crate::render::scene3d_items::ScalarField3D;
pub use crate::render::scene3d_items::Scatter2D;
pub use crate::render::scene3d_items::Scatter2DVisualization;
pub use crate::render::scene3d_items::Scatter3D;
pub use crate::render::scene3d_items::mean_plus_std;
pub use crate::widget::actions;
pub use crate::widget::actions::io::SaveTarget;
pub use crate::widget::actions::io::curve_to_csv;
pub use crate::widget::actions::mode::mask_draw_mode;
pub use crate::widget::actions::mode::pan_mode;
pub use crate::widget::actions::mode::select_mode;
pub use crate::widget::actions::mode::zoom_mode;
pub use crate::widget::alpha_slider::ActiveImageAlphaSlider;
pub use crate::widget::alpha_slider::AlphaSlider;
pub use crate::widget::alpha_slider::AlphaSliderOrientation;
pub use crate::widget::alpha_slider::NamedItemAlphaSlider;
pub use crate::widget::colorbar::ColorBarOrientation;
pub use crate::widget::colorbar::ColorBarWidget;
pub use crate::widget::colormap_dialog::ColormapDialog;
pub use crate::widget::complex_image_view::ComplexImageView;
pub use crate::widget::complex_image_view::ComplexMode;
pub use crate::widget::curves_roi_widget::CurveRoiRow;
pub use crate::widget::curves_roi_widget::CurvesRoiWidget;
pub use crate::widget::fit_widget::FitModelChoice;
pub use crate::widget::fit_widget::FitWidget;
pub use crate::widget::fit_widget::format_param_value_error;
pub use crate::widget::fit_widget::format_reduced_chisq;
pub use crate::widget::high_level::CompareAlignment;
pub use crate::widget::high_level::CompareImages;
pub use crate::widget::high_level::CompareMode;
pub use crate::widget::high_level::CurveStats;
pub use crate::widget::high_level::CurveStyle;
pub use crate::widget::high_level::HistogramAlign;
pub use crate::widget::high_level::ImageGeometry;
pub use crate::widget::high_level::ImageHistogramAxis;
pub use crate::widget::high_level::ImageProfileHistogram;
pub use crate::widget::high_level::ImageStats;
pub use crate::widget::high_level::ImageView;
pub use crate::widget::high_level::ItemStats;
pub use crate::widget::high_level::LegendAction;
pub use crate::widget::high_level::LegendResponse;
pub use crate::widget::high_level::Plot1D;
pub use crate::widget::high_level::Plot2D;
pub use crate::widget::high_level::PlotDataError;
pub use crate::widget::high_level::PlotEvent;
pub use crate::widget::high_level::PlotItemKind;
pub use crate::widget::high_level::PlotWidget;
pub use crate::widget::high_level::PlotWindow;
pub use crate::widget::high_level::PlotWithToolbarResponse;
pub use crate::widget::high_level::ProfileMethod;
pub use crate::widget::high_level::ProfileMode;
pub use crate::widget::high_level::ScatterPick;
pub use crate::widget::high_level::ScatterView;
pub use crate::widget::high_level::ScatterVisualization;
pub use crate::widget::high_level::StackPerspective;
pub use crate::widget::high_level::StackProfile;
pub use crate::widget::high_level::StackProfileDimension;
pub use crate::widget::high_level::StackView;
pub use crate::widget::high_level::ToolbarResponse;
pub use crate::widget::high_level::ValueStats;
pub use crate::widget::high_level::aligned_profile_values;
pub use crate::widget::high_level::compare_pixel_at;
pub use crate::widget::high_level::default_dimension_label;
pub use crate::widget::high_level::dimension_axis_labels;
pub use crate::widget::high_level::histogram_edges;
pub use crate::widget::high_level::histogram_step_values;
pub use crate::widget::high_level::horizontal_profile_values;
pub use crate::widget::high_level::line_profile_band;
pub use crate::widget::high_level::line_profile_values;
pub use crate::widget::high_level::pick_histogram;
pub use crate::widget::high_level::rect_profile_values;
pub use crate::widget::high_level::scatter_pick_pixels;
pub use crate::widget::high_level::scatter_position_info;
pub use crate::widget::high_level::stack_aligned_profile;
pub use crate::widget::high_level::stack_frame;
pub use crate::widget::high_level::stack_frame_count;
pub use crate::widget::high_level::stack_line_profile;
pub use crate::widget::high_level::vertical_profile_values;
pub use crate::widget::histogram_colorbar::Handle as HistogramColorBarHandle;
pub use crate::widget::histogram_colorbar::HistogramColorBar;
pub use crate::widget::histogram_colorbar::HistogramColorBarResponse;
pub use crate::widget::image_stack::Frame;
pub use crate::widget::image_stack::FrameLoader;
pub use crate::widget::image_stack::Hdf5FrameLoader;
pub use crate::widget::image_stack::ImageStack;
pub use crate::widget::interaction::ArcControlPoint;
pub use crate::widget::interaction::ArcControlPoints;
pub use crate::widget::interaction::CursorShape;
pub use crate::widget::interaction::DrawEvent;
pub use crate::widget::interaction::DrawInput;
pub use crate::widget::interaction::DrawMode;
pub use crate::widget::interaction::DrawParams;
pub use crate::widget::interaction::DrawState;
pub use crate::widget::interaction::FillMode;
pub use crate::widget::interaction::MouseButton;
pub use crate::widget::interaction::PanDirection;
pub use crate::widget::interaction::PlotPointerEvent;
pub use crate::widget::interaction::PointPick;
pub use crate::widget::interaction::RoiDrawKind;
pub use crate::widget::interaction::RoiGrab;
pub use crate::widget::interaction::RoiKeyAction;
pub use crate::widget::interaction::SelectionStyle;
pub use crate::widget::interaction::arc_control_points;
pub use crate::widget::interaction::arc_from_three_points;
pub use crate::widget::interaction::arc_from_two_points;
pub use crate::widget::interaction::arc_three_point_drag;
pub use crate::widget::interaction::constrain_zoom_axes;
pub use crate::widget::interaction::cursor_for_edge;
pub use crate::widget::interaction::cursor_for_grab;
pub use crate::widget::interaction::ellipse_semi_axes;
pub use crate::widget::interaction::hatch_lines;
pub use crate::widget::interaction::image_index;
pub use crate::widget::interaction::nearest_point;
pub use crate::widget::interaction::roi_draw_mode;
pub use crate::widget::interaction::roi_from_draw;
pub use crate::widget::interaction::roi_grab_at;
pub use crate::widget::interaction::roi_key_action;
pub use crate::widget::items_selection_dialog::ItemsSelectionDialog;
pub use crate::widget::items_selection_dialog::SelectableItem;
pub use crate::widget::items_selection_dialog::SelectionMode;
pub use crate::widget::limits_widget::LimitsWidget;
pub use crate::widget::mask_tools::MaskTool;
pub use crate::widget::mask_tools::MaskToolsWidget;
pub use crate::widget::mask_tools::ThresholdMode;
pub use crate::widget::plot_widget::DrawResponse;
pub use crate::widget::plot_widget::PlotInteractionMode;
pub use crate::widget::plot_widget::PlotResponse;
pub use crate::widget::plot_widget::PlotView;
pub use crate::widget::position_info::PositionInfo;
pub use crate::widget::position_info::SNAP_THRESHOLD_DIST;
pub use crate::widget::position_info::Snap;
pub use crate::widget::position_info::SnapItem;
pub use crate::widget::position_info::SnapItemKind;
pub use crate::widget::position_info::SnappingMode;
pub use crate::widget::position_info::format_value;
pub use crate::widget::position_info::snap_to_nearest;
pub use crate::widget::position_info::snapping_candidates;
pub use crate::widget::print_preview::CommentPosition;
pub use crate::widget::print_preview::PrintPreview;
pub use crate::widget::print_preview::compose_page;
pub use crate::widget::print_preview::resize_item_rect;
pub use crate::widget::profile_window::ProfileWindow;
pub use crate::widget::radar_view::DataRect;
pub use crate::widget::radar_view::RadarMapping;
pub use crate::widget::radar_view::RadarResponse;
pub use crate::widget::radar_view::RadarView;
pub use crate::widget::radar_view::clamp_viewport;
pub use crate::widget::radar_view::point_in_rect;
pub use crate::widget::roi_manager::RoiManagerWidget;
pub use crate::widget::roi_stats::CurveRoiCounts;
pub use crate::widget::roi_stats::RoiStats;
pub use crate::widget::roi_stats::curve_roi_counts;
pub use crate::widget::roi_stats::curve_roi_stats;
pub use crate::widget::roi_stats::image_roi_stats;
pub use crate::widget::roi_stats::roi_x_span;
pub use crate::widget::roi_stats_widget::RoiStatsRow;
pub use crate::widget::roi_stats_widget::RoiStatsWidget;
pub use crate::widget::scalar_field_properties::ScalarFieldProperties;
pub use crate::widget::scalar_field_view::FieldPick;
pub use crate::widget::scalar_field_view::ScalarFieldView;
pub use crate::widget::scatter_mask::ScatterMaskWidget;
pub use crate::widget::scatter_mask::point_in_polygon;
pub use crate::widget::scene_position_info::ScenePositionInfo;
pub use crate::widget::scene_widget::PICK_POINT_TOLERANCE_PX;
pub use crate::widget::scene_widget::ScenePick;
pub use crate::widget::scene_widget::ScenePickKind;
pub use crate::widget::scene_widget::SceneWidget;
pub use crate::widget::scene_widget::viewpoint_menu;
pub use crate::widget::scene_window::SceneWindow;
pub use crate::widget::stack_profile_window::StackProfileWindow;
pub use crate::widget::stats_widget::StatsInput;
pub use crate::widget::stats_widget::StatsWidget;
pub use crate::widget::stats_widget::UpdateMode;
pub use crate::widget::stats_widget::format_significant;
pub use crate::widget::stats_widget::format_stat;
pub use crate::widget::sync::SyncAxes;
pub use crate::widget::tool_buttons::ProfileToolButton;
pub use crate::widget::tool_buttons::RulerToolButton;
pub use crate::widget::tool_buttons::SymbolToolButton;
pub use crate::widget::tool_buttons::SymbolToolChange;
pub use egui;
pub use egui_wgpu;

Modules§

core
The Plot model, backend abstraction, and shared types.
render
The wgpu renderer.
widget
egui widgets.