smart_arrays_plot_polyline 2.1.0

Smart Arrays Plot Polyline #

What the package can do for you #

  • This package was designed for Web applications which need to plot 1D arrays in form of polylines (curves in the x, y plane).
  • A plot may consist of one or several polylines (scaled relative to each other if desired), optionally with x and y axes, a coordinate grid, a text legend, selection icons, and marker text.
  • Many array viewing options are provided, such as colors, fonts, zooming, scaling, shifting, rotation, layout parameters.
  • Also, lists of points represented by circles or other shapes can be drawn, draw a curve using individual points rather than connecting the points by polylines.
  • The arrays to be plotted may have small or big sizes (even e.g. 1 million points). To achieve fast plotting without loosing information given typical screen or window sizes, a suitable data compression is applied before plotting (using the compression package listed at the end of the document).
  • Plotting is performed using Scalable Vector Graphics SVG.

Example #

The major API functionalities #

  • Class SimplePlot to create a plot from several arrays, with x and y axes, a text legend and a coordinate grid with just a few lines of code.

  • Class Polyline to construct a polyline plot of desired size from an array with optional layout and viewing parameters.

  • Class Axis to construct an x and/or y axis for a polyline plot.

  • Class XYGrid to construct a rectangular coordinate grid consisting of horizontal and/or vertical lines, to be used to overlay a polyline plot.

  • Class Legend to construct a legend consisting of a text line at the top ("top title") and optionally several more lines, each one preceded by a color rectangle (useful when displaying several polylines).

  • Class MarkerLines to draw vertical marker lines and text above a polyline..

  • Class PhysUnits to convert between "physical units" and array indices, useful for axis annotation.

  • Classes Utils and JsonUtils providing useful helper functions.

  • Basic usage of the package: see example directory.

smart_arrays_base: Basic functions for 1D and 2D arrays

smart_arrays_numerics: Numerics with 1D and 2D arrays

smart_arrays_compress: Compress 1D and 2D arrays to a smaller size.

smart_arrays_sample_data: Computes 1D and 2D arrays containing sample data.

smart_arrays_dbstore: Store 1D and 2D arrays along with metadata on the local device.

smart_arrays_peaks: Detect peaks in 1D and 2D arrays.

smart_arrays_contour_finder: Contours the three-dimensional surface represented by the values f(x,y) of a matrix.

smart_arrays_lmfit: Fits (x, y) data given as arrays to a specified model function using the Levenberg-Marquardt algorithm.

smart_lorentz_gauss: Compute Lorentz-Gauss (pseudo-Voigt) line shapes.

smart_signal_processing: Fourier transform and more of arrays.

smart_dialogs: Easy-to-use dialogs in Web applications

Smart Arrays Plot Polyline #

Version history #

2.0.0 - 2019-07-10 First version available on pub. site.

2.0.1 - 2019-08-02 Fixed health suggestions of

2.0.2 - 2019-08-02 Fixed more health suggestions of

2.0.3 - 2019-08-02 Fixed more health suggestions of

2.0.4 - 2019-08-04 Fixed more health suggestions of

2.0.5 - 2019-08-04 Fixed web address of executable example

2.0.6 - 2019-08-04 Using package:pedantic/analysis_options.yaml from now on

2.0.7 - 2019-08-31 Added class SimplePlot to create a plot with a few lines of code.

2.0.8 - 2019-09-01 Documentation update

2.0.9 - 2019-09-03 Documentation update

2.0.10 - 2019-09-09 Added point coloring (attribute POINT_LIST_STROKE)

2.0.11 - 2019-09-11 Added class MarkerLines and the method Polyline.drawMarkers to draw vertical marker lines and text above a polyline.

2.1.0 - 2019-09-14 Example makes use of smart_arrays_sample_data


import 'dart:html';
import 'dart:convert';
import 'dart:typed_data';

import 'package:smart_arrays_plot_polyline/smart_arrays_plot_polyline.dart';
import 'package:smart_arrays_sample_data/smart_arrays_sample_data.dart';

