|
1 | 1 | # coding: utf-8 |
2 | 2 | module UnicodePlot |
3 | | - # == Description |
| 3 | + # @overload stairs(x, y, style: :post, name: "", title: "", xlabel: "", ylabel: "", labels: true, border: :solid, margin: 3, padding: 1, color: :auto, width: 40, height: 15, xlim: [0, 0], ylim: [0, 0], canvas: :braille, grid: true) |
4 | 4 | # |
5 | | - # Draws a staircase plot on a new canvas. |
| 5 | + # Draws a staircase plot on a new canvas. |
6 | 6 | # |
7 | | - # The first vector `x` should contain the horizontal |
8 | | - # positions for all the points. The second vector `y` should then |
9 | | - # contain the corresponding vertical positions respectively. This |
10 | | - # means that the two vectors must be of the same length and |
11 | | - # ordering. |
| 7 | + # The first vector `x` should contain the horizontal |
| 8 | + # positions for all the points. The second vector `y` should then |
| 9 | + # contain the corresponding vertical positions respectively. This |
| 10 | + # means that the two vectors must be of the same length and |
| 11 | + # ordering. |
12 | 12 | # |
13 | | - # == Usage |
| 13 | + # @param x [Array<Numeric>] The horizontal position for each point. |
| 14 | + # @param y [Array<Numeric>] The vertical position for each point. |
| 15 | + # @param style [Symbol] Specifies where the transition of the stair takes place. Can be either `:pre` or `:post`. |
| 16 | + # @param name [String] Annotation of the current drawing to be displayed on the right. |
| 17 | + # @param height [Integer] Number of character rows that should be used for plotting. |
| 18 | + # @param xlim [Array<Numeric>] Plotting range for the x axis. `[0, 0]` stands for automatic. |
| 19 | + # @param ylim [Array<Numeric>] Plotting range for the y axis. `[0, 0]` stands for automatic. |
| 20 | + # @param canvas [Symbol] The type of canvas that should be used for drawing. |
| 21 | + # @param grid [Boolean] If `true`, draws grid-lines at the origin. |
14 | 22 | # |
15 | | - # UnicodePlot.stairs(x, y, style: :post, name: "", title: "", xlabel: "", ylabel: "", labels: true, border: :solid, margin: 3, padding: 1, color: :auto, width: 40, height: 15, xlim: [0, 0], ylim: [0, 0], canvas: :braille, grid: true) |
| 23 | + # @return [Plot] A plot object. |
16 | 24 | # |
17 | | - # @param x [Array<Numeric>] The horizontal position for each point. |
18 | | - # @param y [Array<Numeric>] The vertical position for each point. |
19 | | - # @param style [Symbol] Specifies where the transition of the stair takes place. Can be either `:pre` or `:post`. |
20 | | - # @param name [String] Annotation of the current drawing to be displayed on the right. |
21 | | - # @param height [Integer] Number of character rows that should be used for plotting. |
22 | | - # @param xlim [Array<Numeric>] Plotting range for the x axis. `[0, 0]` stands for automatic. |
23 | | - # @param ylim [Array<Numeric>] Plotting range for the y axis. `[0, 0]` stands for automatic. |
24 | | - # @param canvas [Symbol] The type of canvas that should be used for drawing. |
25 | | - # @param grid [Boolean] If `true`, draws grid-lines at the origin. |
| 25 | + # @example Example usage of stairs on IRB: |
26 | 26 | # |
27 | | - # @return [Plot] A plot object |
28 | | - # |
29 | | - # @example |
30 | | - # UnicodePlot.stairs([1, 2, 4, 7, 8], [1, 3, 4, 2, 7], style: :post, title: "My Staircase Plot") |
31 | | - # |
32 | | - # |
33 | | - # ┌────────────────────────────────────────┐ |
34 | | - # 7 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
35 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
36 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
37 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
38 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
39 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
40 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
41 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⡄⠀⠀⠀⠀⢸│ |
42 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢸│ |
43 | | - # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢸│ |
44 | | - # │⠀⠀⠀⠀⠀⢸⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢸│ |
45 | | - # │⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢸│ |
46 | | - # │⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠧⠤⠤⠤⠤⠼│ |
47 | | - # │⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ |
48 | | - # 1 │⣀⣀⣀⣀⣀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ |
49 | | - # └────────────────────────────────────────┘ |
50 | | - # 1 8 |
51 | | - # |
52 | | - # @see Plot |
53 | | - # @see scatterplot |
54 | | - # @see lineplot |
| 27 | + # >> UnicodePlot.stairs([1, 2, 4, 7, 8], [1, 3, 4, 2, 7], style: :post, title: "My Staircase Plot").render |
| 28 | + # My Staircase Plot |
| 29 | + # ┌────────────────────────────────────────┐ |
| 30 | + # 7 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
| 31 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
| 32 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
| 33 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
| 34 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
| 35 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
| 36 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ |
| 37 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⠤⡄⠀⠀⠀⠀⢸│ |
| 38 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢸│ |
| 39 | + # │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢸│ |
| 40 | + # │⠀⠀⠀⠀⠀⢸⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢸│ |
| 41 | + # │⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⢸│ |
| 42 | + # │⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠧⠤⠤⠤⠤⠼│ |
| 43 | + # │⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ |
| 44 | + # 1 │⣀⣀⣀⣀⣀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ |
| 45 | + # └────────────────────────────────────────┘ |
| 46 | + # 1 8 |
| 47 | + # => nil |
55 | 48 | # |
| 49 | + # @see Plot |
| 50 | + # @see scatterplot |
| 51 | + # @see lineplot |
56 | 52 | module_function def stairs(xvec, yvec, style: :post, **kw) |
57 | 53 | x_vex, y_vex = compute_stair_lines(xvec, yvec, style: style) |
58 | 54 | lineplot(x_vex, y_vex, **kw) |
|
0 commit comments