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