smart_arrays_plot_polyline 2.2.1

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.2.1 - 2019-10-05 Fixed another bug in example2

2.2.0 - 2019-10-05 Fixed bug in example2

2.1.9 - 2019-10-05 Added class SimplePlot.mult and example2.dart

2.1.8 - 2019-10-01 Added link to contour finder

2.1.7 - 2019-10-01 Fixed exporting SimpleContourRenderer

2.1.6 - 2019-10-01 Added class SimpleContourRenderer

2.1.5 - 2019-09-27 Changed signature of the constructors, vertical axis for contour plot now working.

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

2.1.1 - 2019-09-25 Added class PlotLayoutSVG

2.1.2 - 2019-09-25 Updates exampl.dart.js

2.1.3 - 2019-09-25 Changed signature of PlotLayoutSVG()

2.1.4 - 2019-09-26 Removed class SimpleContourRenderer, now available in package smart_arrays_plot_2d.


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.
/// See also: example2.dart
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.2.1

2. Install it

You can install packages from the command line:

with pub:

$ pub get

with Flutter:

$ flutter pub get

Alternatively, your editor might support pub get or flutter 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 Feb 13, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.5

Health suggestions

Format lib/src/axis.dart.

Run dartfmt to format lib/src/axis.dart.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.4.0 <3.0.0
build_runner ^1.6.2 1.7.4
build_web_compilers ^2.1.4 2.9.0
pedantic ^1.7.0 1.9.0
smart_arrays_base ^2.0.9 2.1.0
smart_arrays_compress ^2.0.7 2.1.0
smart_arrays_contour_finder ^2.0.3 2.0.6
smart_arrays_sample_data ^2.0.3 2.0.5
Transitive dependencies
_fe_analyzer_shared 1.0.3
analyzer 0.39.4
archive 2.0.13
args 1.5.2
async 2.4.0
bazel_worker 0.1.23+1
build 1.2.2
build_config 0.4.2
build_daemon 2.1.3
build_modules 2.8.0
build_resolvers 1.3.3
build_runner_core 4.4.0
built_collection 4.3.2
built_value 7.0.9
charcode 1.1.3
checked_yaml 1.0.2
code_builder 3.2.1
collection 1.14.12
convert 2.1.1
crypto 2.1.4
csslib 0.16.1
dart_style 1.3.3
fixnum 0.10.11
glob 1.2.0
graphs 0.2.0
html 0.14.0+3
http 0.12.0+4
http_multi_server 2.2.0
http_parser 3.1.3
io 0.3.3
js 0.6.1+1
json_annotation 3.0.1
logging 0.11.4
matcher 0.12.6
meta 1.1.8
mime 0.9.6+3
node_interop 1.0.3
node_io 1.0.1+2
package_config 1.1.0 2.0.0
package_resolver 1.0.10
path 1.6.4
pool 1.4.0
protobuf 1.0.1
pub_semver 1.4.3
pubspec_parse 0.1.5
quiver 2.1.2+1
scratch_space 0.0.4+2
shelf 0.7.5
shelf_web_socket 0.2.3
smart_arrays_numerics 2.1.1
smart_lorentz_gauss 2.1.2
source_maps 0.10.9
source_span 1.6.0
stack_trace 1.9.3
stream_channel 2.0.0
stream_transform 1.1.0
string_scanner 1.0.5
term_glyph 1.1.0
timing 0.1.1+2
typed_data 1.1.6
watcher 0.9.7+13
web_socket_channel 1.1.0
yaml 2.2.0