/usr/share/doc/libplplot12/examples/tcl/x04.tcl is in plplot-tcl-dev 5.10.0+dfsg2-0.1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | #----------------------------------------------------------------------------
# $Id: x04.tcl 12322 2013-05-02 10:25:42Z arjenmarkus $
#----------------------------------------------------------------------------
proc x04 {{w loopback}} {
$w cmd plfont 2
plot41 $w 0
plot41 $w 1
# Restore defaults
$w cmd plfont 1
# $w cmd plcol0 1
}
proc plot41 {w type} {
matrix freql f 101
matrix ampl f 101
matrix phase f 101
$w cmd pladv 0
set f0 1.0
for {set i 0} {$i <= 100} {incr i} {
freql $i = [expr {-2.0 + $i / 20.0}]
set freq [expr {pow(10.0, [freql $i])}]
ampl $i = [expr {20.0 * log10(1.0 / sqrt(1.0 + pow(($freq/$f0), 2)))}]
phase $i = [expr {-(180.0 / $::PLPLOT::PL_PI) * atan($freq/$f0)}]
}
$w cmd plvpor 0.15 0.85 0.1 0.9
$w cmd plwind -2.0 3.0 -80.0 0.0
$w cmd plcol0 1
if {$type == 0} {
$w cmd plbox "bclnst" 0.0 0 "bnstv" 0.0 0
} elseif {$type ==1} {
$w cmd plbox "bcfghlnst" 0.0 0 "bcghnstv" 0.0 0
} else {
puts "error: type must be either 0 or 1"
}
$w cmd plcol0 2
$w cmd plline 101 freql ampl
$w cmd plcol0 2
$w cmd plptex 1.6 -30.0 1.0 -20.0 0.5 "-20 dB/decade"
# Put labels on
$w cmd plcol0 1
$w cmd plmtex "b" 3.2 0.5 0.5 "Frequency"
$w cmd plmtex "t" 2.0 0.5 0.5 "Single Pole Low-Pass Filter"
$w cmd plcol0 2
$w cmd plmtex "l" 5.0 0.5 0.5 "Amplitude (dB)"
set nlegend 1
# For the gridless case, put phase vs freq on same plot
if {$type == 0} {
$w cmd plcol0 1
$w cmd plwind -2.0 3.0 -100.0 0.0
$w cmd plbox "" 0.0 0 "cmstv" 30.0 3
$w cmd plcol0 3
$w cmd plline 101 freql phase
$w cmd plstring 101 freql phase "*"
$w cmd plcol0 3
$w cmd plmtex "r" 5.0 0.5 0.5 "Phase shift (degrees)"
set nlegend 2
}
# Draw a legend
# First legend entry.
set opt_array [list $::PLPLOT::PL_LEGEND_LINE]
set text_colors [list 2]
set text [list Amplitude]
set line_colors [list 2]
set line_styles [list 1]
set line_widths [list 1.0]
# note from the above opt_array the first symbol (and box) indices
# will not be used, but they have to be specified anyway!
# (make sure the values are reasonable)
# Second legend entry.
lappend opt_array [expr {$::PLPLOT::PL_LEGEND_LINE | $::PLPLOT::PL_LEGEND_SYMBOL}]
lappend text_colors 3
lappend text "Phase shift"
lappend line_colors 3
lappend line_styles 1
lappend line_widths 1
set symbol_colors [list 0 3]
set symbol_scales [list 0.0 1.0]
set symbol_numbers [list 0 4]
set symbols [list "" "*"]
# from the above opt_arrays we can completely ignore everything
# to do with boxes.
$w cmd plscol0a 15 32 32 32 0.70
foreach { legend_width legend_height } \
[$w cmd pllegend [expr {$::PLPLOT::PL_LEGEND_BACKGROUND | $::PLPLOT::PL_LEGEND_BOUNDING_BOX}] 0 \
0.0 0.0 0.1 15 \
1 1 0 0 \
[lrange $opt_array 0 [expr {$nlegend-1}]] \
1.0 1.0 2.0 \
1. $text_colors $text \
{} {} {} {} \
$line_colors $line_styles $line_widths \
$symbol_colors $symbol_scales $symbol_numbers $symbols] {
break
}
}
|