You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.2 KiB
83 lines
3.2 KiB
# Plotters Release Notes
|
|
|
|
This documents contains the release notes for every major release since v0.3.
|
|
|
|
## Plotters v0.3
|
|
|
|
Plotters v0.3 is shipped with multiple major improvements.
|
|
|
|
## Plug-and-play backend importing
|
|
|
|
### Introduction
|
|
|
|
Previously, Plotters implements all supported backend in the core crate. As the project is becoming bigger and bigger and
|
|
more and more backend is supported, those backend implementation cause a huge mantainance burden.
|
|
|
|
For example, when `cairo-rs` crate is updated, plotters should release a new version with updated `cairo-rs` dependency for
|
|
our cairo backend. However, most of the users doesn't actually use this backend and pushing new version for updating cairo backend
|
|
seems to be annoying for most of the people. As more and more backend is added, the depdendency is out of control.
|
|
|
|
### Details
|
|
|
|
To address this, we are now move all backend implementation code out of the plotters crate. To use a specific backend, you need to
|
|
explicitly add backend crate to your dependency. For example, to use bitmap backend for v0.2.x, we can do this
|
|
|
|
```rust
|
|
use plotters::prelude::*;
|
|
fn main() {
|
|
let backend = BitMapBackend::new(...)
|
|
}
|
|
```
|
|
|
|
After this update, you should do the following code instead:
|
|
|
|
```rust
|
|
use plotters::prelude::*;
|
|
use plotter_bitmap::BitMapBackend; // <= This extra import is used to plug the backend to Plotters
|
|
|
|
fn main() {
|
|
let backend = BitMapBackend::new(...)
|
|
}
|
|
|
|
```
|
|
|
|
### Backward compatibility
|
|
|
|
Plotters 0.3 has introduced concept of tier 1 backends, which is the most supported.
|
|
All tier 1 backends could be imported automatically with the core crate (But can be opt-out as well).
|
|
Currently we have two tier 1 backends: `plotters-bitmap` and `plotters-svg`.
|
|
These are used by most of the people.
|
|
|
|
To ease the upgrade for tier 1 backends, we still keep feature options in the core crate that can opt in those crates. And this is enabled by default.
|
|
|
|
Thus, if plotters is imported with default feature set, there would require no change. If the default feature set is opt out, then the following change
|
|
should be make with your `Crates.toml`:
|
|
|
|
```toml
|
|
plotters = {version = "0.3", default_features = false, features = ["bitmap_backend", "svg_backend"]} # Instead of using feature "bitmap" and "svg"
|
|
```
|
|
|
|
For non tier 1 backends, manmually import is required (Please note tier on backends can be imported in same way). For example:
|
|
|
|
```toml
|
|
plotters = {version = "0.3", default_features = false} # Instead of having features = ["cairo"] at this point
|
|
plotters-cairo = "0.3" # We should import the cairo backend in this way.
|
|
```
|
|
|
|
And in your code, instead of import `plotters::prelude::CairoBackend`, you should import `plotters_cairo::CairoBackend`
|
|
|
|
## Enhanced Coordinate System Abstraction
|
|
|
|
### Details
|
|
|
|
Plotters 0.3 ships with tons of improvement made in the coordinate abstraction and support much more kinds of coordinate.
|
|
|
|
* `chrono::NaiveDate` and `chrono::NaiveDateTime` are now supported
|
|
* Better abstraction of discrete coordinates
|
|
* Linspace coordinate, which can be used converting a continous coorindate into a discrete buckets
|
|
* Nested coordinate
|
|
* Slices can now be used as cooradnite specification, which allows people define an axis of category.
|
|
* 3D Coordinate is now supported
|
|
|
|
## Fix bugs and improve testing
|