From c2a6341bd9310b19832db109acc6cbc13cba86b9 Mon Sep 17 00:00:00 2001 From: Johannes Wolf Date: Sat, 20 Jul 2024 13:36:51 +0200 Subject: [PATCH 1/2] plot: Add predefined tick formatters --- gallery/line.png | Bin 63015 -> 64578 bytes gallery/line.typ | 47 ++++++++------ justfile | 2 +- src/axes.typ | 31 ++-------- src/plot.typ | 1 + src/plot/formats.typ | 119 ++++++++++++++++++++++++++++++++++++ src/plot/legend.typ | 4 ++ tests/plot/format/ref/1.png | Bin 0 -> 42975 bytes tests/plot/format/test.typ | 39 ++++++++++++ 9 files changed, 199 insertions(+), 44 deletions(-) create mode 100644 src/plot/formats.typ create mode 100644 tests/plot/format/ref/1.png create mode 100644 tests/plot/format/test.typ diff --git a/gallery/line.png b/gallery/line.png index e3e1998643098081ed7a2e0cb8fa6b1651a4c276..468aac51cebd31612cb96256a5a3834a09df3dd6 100644 GIT binary patch literal 64578 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 J-#_2>e*motxViuU literal 63015 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

(~J3D7PGz=5C>jB%FF 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 diff --git a/gallery/line.typ b/gallery/line.typ index 702e127..f559a80 100644 --- a/gallery/line.typ +++ b/gallery/line.typ @@ -1,26 +1,39 @@ -#import "@preview/cetz:0.2.2": canvas +#import "@preview/cetz:0.2.2": canvas, draw #import "@preview/cetz-plot:0.1.0": plot #set page(width: auto, height: auto, margin: .5cm) #let style = (stroke: black, fill: rgb(0, 0, 200, 75)) -#canvas(length: 1cm, { - plot.plot(size: (8, 6), - x-tick-step: none, - x-ticks: ((-calc.pi, $-pi$), (0, $0$), (calc.pi, $pi$)), - y-tick-step: 1, +#let f1(x) = calc.sin(x) +#let fn = ( + ($ x - x^3"/"3! $, x => x - calc.pow(x, 3)/6), + ($ x - x^3"/"3! - x^5"/"5! $, x => x - calc.pow(x, 3)/6 + calc.pow(x, 5)/120), + ($ x - x^3"/"3! - x^5"/"5! - x^7"/"7! $, x => x - calc.pow(x, 3)/6 + calc.pow(x, 5)/120 - calc.pow(x, 7)/5040), +) + +#set text(size: 10pt) + +#canvas({ + import draw: * + + // Set-up a thin axis style + set-style(axes: (stroke: .5pt, tick: (stroke: .5pt)), + legend: (stroke: none, orientation: ttb, item: (spacing: .3), scale: 80%)) + + plot.plot(size: (12, 8), + x-tick-step: calc.pi/2, + x-format: plot.formats.multiple-of, + y-tick-step: 2, y-min: -2.5, y-max: 2.5, + legend: "inner-north", { - plot.add( - style: style, - domain: (-calc.pi, calc.pi), calc.sin) - plot.add( - hypograph: true, - style: style, - domain: (-calc.pi, calc.pi), calc.cos) - plot.add( - hypograph: true, - style: style, - domain: (-calc.pi, calc.pi), x => calc.cos(x + calc.pi)) + let domain = (-1.1 * calc.pi, +1.1 * calc.pi) + + for ((title, f)) in fn { + plot.add-fill-between(f, f1, domain: domain, + style: (stroke: none), label: title) + } + plot.add(f1, domain: domain, label: $ sin x $, + style: (stroke: black)) }) }) diff --git a/justfile b/justfile index 76ac86c..44c05c8 100644 --- a/justfile +++ b/justfile @@ -19,4 +19,4 @@ manual: typst c manual.typ manual.pdf gallery: - for f in "{{gallery_dir}}"/*.typ; do typst c "$f" "${f/typ/png}"; done + for f in "{{gallery_dir}}"/*.typ; do typst c --root . "$f" "${f/typ/png}"; done diff --git a/src/axes.typ b/src/axes.typ index 5bedf4d..cfd4669 100644 --- a/src/axes.typ +++ b/src/axes.typ @@ -1,4 +1,5 @@ #import "/src/cetz.typ": util, draw, vector, matrix, styles, process, drawable, path-util, process +#import "/src/plot/formats.typ" #let typst-content = content @@ -250,27 +251,6 @@ $#round(value, digits)$ } - let format-sci(value, digits) = { - let exponent = if value != 0 { - calc.floor(calc.log(calc.abs(value), base: 10)) - } else { - 0 - } - - let ee = calc.pow(10, calc.abs(exponent + 1)) - if exponent > 0 { - value = value / ee * 10 - } else if exponent < 0 { - value = value * ee * 10 - } - - value = round(value, digits) - if exponent <= -1 or exponent >= 1 { - return $#value times 10^#exponent$ - } - return $#value$ - } - if type(value) != typst-content { let format = tic-options.at("format", default: "float") if format == none { @@ -280,8 +260,7 @@ } else if type(format) == function { value = (format)(value) } else if format == "sci" { - // Todo: Handle logarithmic including arbitrary base - value = format-sci(value, tic-options.at("decimals", default: 2)) + value = formats.sci(value, digits: tic-options.at("decimals", default: 2)) } else { value = format-float(value, tic-options.at("decimals", default: 2)) } @@ -381,7 +360,7 @@ #let compute-logarithmic-ticks(axis, style, add-zero: true) = { let ferr = util.float-epsilon let (min, max) = ( - calc.log(calc.max(axis.min, ferr), base: axis.base), + calc.log(calc.max(axis.min, ferr), base: axis.base), calc.log(calc.max(axis.max, ferr), base: axis.base) ) let dt = max - min; if (dt == 0) { dt = 1 } @@ -439,11 +418,11 @@ } } - + } } } - + return l } diff --git a/src/plot.typ b/src/plot.typ index 9c9cd6a..a30587e 100644 --- a/src/plot.typ +++ b/src/plot.typ @@ -12,6 +12,7 @@ #import "/src/plot/bar.typ": add-bar #import "/src/plot/errorbar.typ": add-errorbar #import "/src/plot/mark.typ" +#import "/src/plot/formats.typ" #import plot-legend: add-legend #let default-colors = (blue, red, green, yellow, black) diff --git a/src/plot/formats.typ b/src/plot/formats.typ new file mode 100644 index 0000000..635f256 --- /dev/null +++ b/src/plot/formats.typ @@ -0,0 +1,119 @@ +// Compare two floats +#let _compare(a, b, eps: 1e-6) = { + return calc.abs(a - b) <= eps +} + +// Pre-computed table of fractions +#let _common-denoms = range(2, 11 + 1).map(d => { + (d, range(1, d).map(n => n/d)) +}) + +#let _find-fraction(v, denom: auto, eps: 1e-6) = { + let i = calc.floor(v) + let f = v - i + if _compare(f, 0, eps: eps) { + return $#v$ + } + + let denom = if denom != auto { + for n in range(1, denom) { + if _compare(f, n/denom, eps: eps) { + denom + } + } + } else { + (() => { + for ((denom, tab)) in _common-denoms { + for vv in tab { + if _compare(f, vv, eps: eps) { + return denom + } + } + } + })() + } + + if denom != none { + return if v < 0 { $-$ } else {} + $#calc.round(calc.abs(v) * denom)/#denom$ + } +} + +/// Fraction tick formatter +/// +/// - value (number): Value to format +/// - denom (auto, int): Denominator for result fractions. If set to `auto`, +/// a hardcoded fraction table is used for finding fractions with a +/// denominator <= 11. +/// - eps (number): Epsilon used for comparison +/// -> Content if a matching fraction could be found or none +#let fraction(value, denom: auto, eps: 1e-6) = { + return _find-fraction(value, denom: denom, eps: eps) +} + +/// Multiple of tick formatter +/// +/// ```example +/// plot.plot(x-format: plot.formats.multiple-of, +/// x-tick-step: calc.pi/4, { +/// plot.add(calc.sin, domain: (-calc.pi, 1.5 * calc.pi)) +/// }) +/// ``` +/// +/// - value (number): Value to format +/// - factor (number): Factor value is expected to be a multiple of. +/// - symbol (content): Suffix symbol. For `value` = 0, the symbol is not +/// appended. +/// - fraction (none, true, int): If not none, try finding matching fractions +/// using the same mechanism as `fraction`. If set to an integer, that integer +/// is used as denominator. If set to `none` or `false`, or if no fraction +/// could be found, a real number with `digits` digits is used. +/// - digits (int): Number of digits to use for rounding +/// - eps (number): Epsilon used for comparison +/// -> Content if a matching fraction could be found or none +#let multiple-of(value, factor: calc.pi, symbol: $pi$, fraction: true, digits: 2, eps: 1e-6) = { + if _compare(value, 0, eps: eps) { + return $0$ + } + + let a = value / factor + if _compare(a, 1, eps: eps) { + return symbol + } else if _compare(a, -1, eps: eps) { + return $-$ + symbol + } + + if fraction != none { + let frac = _find-fraction(a, denom: if fraction == true { auto } else { fraction }) + if frac != none { + return frac + symbol + } + } + + return $#calc.round(a, digits: digits)$ + symbol +} + +/// Scientific notation tick formatter +/// +/// - value (number): Value to format +/// - digits (int): Number of digits for rouding the factor +/// -> Content +#let sci(value, digits: 2) = { + let exponent = if value != 0 { + calc.floor(calc.log(calc.abs(value), base: 10)) + } else { + 0 + } + + let ee = calc.pow(10, calc.abs(exponent + 1)) + if exponent > 0 { + value = value / ee * 10 + } else if exponent < 0 { + value = value * ee * 10 + } + + value = calc.round(value, digits: digits) + if exponent <= -1 or exponent >= 1 { + return $#value times 10^#exponent$ + } + return $#value$ +} diff --git a/src/plot/legend.typ b/src/plot/legend.typ index 074f75e..f26a43b 100644 --- a/src/plot/legend.typ +++ b/src/plot/legend.typ @@ -23,6 +23,7 @@ ) ), radius: 0, + scale: 100%, ) // Map position to legend group anchor @@ -117,6 +118,9 @@ assert(style.orientation in (ttb, ltr), message: "Unsupported legend orientation.") + // Scaling + draw.scale(style.scale) + // Position let position = if position == auto { style.default-position diff --git a/tests/plot/format/ref/1.png b/tests/plot/format/ref/1.png new file mode 100644 index 0000000000000000000000000000000000000000..b46e92238dbb0df6585550333c6d0e9697569aaa GIT binary patch literal 42975 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 Date: Mon, 29 Jul 2024 18:51:10 +0200 Subject: [PATCH 2/2] manual: Update manual --- manual.pdf | Bin 10680 -> 10680 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/manual.pdf b/manual.pdf index f1d561946e110a3fcf57c85a195c28ea7b821f85..e7eeebf4da7084e22db9fa29a913046c8f01fd7a 100644 GIT binary patch delta 155 zcmdlHyd!wSH6<2PLj$wPx0Iy8jLkol0+?7$4XuD;eyRpgRlk2E^6vHq&7FIy<{@PuFcj~Q$Yi})a2QkvH+4qGnfDX delta 155 zcmdlHyd!wSH6<1kQ$v%