/// Demonstrates the usage of the package 'smart_arrays_plot_polyline' by displaying
/// two arrays (containing some periods of sin(x) and a sin(x)/x) as polylines
/// along with coordinate axes, a coordinate grid, a border and a legend.
main() {
  // compute 2 arrays with a sinc and a sine function, to be displayed later
  Float64List sinc = Sinc1D(1000, 100.0, 0.0, 8, 0.0).array;
  Float64List sine = Sine1D(2000, 20.0, 0.0, 8, 0.0, 0.0).array;

  // get divs from 'example.html' (application and plot containers)
  DivElement appDiv = (querySelector("#app_div") as DivElement);
  DivElement plotDiv = (querySelector("#plot_div") as DivElement);

  // the plot will take all available space of [appDiv] in this example
    ..width = "${appDiv.clientWidth}px"
    ..height = "${appDiv.clientHeight}px";

  // setup some polyline, axis and legend attributes
  List<Map<PyA, String>> plotAttr = [
    {PyA.YPOSITION_ZERO: "0.8"}, // rel. y position of the value 0
    {PyA.YPOSITION_ZERO: "0.8"}

  final String GREEK_PI = '\u03C0';
  Map<AxA, String> xaxisAttr = {
    AxA.PHYS_X_START: "0",
    AxA.PHYS_X_WIDTH: "8",
    AxA.LEGENDTEXT: "Number of periods (2*$GREEK_PI)"

  Map<AxA, String> yaxisAttr = {AxA.LEGENDTEXT: "Function value ('intensity')"};
  Map<LegA, String> legendAttr = {
    LegA.TOP_TITLE: "Example plot using the class 'SimplePlot'",
    LegA.SUB_TITLES: json.encode(["100 * sin(x) / x", " 20 * sin(x)"]),
    LegA.X: "45",
    LegA.Y: "15"

  // plot the arrays into [plotDiv]
      [sinc, sine], plotDiv, plotAttr, xaxisAttr, yaxisAttr, legendAttr, null);

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  smart_arrays_plot_polyline: ^2.1.0

2. Install it

You can install packages from the command line:

with pub:

$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:smart_arrays_plot_polyline/smart_arrays_plot_polyline.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Sep 17, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.5.0
  • pana: 0.12.21


Detected platforms: web

Primary library: package:smart_arrays_plot_polyline/smart_arrays_plot_polyline.dart with components: html.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.5.0 <3.0.0
build_runner ^1.6.2 1.7.0
build_web_compilers ^2.1.4 2.4.0
pedantic ^1.7.0 1.8.0+1
smart_arrays_base ^2.0.9 2.0.9
smart_arrays_compress ^2.0.7 2.0.9
smart_arrays_sample_data ^2.0.3 2.0.3
Transitive dependencies
analyzer 0.38.2
archive 2.0.10
args 1.5.2
async 2.3.0
bazel_worker 0.1.22
build 1.1.6
build_config 0.4.1+1
build_daemon 2.1.0
build_modules 2.5.0
build_resolvers 1.0.7
build_runner_core 4.0.0
built_collection 4.2.2
built_value 6.7.1
charcode 1.1.2
checked_yaml 1.0.2
code_builder 3.2.0
collection 1.14.12
convert 2.1.1
crypto 2.1.3
csslib 0.16.1
dart_style 1.2.10
fixnum 0.10.9
front_end 0.1.24
glob 1.1.7
graphs 0.2.0
html 0.14.0+2
http 0.12.0+2
http_multi_server 2.1.0
http_parser 3.1.3
io 0.3.3
js 0.6.1+1
json_annotation 3.0.0
kernel 0.3.24
logging 0.11.3+2
matcher 0.12.5
meta 1.1.7
mime 0.9.6+3
package_config 1.1.0
package_resolver 1.0.10
path 1.6.4
pool 1.4.0
protobuf 0.14.3
pub_semver 1.4.2
pubspec_parse 0.1.5
quiver 2.0.5
scratch_space 0.0.4
shelf 0.7.5
shelf_web_socket 0.2.3
source_maps 0.10.8
source_span 1.5.5
stack_trace 1.9.3
stream_channel 2.0.0
stream_transform 0.0.19
string_scanner 1.0.5
term_glyph 1.1.0
timing 0.1.1+2
typed_data 1.1.6
watcher 0.9.7+12
web_socket_channel 1.0.15
yaml 2.1.16