1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
#!/usr/bin/env tclsh
## -*- tcl -*-
package require Tcl 8.4
package require Tk
package require Plotchart
# plotdemos2.tcl --
# Second test program for the Plotchart package
#
#
# Main code
#
canvas .c -background white -width 400 -height 200
canvas .c2 -background white -width 400 -height 200
pack .c .c2 -fill both -side top
#
# Set up a strip chart
#
set s [::Plotchart::createStripchart .c {0.0 100.0 10.0} {0.0 100.0 20.0}]
proc gendata {slipchart xold xd yold yd} {
set xnew [expr {$xold+$xd}]
set ynew [expr {$yold+(rand()-0.5)*$yd}]
set ynew2 [expr {$yold+(rand()-0.5)*2.0*$yd}]
$slipchart plot series1 $xnew $ynew
$slipchart plot series2 $xnew $ynew2
if { $xnew < 200 } {
after 500 [list gendata $slipchart $xnew $xd $ynew $yd]
}
}
after 100 [list gendata $s 0.0 15.0 50.0 30.0]
$s title "Aha!"
#
# Set up an isometric plot
#
set s [::Plotchart::createIsometricPlot .c2 {0.0 100.0} {0.0 200.0} noaxes]
::Plotchart::setZoomPan .c2
$s plot rectangle 10.0 10.0 50.0 50.0 green
$s plot filled-rectangle 20.0 20.0 40.0 40.0 red
$s plot filled-circle 70.0 70.0 40.0 yellow
$s plot circle 70.0 70.0 42.0
#
# Check the symbols
#
toplevel .h
canvas .h.c -bg white -width 400 -height 200
pack .h.c -fill both
set s [::Plotchart::createXYPlot .h.c {0.0 100.0 10.0} {0.0 100.0 20.0}]
$s dataconfig series1 -colour red -type symbol
$s dataconfig series2 -colour green -type both
$s yconfig -format "%12.2e"
set x 5.0
foreach symbol {plus cross circle up down dot upfilled downfilled} {
$s dataconfig series1 -symbol $symbol
$s dataconfig series2 -symbol $symbol
$s plot series1 $x 50.0
$s plot series2 $x 20
set x [expr {$x+10}]
}
#
# Second window: XY-plot with background and a Pareto plot
# Note:
# The data series is filled upwards, so that a white polygon
# hides the shading above the line. You need to let the
# series cover the whole axis, otherwise the effect is lost.
#
toplevel .t2
canvas .t2.c -background white -width 400 -height 200
canvas .t2.c2 -background white -width 400 -height 200
pack .t2.c .t2.c2 -fill both
set s [::Plotchart::createXYPlot .t2.c {0.0 100.0 10.0} {0.0 100.0 20.0}]
$s background gradient green top-down
$s dataconfig series1 -filled up -fillcolour white
$s plot series1 0.0 20.0
$s plot series1 10.0 20.0
$s plot series1 30.0 50.0
$s plot series1 35.0 45.0
$s plot series1 45.0 25.0
$s plot series1 75.0 55.0
$s plot series1 100.0 55.0
$s plaintext 30.0 60.0 "Peak" south
set s2 [::Plotchart::createXYPlot .t2.c2 {0.0 100.0 10.0} {0.0 100.0 20.0}]
set image [image create photo bg -file [file join [file dirname [info script]] tcllogo.gif]]
$s2 background image $image
#$s2 dataconfig series1 -filled up -fillcolour white
$s2 plot series1 0.0 20.0
$s2 plot series1 10.0 20.0
$s2 plot series1 30.0 50.0
$s2 plot series1 35.0 45.0
$s2 plot series1 45.0 25.0
$s2 plot series1 75.0 55.0
$s2 plot series1 100.0 55.0
$s2 plaintext 30.0 60.0 "Peak" south
#
# Not ready for prime time
if { 0 } {
set s3 [::Plotchart::createBarchart .t2.c3 {{} "Type 1" "Type 2" "Type 3" } \
{0.0 50.0 10.0} 1]
set s4 [::Plotchart::createRightAxis .t2.c3 {0.0 100.0 20.0}]
set data {0.0 20.0 5.0 30.0}
$s3 plot series1 {0.0 20.0 5.0 30.0} blue
$s4 plot series2 0.5 0.0
$s4 plot series2 1.5 20.0
$s4 plot series2 2.5 5.0
$s4 plot series2 2.5 30.0
}
|