Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- **Math in labels** — any label (title, axis labels, `TextPlot` markdown bodies) may embed `$...$` math written in LaTeX-ish syntax (`$\sigma^2$`, `$\frac{a}{b}$`, `$\sqrt{x^2+y^2}$`). Math regions are lowered to inline Unicode — Greek letters, operators, super/subscripts (all-or-nothing, with a clean `x^(2q)` fallback), `\frac`→`a/b`, `\sqrt`→`√(…)` — by every backend including the terminal. Zero dependencies, always on; a literal dollar is written `\$`. See *Reference → Math in Labels*.
- **`QuiverPlot`** — 2-D vector field rendered as arrows. Each arrow has a tail at `(x, y)` and a vector `(u, v)`. Features: `from_function()` constructor for sampling a closure on a regular grid; auto-scaled arrow length (longest arrow ≈ one grid cell via a `span/√n` heuristic) or explicit `with_scale`; proportional arrow heads that make every arrow "look like an arrow" regardless of magnitude; three pivot modes (`Tail`, `Middle`, `Tip`); optional magnitude-driven colormap with automatic colorbar; `tight_bounds` opt-in for dense fields and independent `with_clip_to_plot_area()` for plot-area clipping; combo helper `with_magnitude_colormap(cmap, label)`. CLI: `kuva quiver`.
- **Pre-compiled release binaries** — pushing a `vX.Y.Z` tag now builds standalone `kuva` CLI binaries (with the `cli,full` feature set: SVG + PNG + PDF) for Linux (x86_64 gnu/musl, aarch64), macOS (Intel + Apple Silicon) and Windows (x86_64), and attaches them with SHA-256 checksums to the matching GitHub Release. Users can download a binary and run it without installing Rust. See `.github/workflows/release.yml` (resolves #17).
- **`ManhattanPlot::with_thin_overlapping_labels()`** — opts the Manhattan x-axis into collision-aware chromosome labelling. By default every chromosome whose band is at least 6px wide is labelled, which can overprint the labels of adjacent small chromosomes (e.g. 17/19/21) on a genome-wide plot. When enabled, labels are placed in a single left-to-right pass and any label whose estimated footprint would overlap the previously drawn one is skipped, automatically thinning crowded regions while keeping the rest readable. Works with both horizontal and rotated (`Layout::with_x_tick_rotate`) labels. Off by default; existing behaviour is unchanged.
Expand Down
1 change: 1 addition & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@
- [SVG Interactivity](./reference/interactive.md)
- [Date & Time Axes](./reference/datetime.md)
- [Stats Box](./reference/stats_box.md)
- [Math in Labels](./reference/math.md)

# Performance

Expand Down
1 change: 1 addition & 0 deletions docs/src/assets/math/fraction.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/src/assets/math/greek.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/src/assets/math/mixed.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/src/assets/math/quadratic.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/src/assets/math/rotated_ylabel.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading