Subversion Repositories wimsdev

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2071 zjchen 1
!goto $wims_read_parm
2
 
3
:def
4
title=Histogram
5
synonyme=plot frequency, frequency plot
6
input=data1d
7
!exit
8
 
9
:proc
10
 
11
cnt=!itemcnt $formula
12
range=!trim $range
13
!default range=$range1
14
range=!trim $range
15
!default range=1
16
range=$[$range]
17
data1=!item 1 of $formula
18
data1=$[$data1]
19
!if NaN isin $range or Inf isin $range or \
20
	NaN isin $data1 or Inf isin $data1 or \
21
	$range*10000<abs($data1)
22
 error=bad_formula
23
 !exit
24
!endif
25
 
26
list=!values (floor(x/$range)+0.5)*($range) for x in $formula
27
!if NaN isin $list or Inf isin $list
28
 error=bad_formula
29
 !exit
30
!endif
31
list=!sort numeric item $list
32
 
33
x1=!item 1 of $list
34
x2=!item -1 of $list
35
y1=0
36
y2=1
37
 
38
old=$x1
39
ocnt=1
40
!reset pdata
41
!for i=2 to $cnt
42
 curr=!item $i of $list
43
 !if $curr=$old
44
  !advance ocnt
45
 !else
46
  pdata=!append line $old $ocnt to $pdata
47
  y2=$[max($y2,$ocnt)]
48
  old=$curr
49
  ocnt=1
50
 !endif
51
!next i
52
pdata=!append line $old $ocnt to $pdata
53
insplot_data=$pdata
54
 
55
y2=$[ceil($y2*1.2)]
56
xdiff=$[max($range,0.1*($x2-($x1)))]
57
x1=$[$x1-$xdiff]
58
x2=$[$x2+$xdiff]
59
 
60
insplot_set=size $[$picx/500], $[$picy/400]; boxwidth $range
61
!insplot [$x1:$x2] [$y1:$y2] 'insplot_data' notitle with boxes
62
result=$ins_out
63
!if getins notin $result
64
 result=
65
!endif
66
 
67
!exit
68
 
69
:output
70
 
71
<center>
72
$result
73
</center> <p>
74
Interval = $range. Data: $cnt numbers { $formula }
75
<p>
76
!exit
77