1# Changelog 2 3## Plotters latest(?) 4 5### Improved 6 7- Surface series now supports more customizations 8- Z-orde support for 3D plots 9- Allow passing colors by value and reference (thanks to chrisduerr) 10 11### Fixed 12 13- Infinte loop / panic when the axis range is zero 14- UB in minifb example (thanks to TheEdward162) 15- Examples that uses old APIs (thanks to chrisduerr) 16 17## Plotters 0.3.0 (2020-09-03) 18This is the next major release of Plotters, see [release notes](./RELEASE-NOTES.md) for more detials. 19 20### Added 21 22- The plotters backend API crate is introduced which allows third-party backend. 23- Allow slice used as a coordinate if the item type implements `PartialOrd`. 24- Linspace coordinate type, which allows define a discrete coordinate on continous value types (such as f32, DateTime, etc) with a step specification 25- Nested coordinate type, now we support define pair of category and nested values as nested coordinate. 26- Introduce backend crates: plotters-bitmap, plotters-svg, plotters-cairo, plotters-canvas, plotters-console 27- 3D Plotting features 28 29### Fixed 30 31- Adjust Canvas backend size with DPR (Thanks to Marius-Mueller) 32 33### Improvement 34 35- Enhanced key point algorithms: New key point hint trait are used for key point algorithms && many improvment on key point algorithms for different types 36- Renamed `MeshStyle::line\_style\_1\ and `MeshStyle::line\_style\_2` to `bold\_line\_style` and `light\_line\_style` 37- Reorganize the "plotters::coord" namespace 38- Improved discrete coordinate trait 39- Split backend code into isolated crates and can be maintained indepdendenly 40- Category coordinate is now replaced by slice coordinate 41- Removing the requirement for `Debug` trait for chart coordinate, allows ranged coordinate define its own formatting function. 42 43### Removed 44 45- The `Path` name alias for `PathElement` 46- Most code `plotters::drawing::backend\_impl::\* ` (expect `MockedBackend` for testing purpose) is removed due to crate split. 47- Piston backend due to the Piston project seems not actively developing 48 49## Plotters 0.2.15 (2020-05-26) 50### Fixed 51 52- Division by zero with logarithmic coord (issue #143) 53- Update dependencies 54 55## Plotters 0.2.14 (2020-05-05) 56### Fixed 57 58- Compile error with older rustc which causing breaks 59 60## Plotters 0.2.13 (2020-05-04) 61### Added 62 63- Line width is supported for SVG 64 65### Fixed 66 67- Updated dependencies 68- Default rasterizer causing bitmap backend draw out-of-range pixels 69- Depdendicy fix 70 71## Plotters 0.2.12 (2019-12-06) 72### Added 73 74- BitMapBackend now is able to support different pixel format natively. Check our new minifb demo for details. 75- Incremental Rendering by saving the previous chart context into a state and restore it on a different drawing area. 76- BoxPlot support (See boxplot example for more details) (Thanks to @nuald) 77- Category coordinate spec which allows use a list of given values as coordinate (Thanks to @nuald) 78- New text positioning model which allows develvoper sepecify the anchor point. This is critical for layouting SVG correctly. See `plotters::style::text::text_anchor` for details. (Thanks to @nuald) 79 80### Improved 81 82- Faster bitmap blending algorithm, which is 5x faster than the original one. 83- Text alignment improvement, now we can suggest the invariant point by giving `TextAlignment` to the text style (Thanks to @nauld) 84- More controls on features, allows opt in and out series types 85- Remove dependency to svg crate, since it doesn't provide more feature than a plain string. 86 87## Plotters 0.2.11 (2019-10-27) 88 89### Added 90 91- Add font style support, now we are able to set font variations: normal, oblique, italic or bold. 92 93### Improved 94 95- Font description is greatly improved, general font family is supported: `serif`, `serif-sans`, `monospace` (Thanks to @Tatrix) 96- Tested the font loading on Linux, OSX and Windowns. Make font loading more reliable. 97- `BitMapBackend` isn't depdends on `image` crate now. Only the image encoding part relies on the `image` crate 98- Refactored WASM demo use ES6 and `wasm-pack` (Thanks to @Tatrix) 99- Label style for X axis and Y axis can be set seperately now using `x\_label\_style` and `y\_label\_style`. (Thanks to @zhiburt) 100 101## Plotters 0.2.10 (2019-10-23) 102 103### Improved 104 105- Refactored and simplified TTF font cache, use RwLock instead of mutex which may benefit for parallel rendering. (Thanks to @Tatrix) 106 107### Bug Fix 108 109- The fast bitmap filling algorithm may overflow the framebuffer and cause segfault 110 111## Plotters 0.2.9 (2019-10-21) 112 113### Improvement 114 115- Avoid copying image buffer when manipulate the image. (Thanks to @ralfbiedert) 116- Bitmap element which allows blit the image to another drawing area. 117- Performance improvement: now the bitmap backend is 8 times faster 118- Added benchmarks to monitor the performance change 119 120### Bug Fix 121 122- Performance fix: '?' operator is very slow 123- Dynamic Element lifetime bound: Fix a bug that prevents area series draws on non-static lifetime backend 124 125## Plotters 0.2.8 (2019-10-12) 126 127### Added 128 129- Cairo backend, which supports using Plotters draw a GTK surface. 130- Allow secondary axis to be configured with different label style. 131- Relative Sizing, now font and size can use relative scale: `(10).percent\_height()` means we want the size is 10% of parent's height. 132- Allow the axis overlapping with the plotting area with `ChartBuilder::set\_\label\_area\_overlap`. 133- Allow label area is on the top of the drawing area by setting the label area size to negative (Thanks to @serzhiio). 134- Allow configure the tick mark size, when the tick mark size is negative the axis becomes inward (Thanks to @serzhiio). 135 136### Bug Fix 137 138- `FontError` from rusttype isn't `Sync` and `Send`. We don't have trait bound to ensure this. (Thanks to @dalance) 139 140### Improvement 141 142- New convenient functions: `disable_mesh` and `disable_axes` 143 144## Plotters 0.2.7 (2019-10-1) 145 146### Added 147 148- GIF Support, now bitmap backend is able to render gif animation 149 150### Bug Fix 151 152- Fixed several polygon filling bugs. 153- Completely DateTime coordinate system support 154 155## Plotters 0.2.6 (2019-09-19) 156 157### Added 158 159- Allowing axis be placed on top or right by setting `right_y_label_area` and `top_x_label_area` 160- Dual-coord system chart support: Now we are able to attach a secondary coord system to the chart using `ChartContext::set_secondary_coord`. And `draw_secondary_axes` to configure the style of secondary axes. Use `draw_secondary axis` to draw series under the secondary coordinate system. 161- Add support for `y_label_offset`. Previously only X axis label supports offset attribute. 162- New label area size API `set_label_area_size` can be used for all 4 label area 163- Added new error bar element 164- New axis specification type `PartialAxis` which allows the partially rendered axis. For example, we can define the chart's axis range as `0..1`, but only `0.3..0.7` is rendered on axis. This can be done by `(0.0..1.0).partial_axis(0.3..0.7)` 165- Drawing backend now support fill polygon and introduce polygon element 166- Area Chart Support 167 168### Improvement 169 170- More examples are included 171- Date coordinate now support using monthly or yearly axis. This is useful when plotting some data in monthly or yearly basis. 172- Make margin on different side of a chart can be configured separately. 173- Better test coverage 174 175## Plotters 0.2.5 (2019-09-07) 176 177### Bug Fix 178 179- Key points algorithm for numeric coordinate might not respect the constraint 180 181## Plotters 0.2.4 (2019-09-05) 182 183### Improvement 184 185- Add `i128` and `u128` as coordinate type (Credit to @Geemili) 186 187### Bug Fix 188 189- Date coordinate is working for a long time span now 190 191## Plotters 0.2.3 (2019-08-19) 192 193### Improvement 194 195- Color system now is based on `palette` crate (Credit to @Veykril) 196 197## Plotters 0.2.2 (2019-06-25) 198 199### Added 200 201- More documentation: a Jupyter interactive notebook of Plotters tutorial 202- Add more quadrants to the `SeriesLabelPosition` (Credit to @wolfjagger). 203 204### Improvement 205 206- Histogram improvements, horizontal bar is supported, new creation API which compiler can infer the type 207- Supporting split the drawing area with a list of breakpoints using `DrawingArea::split_by_breakpoints` 208- Enable SVG support for WASM 209- Make the `BitMapBackend` takes an in memory mutable buffer 210 211### Fix 212 213- Rectangle drawing bug when the axis is reversed 214 215## Plotters 0.2.1 (2019-06-10) 216 217### Improvement 218 219- Move the sample images and other documentation data out of this repository. 220 221### Fix 222- Make drawing errors shareable across threads. Otherwise, it causes compile error in some cases. (Thanks to @rkarp) 223 224## Plotters 0.2.0 (2019-06-08) 225 226### Added 227- Add relative sizing by added function `DrawingArea::relative_to_height` and `DrawingArea::relative_to_width`. 228- Added piston backend, now we can render plot on a window and dynamically render the plot 229 230### Improved 231- Creating drawing area with `&Rc<RefCell<DrawingBackend>>`. Previously, the drawing area creation requires take over the drawing backend ownership. But sometimes the drawing backend may have additional options. With new API, this can be done by putting the backend drawing area into smart pointers, thus, the drawing backend is accessible after creates the root drawing area. 232 233## Plotters 0.1.14 (2019-06-06) 234 235### Added 236- Font is now support rotation transformation. Use `FontDesc::transform` to apply an rotation to transformation. For example, `font.transform(FontTransform::Rotate90)`. 237- ChartContext now support drawing axis description. Use `MeshStyle::x_desc` and `MeshStyle::y_desc` to specify the axis description text. 238- Add series label support. `ChartContext::draw_series` now returns a struct `SeriesAnno` that collects the additional information for series labeling. `ChartContext::draw_series_labels` are used to actually draw the series label. (See `examples/chart.rs` for detailed examples) 239- Mocking drawing backend. 240- evcxr Support 241 242### Improvement 243- Unify `OwnedText` and `Text` into `Text`. Previously, `OwnedText` and `Text` are two separate types, one holds a `String` another holds a `&str`. Now `OwnedText` is removed. 244use `Text::new("text".to_string(),...)` for owned text element and `Text::new("text", ...)` for borrowed text. 245- Refactor the color representation code, since previously it's heavily relies on the trait object and hard to use 246- More test cases 247 248## Plotters 0.1.13 (2019-05-31) 249 250### Added 251- New abstraction of backend style with `BackendStyle` trait which should be able to extend easier in the future 252- Backend support features, now feature options can be used to control which backend should be supported 253- Add new trait `IntoDrawingArea`, now we can use `backend.into_drawing_area()` to convert the backend into a raw drawing area 254- Now elements support dynamic dispatch, use `element.into_dyn()` to convert the element into a runtime dispatching element 255 256### Improvement 257- Improved the overall code quality 258- Documentation polish 259- Stabilized APIs 260- New conversion traits implementations 261- Now transparent color is ignored by SVG, bitmap and HTML Canvas backend 262 263### Fix 264- Changed the open-close pattern to a `present` function which indicates the end of drawing one frame 265- Fix the but that `ChartBuilder::title` and `ChartBuilder::margin` cannot be called at the same time && `build_ranged` now returning a result. 266