File: plotchart.rb [tk: Ruby Standard Library Documentation]

Last Modified
  2019-05-06 17:00:11 -0500
Requires
  - tk
  - tkextlib/tcllib.rb
  - Plotchart
  - Plotchart

## Description

    tkextlib/tcllib/plotchart.rb
                                 by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)

     * Part of tcllib extension
     * Simple plotting and charting package

(The following is the original description of the library.)

Plotchart is a Tcl-only package that focuses on the easy creation of xy-plots, barcharts and other common types of graphical presentations. The emphasis is on ease of use, rather than flexibility. The procedures that create a plot use the entire canvas window, making the layout of the plot completely automatic.

This results in the creation of an xy-plot in, say, ten lines of code:

    package require Plotchart

    canvas .c -background white -width 400 -height 200
    pack   .c -fill both

    #
    # Create the plot with its x- and y-axes
    #
    set s [::Plotchart::createXYPlot .c {0.0 100.0 10.0} {0.0 100.0 20.0}]

    foreach {x y} {0.0 32.0 10.0 50.0 25.0 60.0 78.0 11.0 } {
        $s plot series1 $x $y
    }

    $s title "Data series"

A drawback of the package might be that it does not do any data management. So if the canvas that holds the plot is to be resized, the whole plot must be redrawn. The advantage, though, is that it offers a number of plot and chart types:

    * XY-plots like the one shown above with any number of data series.
    * Stripcharts, a kind of XY-plots where the horizontal axis is adjusted
      automatically. The result is a kind of sliding window on the data
      series.
    * Polar plots, where the coordinates are polar instead of cartesian.
    * Isometric plots, where the scale of the coordinates in the two
      directions is always the same, i.e. a circle in world coordinates
      appears as a circle on the screen.
      You can zoom in and out, as well as pan with these plots (Note: this
      works best if no axes are drawn, the zooming and panning routines do
      not distinguish the axes), using the mouse buttons with the control
      key and the arrow keys with the control key.
    * Piecharts, with automatic scaling to indicate the proportions.
    * Barcharts, with either vertical or horizontal bars, stacked bars or
      bars side by side.
    * Timecharts, where bars indicate a time period and milestones or other
      important moments in time are represented by triangles.
    * 3D plots (both for displaying surfaces and 3D bars)