svg_graph 0.7

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -0,0 +1,179 @@
1
+ <?xml version='1.0'?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
3
+ <svg xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 640 480' height='480' width='640' xmlns='http://www.w3.org/2000/svg' xmlns:a3="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" a3:scriptImplementation="Adobe">
4
+ <!-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
5
+ -->
6
+ <!-- Created with SVG::Graph
7
+ -->
8
+ <!-- Sean Russell
9
+ -->
10
+ <!-- Based on SVG::TT::Graph for Perl by Leo Lapworth & Stephan Morgan
11
+ -->
12
+ <!-- //////////////////////////////////////////////////////////////////
13
+ -->
14
+ <defs/>
15
+ <!--SVG Background
16
+ -->
17
+ <rect x='0' class='svgBackground' y='0' height='480' style='fill:#ffffff;' width='640'/>
18
+ <g transform='translate( 40.4 26 )'>
19
+ <rect x='0' class='graphBackground' y='0' height='394' style='fill:#f0f0f0;' width='480.6'/>
20
+ <path class='axis' d='M 0 0 v394' id='xAxis' style='stroke: #000000; stroke-width: 1px;'/>
21
+ <path class='axis' d='M 0 394 h480.6' id='yAxis' style='stroke: #000000; stroke-width: 1px;'/>
22
+ <text x='0.0' class='xAxisLabels' y='409' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>1973</text>
23
+ <text x='72.9780617037263' class='xAxisLabels' y='426' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>1978</text>
24
+ <path class='staggerGuideLine' d='M72.9780617037263 394 v17' style='fill: none; stroke: #000000; stroke-width: 0.5px;'/>
25
+ <path class='guideLines' d='M72.9780617037263 0 v394' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
26
+ <text x='145.956123407453' class='xAxisLabels' y='409' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>1983</text>
27
+ <path class='guideLines' d='M145.956123407453 0 v394' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
28
+ <text x='218.934185111179' class='xAxisLabels' y='426' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>1988</text>
29
+ <path class='staggerGuideLine' d='M218.934185111179 394 v17' style='fill: none; stroke: #000000; stroke-width: 0.5px;'/>
30
+ <path class='guideLines' d='M218.934185111179 0 v394' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
31
+ <text x='291.912246814905' class='xAxisLabels' y='409' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>1993</text>
32
+ <path class='guideLines' d='M291.912246814905 0 v394' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
33
+ <text x='364.890308518632' class='xAxisLabels' y='426' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>1998</text>
34
+ <path class='staggerGuideLine' d='M364.890308518632 394 v17' style='fill: none; stroke: #000000; stroke-width: 0.5px;'/>
35
+ <path class='guideLines' d='M364.890308518632 0 v394' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
36
+ <text x='437.868370222358' class='xAxisLabels' y='409' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>2003</text>
37
+ <path class='guideLines' d='M437.868370222358 0 v394' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
38
+ <text x='-3' class='yAxisLabels' y='398.0' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>0</text>
39
+ <text x='-3' class='yAxisLabels' y='356.888888888889' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>2</text>
40
+ <path class='guideLines' d='M0 352.888888888889 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
41
+ <text x='-3' class='yAxisLabels' y='315.777777777778' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>4</text>
42
+ <path class='guideLines' d='M0 311.777777777778 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
43
+ <text x='-3' class='yAxisLabels' y='274.666666666667' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>6</text>
44
+ <path class='guideLines' d='M0 270.666666666667 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
45
+ <text x='-3' class='yAxisLabels' y='233.555555555556' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>8</text>
46
+ <path class='guideLines' d='M0 229.555555555556 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
47
+ <text x='-3' class='yAxisLabels' y='192.444444444444' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>10</text>
48
+ <path class='guideLines' d='M0 188.444444444444 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
49
+ <text x='-3' class='yAxisLabels' y='151.333333333333' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>12</text>
50
+ <path class='guideLines' d='M0 147.333333333333 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
51
+ <text x='-3' class='yAxisLabels' y='110.222222222222' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>14</text>
52
+ <path class='guideLines' d='M0 106.222222222222 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
53
+ <text x='-3' class='yAxisLabels' y='69.1111111111111' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>16</text>
54
+ <path class='guideLines' d='M0 65.1111111111111 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
55
+ <text x='-3' class='yAxisLabels' y='28.0' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>18</text>
56
+ <path class='guideLines' d='M0 24.0 h480.6' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
57
+ <path class='line1' d='M14.9843030972302 250.111111111111 L14.9843030972302 250.111111111111 21.25842845231 167.888888888889 184.865238666939 352.888888888889 228.664228406859 373.444444444444 321.658821548009 126.777777777778 418.806192989469 209.0 456.6 167.888888888889 ' style='fill: none; stroke: #ff0000; stroke-width: 1px;'/>
58
+ <circle cy='250.111111111111' class='dataPoint1' r='2.5' style='fill: #ff0000; stroke: none; stroke-width: 1px;' cx='14.9843030972302'/>
59
+ <circle cy='167.888888888889' class='dataPoint1' r='2.5' style='fill: #ff0000; stroke: none; stroke-width: 1px;' cx='21.25842845231'/>
60
+ <circle cy='352.888888888889' class='dataPoint1' r='2.5' style='fill: #ff0000; stroke: none; stroke-width: 1px;' cx='184.865238666939'/>
61
+ <circle cy='373.444444444444' class='dataPoint1' r='2.5' style='fill: #ff0000; stroke: none; stroke-width: 1px;' cx='228.664228406859'/>
62
+ <circle cy='126.777777777778' class='dataPoint1' r='2.5' style='fill: #ff0000; stroke: none; stroke-width: 1px;' cx='321.658821548009'/>
63
+ <circle cy='209.0' class='dataPoint1' r='2.5' style='fill: #ff0000; stroke: none; stroke-width: 1px;' cx='418.806192989469'/>
64
+ <circle cy='167.888888888889' class='dataPoint1' r='2.5' style='fill: #ff0000; stroke: none; stroke-width: 1px;' cx='456.6'/>
65
+ <path class='line2' d='M8.47040225087341 24.0 L8.47040225087341 24.0 55.5063611230323 85.6666666666666 102.543985102769 311.777777777778 149.619906556808 106.222222222222 196.654200321388 270.666666666667 243.730121775427 147.333333333333 290.767745755164 270.666666666667 337.843667209202 44.5555555555555 384.877960973783 147.333333333333 431.913919845942 250.111111111111 ' style='fill: none; stroke: #0000ff; stroke-width: 1px;'/>
66
+ <circle cy='24.0' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='8.47040225087341'/>
67
+ <circle cy='85.6666666666666' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='55.5063611230323'/>
68
+ <circle cy='311.777777777778' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='102.543985102769'/>
69
+ <circle cy='106.222222222222' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='149.619906556808'/>
70
+ <circle cy='270.666666666667' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='196.654200321388'/>
71
+ <circle cy='147.333333333333' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='243.730121775427'/>
72
+ <circle cy='270.666666666667' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='290.767745755164'/>
73
+ <circle cy='44.5555555555555' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='337.843667209202'/>
74
+ <circle cy='147.333333333333' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='384.877960973783'/>
75
+ <circle cy='250.111111111111' class='dataPoint2' r='2.5' style='fill: #0000ff; stroke: none; stroke-width: 1px;' cx='431.913919845942'/>
76
+ <path class='line3' d='M72.9716745119474 291.222222222222 L72.9716745119474 291.222222222222 145.943349023895 126.777777777778 291.926660629669 188.444444444444 437.870009653564 291.222222222222 ' style='fill: none; stroke: #00ff00; stroke-width: 1px;'/>
77
+ <circle cy='291.222222222222' class='dataPoint3' r='2.5' style='fill: #00ff00; stroke: none; stroke-width: 1px;' cx='72.9716745119474'/>
78
+ <circle cy='126.777777777778' class='dataPoint3' r='2.5' style='fill: #00ff00; stroke: none; stroke-width: 1px;' cx='145.943349023895'/>
79
+ <circle cy='188.444444444444' class='dataPoint3' r='2.5' style='fill: #00ff00; stroke: none; stroke-width: 1px;' cx='291.926660629669'/>
80
+ <circle cy='291.222222222222' class='dataPoint3' r='2.5' style='fill: #00ff00; stroke: none; stroke-width: 1px;' cx='437.870009653564'/>
81
+ <g>
82
+ <text visibility='hidden' x='19.9843030972302' y='238.111111111111' id='538641648' style='fill: #000; text-anchor: start;'>01/11/74</text>
83
+ <circle cy='250.111111111111' onmouseover='document.getElementById(538641648).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538641648).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='14.9843030972302' style='opacity: 0'/>
84
+ <text x='14.9843030972302' class='dataPointLabel' y='244.111111111111' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>7</text>
85
+ <text x='14.9843030972302' class='dataPointLabel' y='244.111111111111' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>7</text>
86
+ <text visibility='hidden' x='26.25842845231' y='155.888888888889' id='538638598' style='fill: #000; text-anchor: start;'>06/17/74</text>
87
+ <circle cy='167.888888888889' onmouseover='document.getElementById(538638598).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538638598).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='21.25842845231' style='opacity: 0'/>
88
+ <text x='21.25842845231' class='dataPointLabel' y='161.888888888889' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>11</text>
89
+ <text x='21.25842845231' class='dataPointLabel' y='161.888888888889' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>11</text>
90
+ <text visibility='hidden' x='189.865238666939' y='340.888888888889' id='538635548' style='fill: #000; text-anchor: start;'>09/01/85</text>
91
+ <circle cy='352.888888888889' onmouseover='document.getElementById(538635548).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538635548).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='184.865238666939' style='opacity: 0'/>
92
+ <text x='184.865238666939' class='dataPointLabel' y='346.888888888889' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>2</text>
93
+ <text x='184.865238666939' class='dataPointLabel' y='346.888888888889' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>2</text>
94
+ <text visibility='hidden' x='233.664228406859' y='361.444444444444' id='538632498' style='fill: #000; text-anchor: start;'>09/01/88</text>
95
+ <circle cy='373.444444444444' onmouseover='document.getElementById(538632498).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538632498).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='228.664228406859' style='opacity: 0'/>
96
+ <text x='228.664228406859' class='dataPointLabel' y='367.444444444444' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>1</text>
97
+ <text x='228.664228406859' class='dataPointLabel' y='367.444444444444' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>1</text>
98
+ <text visibility='hidden' x='326.658821548009' y='114.777777777778' id='538629448' style='fill: #000; text-anchor: start;'>01/15/95</text>
99
+ <circle cy='126.777777777778' onmouseover='document.getElementById(538629448).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538629448).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='321.658821548009' style='opacity: 0'/>
100
+ <text x='321.658821548009' class='dataPointLabel' y='120.777777777778' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>13</text>
101
+ <text x='321.658821548009' class='dataPointLabel' y='120.777777777778' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>13</text>
102
+ <text visibility='hidden' x='423.806192989469' y='197.0' id='538626398' style='fill: #000; text-anchor: start;'>09/11/01</text>
103
+ <circle cy='209.0' onmouseover='document.getElementById(538626398).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538626398).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='418.806192989469' style='opacity: 0'/>
104
+ <text x='418.806192989469' class='dataPointLabel' y='203.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>9</text>
105
+ <text x='418.806192989469' class='dataPointLabel' y='203.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>9</text>
106
+ <text visibility='hidden' x='461.6' y='155.888888888889' id='538623328' style='fill: #000; text-anchor: start;'>04/13/04</text>
107
+ <circle cy='167.888888888889' onmouseover='document.getElementById(538623328).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538623328).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='456.6' style='opacity: 0'/>
108
+ <text x='456.6' class='dataPointLabel' y='161.888888888889' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>11</text>
109
+ <text x='456.6' class='dataPointLabel' y='161.888888888889' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>11</text>
110
+ <text visibility='hidden' x='13.4704022508734' y='12.0' id='538619318' style='fill: #000; text-anchor: start;'>08/01/73</text>
111
+ <circle cy='24.0' onmouseover='document.getElementById(538619318).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538619318).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='8.47040225087341' style='opacity: 0'/>
112
+ <text x='8.47040225087341' class='dataPointLabel' y='18.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>18</text>
113
+ <text x='8.47040225087341' class='dataPointLabel' y='18.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>18</text>
114
+ <text visibility='hidden' x='60.5063611230323' y='73.6666666666666' id='538616268' style='fill: #000; text-anchor: start;'>10/21/76</text>
115
+ <circle cy='85.6666666666666' onmouseover='document.getElementById(538616268).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538616268).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='55.5063611230323' style='opacity: 0'/>
116
+ <text x='55.5063611230323' class='dataPointLabel' y='79.6666666666666' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>15</text>
117
+ <text x='55.5063611230323' class='dataPointLabel' y='79.6666666666666' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>15</text>
118
+ <text visibility='hidden' x='107.543985102769' y='299.777777777778' id='538613218' style='fill: #000; text-anchor: start;'>01/11/80</text>
119
+ <circle cy='311.777777777778' onmouseover='document.getElementById(538613218).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538613218).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='102.543985102769' style='opacity: 0'/>
120
+ <text x='102.543985102769' class='dataPointLabel' y='305.777777777778' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>4</text>
121
+ <text x='102.543985102769' class='dataPointLabel' y='305.777777777778' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>4</text>
122
+ <text visibility='hidden' x='154.619906556808' y='94.2222222222222' id='538610168' style='fill: #000; text-anchor: start;'>04/03/83</text>
123
+ <circle cy='106.222222222222' onmouseover='document.getElementById(538610168).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538610168).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='149.619906556808' style='opacity: 0'/>
124
+ <text x='149.619906556808' class='dataPointLabel' y='100.222222222222' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>14</text>
125
+ <text x='149.619906556808' class='dataPointLabel' y='100.222222222222' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>14</text>
126
+ <text visibility='hidden' x='201.654200321388' y='258.666666666667' id='538607118' style='fill: #000; text-anchor: start;'>06/23/86</text>
127
+ <circle cy='270.666666666667' onmouseover='document.getElementById(538607118).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538607118).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='196.654200321388' style='opacity: 0'/>
128
+ <text x='196.654200321388' class='dataPointLabel' y='264.666666666667' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>6</text>
129
+ <text x='196.654200321388' class='dataPointLabel' y='264.666666666667' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>6</text>
130
+ <text visibility='hidden' x='248.730121775427' y='135.333333333333' id='538604068' style='fill: #000; text-anchor: start;'>09/13/89</text>
131
+ <circle cy='147.333333333333' onmouseover='document.getElementById(538604068).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538604068).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='243.730121775427' style='opacity: 0'/>
132
+ <text x='243.730121775427' class='dataPointLabel' y='141.333333333333' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>12</text>
133
+ <text x='243.730121775427' class='dataPointLabel' y='141.333333333333' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>12</text>
134
+ <text visibility='hidden' x='295.767745755164' y='258.666666666667' id='538601018' style='fill: #000; text-anchor: start;'>12/03/92</text>
135
+ <circle cy='270.666666666667' onmouseover='document.getElementById(538601018).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538601018).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='290.767745755164' style='opacity: 0'/>
136
+ <text x='290.767745755164' class='dataPointLabel' y='264.666666666667' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>6</text>
137
+ <text x='290.767745755164' class='dataPointLabel' y='264.666666666667' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>6</text>
138
+ <text visibility='hidden' x='342.843667209202' y='32.5555555555555' id='538597968' style='fill: #000; text-anchor: start;'>02/24/96</text>
139
+ <circle cy='44.5555555555555' onmouseover='document.getElementById(538597968).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538597968).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='337.843667209202' style='opacity: 0'/>
140
+ <text x='337.843667209202' class='dataPointLabel' y='38.5555555555555' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>17</text>
141
+ <text x='337.843667209202' class='dataPointLabel' y='38.5555555555555' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>17</text>
142
+ <text visibility='hidden' x='389.877960973783' y='135.333333333333' id='538594918' style='fill: #000; text-anchor: start;'>05/16/99</text>
143
+ <circle cy='147.333333333333' onmouseover='document.getElementById(538594918).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538594918).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='384.877960973783' style='opacity: 0'/>
144
+ <text x='384.877960973783' class='dataPointLabel' y='141.333333333333' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>12</text>
145
+ <text x='384.877960973783' class='dataPointLabel' y='141.333333333333' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>12</text>
146
+ <text visibility='hidden' x='436.913919845942' y='238.111111111111' id='538591868' style='fill: #000; text-anchor: start;'>08/05/02</text>
147
+ <circle cy='250.111111111111' onmouseover='document.getElementById(538591868).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538591868).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='431.913919845942' style='opacity: 0'/>
148
+ <text x='431.913919845942' class='dataPointLabel' y='244.111111111111' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>7</text>
149
+ <text x='431.913919845942' class='dataPointLabel' y='244.111111111111' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>7</text>
150
+ <text visibility='hidden' x='77.9716745119474' y='279.222222222222' id='538588218' style='fill: #000; text-anchor: start;'>01/01/78</text>
151
+ <circle cy='291.222222222222' onmouseover='document.getElementById(538588218).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538588218).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='72.9716745119474' style='opacity: 0'/>
152
+ <text x='72.9716745119474' class='dataPointLabel' y='285.222222222222' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>5</text>
153
+ <text x='72.9716745119474' class='dataPointLabel' y='285.222222222222' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>5</text>
154
+ <text visibility='hidden' x='150.943349023895' y='114.777777777778' id='538585168' style='fill: #000; text-anchor: start;'>01/01/83</text>
155
+ <circle cy='126.777777777778' onmouseover='document.getElementById(538585168).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538585168).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='145.943349023895' style='opacity: 0'/>
156
+ <text x='145.943349023895' class='dataPointLabel' y='120.777777777778' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>13</text>
157
+ <text x='145.943349023895' class='dataPointLabel' y='120.777777777778' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>13</text>
158
+ <text visibility='hidden' x='296.926660629669' y='176.444444444444' id='538582118' style='fill: #000; text-anchor: start;'>01/01/93</text>
159
+ <circle cy='188.444444444444' onmouseover='document.getElementById(538582118).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538582118).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='291.926660629669' style='opacity: 0'/>
160
+ <text x='291.926660629669' class='dataPointLabel' y='182.444444444444' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>10</text>
161
+ <text x='291.926660629669' class='dataPointLabel' y='182.444444444444' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>10</text>
162
+ <text visibility='hidden' x='442.870009653564' y='279.222222222222' id='538579068' style='fill: #000; text-anchor: start;'>01/01/03</text>
163
+ <circle cy='291.222222222222' onmouseover='document.getElementById(538579068).setAttribute(&apos;visibility&apos;, &apos;visible&apos; )' r='10' onmouseout='document.getElementById(538579068).setAttribute(&apos;visibility&apos;, &apos;hidden&apos; )' cx='437.870009653564' style='opacity: 0'/>
164
+ <text x='437.870009653564' class='dataPointLabel' y='285.222222222222' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal; stroke: #fff; stroke-width: 2;'>5</text>
165
+ <text x='437.870009653564' class='dataPointLabel' y='285.222222222222' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>5</text>
166
+ </g>
167
+ </g>
168
+ <text x='320' class='mainTitle' y='16' style='text-anchor: middle; fill: #000000; font-size: 16px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>Plot</text>
169
+ <text x='320' class='xAxisTitle' y='468' style='text-anchor: middle; fill: #ff0000; font-size: 14px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>Time</text>
170
+ <text transform='rotate( -90, 17, 240 )' x='17' class='yAxisTitle' y='240' style='fill: #ff0000; text-anchor: middle; font-size: 14px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>Units</text>
171
+ <g transform='translate(531.0 46)'>
172
+ <rect x='0' class='key1' y='0' height='12' style='fill: #ff0000; stroke: none; stroke-width: 1px;' width='12'/>
173
+ <text x='17' class='keyText' y='12' style='fill: #000000; text-anchor:start; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>Ice Cream</text>
174
+ <rect x='0' class='key2' y='17' height='12' style='fill: #0000ff; stroke: none; stroke-width: 1px;' width='12'/>
175
+ <text x='17' class='keyText' y='29' style='fill: #000000; text-anchor:start; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>Ice Cream Cones</text>
176
+ <rect x='0' class='key3' y='34' height='12' style='fill: #00ff00; stroke: none; stroke-width: 1px;' width='12'/>
177
+ <text x='17' class='keyText' y='46' style='fill: #000000; text-anchor:start; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>Sprinkles</text>
178
+ </g>
179
+ </svg>
Binary file
@@ -0,0 +1,445 @@
1
+ <html>
2
+ <head>
3
+ <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
4
+ <title>SVG::Graph</title>
5
+ <style media="all" type="text/css">@import "/~ser/styles/common.css";</style>
6
+ </head>
7
+ <body>
8
+ <div id="header">SVG::Graph</div>
9
+ <div id="menu">
10
+ <div class="sect1menu">
11
+ <a href="#N1001C">What is it?</a>
12
+ </div>
13
+ <div class="sect1menu">
14
+ <a href="#N10028">What's new?</a>
15
+ </div>
16
+ <div class="sect1menu">
17
+ <a href="#N10034">Screenshot</a>
18
+ </div>
19
+ <div class="sect1menu">
20
+ <a href="#N1005E">Why use it?</a>
21
+ </div>
22
+ <div class="sect1menu">
23
+ <a href="#N10070">Getting it</a>
24
+ </div>
25
+ <div class="sect1menu">
26
+ <a href="#N1009B">Why?</a>
27
+ </div>
28
+ <div class="sect1menu">
29
+ <a href="#N100E6">Dependancies</a>
30
+ </div>
31
+ <div class="sect1menu">
32
+ <a href="#N100EF">Usage</a>
33
+ </div>
34
+ <div class="sect1menu">
35
+ <a href="#N10100">Notes</a>
36
+ </div>
37
+ <div class="sect1menu">
38
+ <a href="#N10127">Bugs</a>
39
+ </div>
40
+ <div class="sect1menu">
41
+ <a href="#N1013D">Repository</a>
42
+ </div>
43
+ </div>
44
+ <div id="content">
45
+ <p></p>
46
+
47
+
48
+ 0.6.1
49
+
50
+
51
+
52
+ <a name="N1001C">
53
+ <div class="sect1">
54
+
55
+ <h2>What is it?</h2>
56
+
57
+
58
+ <p>SVG:::Graph is a pure Ruby library for generating charts, which are
59
+ a type of graph where the values of one axis are not scalar. SVG::Graph
60
+ has a verry similar API to the Perl library SVG::TT::Graph, and the
61
+ resulting charts also look the same. This isn't surprising, because
62
+ SVG::Graph started as a loose port of SVG::TT::Graph, although the
63
+ internal code no longer resembles the Perl original at all.</p>
64
+
65
+
66
+ <p>SVG::Graph isn't only for charts. With version 0.4.0, support for
67
+ Plot charts was added, so scalar data may now be charted.</p>
68
+
69
+ </div>
70
+ </a>
71
+
72
+ <a name="N10028">
73
+ <div class="sect1">
74
+
75
+ <h2>What's new?</h2>
76
+
77
+ <p>You can find that out in the <a href="changelog.html">change log.</a>
78
+ </p>
79
+
80
+ </div>
81
+ </a>
82
+
83
+ <a name="N10034">
84
+ <div class="sect1">
85
+
86
+ <h2>Screenshot</h2>
87
+
88
+
89
+ <p>Gotta have one.</p>
90
+
91
+
92
+ <CENTER>
93
+ <OBJECT TYPE="image/svg+xml" DATA="images/pie.svg" WIDTH="640" HEIGHT="480"></OBJECT></CENTER>
94
+
95
+
96
+ <p>Here's a PNG version of the above image for the
97
+ SVG-challenged:</p>
98
+
99
+
100
+ <CENTER>
101
+ <IMG SRC="images/pie.png"></CENTER>
102
+
103
+
104
+ <p>The SVG version is <em>much</em> cooler. <a href="screenshots.html">More screenshots are available</a>.</p>
105
+
106
+ </div>
107
+ </a>
108
+
109
+ <a name="N1005E">
110
+ <div class="sect1">
111
+
112
+ <h2>Why use it?</h2>
113
+
114
+
115
+ <p>If you're a Ruby programmer, you can't use SVG::TT::Graph directly.
116
+ This package is for you.</p>
117
+
118
+
119
+ <p>If you want one of the features that this package has that the Perl
120
+ version doesn't, and you don't mind doing your graph code in Ruby, then
121
+ this package is for you.</p>
122
+
123
+
124
+ <p>If you want to generate SVGs that aren't CSS styled (and work with
125
+ more SVG renderers), use this package.</p>
126
+
127
+
128
+ <p>If you're a Perl wienie or you have something against Ruby, use
129
+ SVG::TT::Graph. If it doesn't provide you with the features you want, hack
130
+ it yourself.</p>
131
+
132
+ </div>
133
+ </a>
134
+
135
+ <a name="N10070">
136
+ <div class="sect1">
137
+
138
+ <h2>Getting it</h2>
139
+
140
+
141
+ <p>The source archives contain the example script(s) and an install
142
+ script. Documentation must be downloaded separately.<ul>
143
+
144
+ <li>
145
+
146
+ <p>
147
+ <a href="http://www.germane-software.com/archives/svg_graph_0.6.1.tgz">Gzipped
148
+ sources</a>
149
+ </p>
150
+
151
+ </li>
152
+
153
+
154
+ <li>
155
+
156
+ <p>
157
+ <a href="http://www.germane-software.com/archives/svg_graph_api_0.6.1.tgz">Gzipped
158
+ documentation</a>
159
+ </p>
160
+
161
+ </li>
162
+
163
+
164
+ <li>
165
+
166
+ <p>
167
+ <a href="http://www.germane-software.com/archives/svg_graph_0.6.1.zip">Zipped
168
+ sources</a>
169
+ </p>
170
+
171
+ </li>
172
+
173
+
174
+ <li>
175
+
176
+ <p>
177
+ <a href="http://www.germane-software.com/archives/svg_graph_api_0.6.1.zip">Zipped
178
+ documentation</a>
179
+ </p>
180
+
181
+ </li>
182
+
183
+ </ul>
184
+ </p>
185
+
186
+ </div>
187
+ </a>
188
+
189
+ <a name="N1009B">
190
+ <div class="sect1">
191
+
192
+ <h2>Why?</h2>
193
+
194
+
195
+ <p>The SVG::TT:Graph package is just fine. It lacked a couple of
196
+ features that I wanted, and it was in Perl<SUP><A href="#N100A2">1</A></SUP>, so I re-implemented it.</p>
197
+
198
+
199
+ <p>SVG::Graph is not a straight port of SVG::TT::Graph, because the
200
+ Perl version uses templates, and I don't believe that this is a job for
201
+ templates. Templates are great when you have lots of context containing a
202
+ little bit of evaluated code, but the Graph classes are mostly code with a
203
+ little SVG; therefore, it makes more sense (and is a hell of a lot more
204
+ readable) to have the SVG embedded in the code rather than vice versa.
205
+ However, some of the logic was directly cut and paste out of
206
+ SVG::TT::Graph, as was the entire CSS code and chunks of the
207
+ documentation, and the part of the API that the user sees is almost
208
+ identical to the original.</p>
209
+
210
+
211
+ <p>In version 0.2.0 I completely refactored the code to make it more
212
+ modular. As a result, the core Graph class contains most of the graph
213
+ drawing primatives, and the specializations (Bar, BarHorizontal, Line,
214
+ Pie, etc.) only draw the plot itself. This results in many fewer lines of
215
+ code, and that code is more robust. SVG::TT::Graph re-implemented most of
216
+ the code for every plot type, whereas SVG::Graph reuses most of the
217
+ code.</p>
218
+
219
+
220
+ <p>I intend SVG::Graph to have more features than SVG::TT::Graph, which
221
+ is the main reason for the re-implementation. One such feature is the
222
+ ability to change the stacking of the data sets. For instance, SVG::Graph
223
+ allows you to place the data bars from multiple data sets on the same
224
+ graph side-by-side, rather than overlapping.</p>
225
+
226
+
227
+ <p>SVG::Graph also has an option to disable CSS styling of the graphs.
228
+ This has a number of consequences, both positive and negative. The SVGs
229
+ generated can be larger without CSS, and they are harder to dynamically
230
+ style (you can't use your own styles with CSS disabled). However, a number
231
+ of SVG renderers do not support or do not fully support CSS in SVG (KSVG
232
+ in Konqueror and librsvg, for instance). Adobe and Batik both support CSS,
233
+ so if those are your targets, you can use CSS. For maximum compatability,
234
+ disable CSS with the :no_css attriibute.</p>
235
+
236
+
237
+ <p>The currently supported graph types are:</p>
238
+
239
+
240
+ <ul>
241
+
242
+ <li>
243
+
244
+ <p>Bar</p>
245
+
246
+ </li>
247
+
248
+
249
+ <li>
250
+
251
+ <p>BarHorizontal</p>
252
+
253
+ </li>
254
+
255
+
256
+ <li>
257
+
258
+ <p>Line</p>
259
+
260
+ </li>
261
+
262
+
263
+ <li>
264
+
265
+ <p>Pie</p>
266
+
267
+ </li>
268
+
269
+
270
+ <li>
271
+
272
+ <p>Plot (this is scalar data)</p>
273
+
274
+ </li>
275
+
276
+
277
+ <li>
278
+
279
+ <p>TimeSeries (also scalar data, with one axis being dates)</p>
280
+
281
+ </li>
282
+
283
+
284
+ <li>
285
+
286
+ <p>Schedule (scalar time range data, with non-scalar Y axis)</p>
287
+
288
+ </li>
289
+
290
+ </ul>
291
+
292
+ </div>
293
+ </a>
294
+
295
+ <a name="N100E6">
296
+ <div class="sect1">
297
+
298
+ <h2>Dependancies</h2>
299
+
300
+
301
+ <p>REXML 3.0+, or Ruby 1.8+. If you want to use the SVG compression
302
+ feature, which generates zlib compressed SVGs, you must also have the Ruby
303
+ zlib library installed.</p>
304
+
305
+ </div>
306
+ </a>
307
+
308
+ <a name="N100EF">
309
+ <div class="sect1">
310
+
311
+ <h2>Usage</h2>
312
+
313
+
314
+ <p>There's API documentation available, either <a href="http://www.germane-software.com/software/SVG/SVG::Graph/doc">online</a>
315
+ or for <a href="http://www.germane-software.com/archive/svg_graph_api_0.6.1.tgz">download</a>.
316
+ Or, you can use rdoc to generate it yourself. The API documentation is
317
+ pretty comprehensive (Leo Lapworth did a really good job on the docs, and
318
+ I stole most of them), and there's an example application in the main
319
+ directory.</p>
320
+
321
+ </div>
322
+ </a>
323
+
324
+ <a name="N10100">
325
+ <div class="sect1">
326
+
327
+ <h2>Notes</h2>
328
+
329
+
330
+ <a name="N10105">
331
+ <div class="sect2">
332
+
333
+ <h3>SVG feature support</h3>
334
+
335
+
336
+ <p>Some SVG renderers (librsvg) do not understand CSS. This is a
337
+ problem with Perl's SVG::TT::Graph, because <em>all</em> of
338
+ the styling of the charts it generates is done with CSS. SVG::Graph is
339
+ able to inline the styles, rendering graphs that are compatible with
340
+ more viewers.</p>
341
+
342
+
343
+ <p>The Pie chart uses the feGaussianBlur filter to generate the
344
+ shadow, whiich is also unsupperted by some renderers (librsvg). The
345
+ shadow will not look as smooth on those displays, although it will
346
+ render.</p>
347
+
348
+ </div>
349
+ </a>
350
+
351
+ <a name="N10114">
352
+ <div class="sect2">
353
+
354
+ <h3>Sizes</h3>
355
+
356
+
357
+ <p>The bar charts PNGs tend to be smaller than the uncompressed SVGs.
358
+ In the best case (for PNG), the PNG is 66% of the size of the
359
+ uncompressed SVG.</p>
360
+
361
+
362
+ <p>For line and pie charts, which are a little more visually complex,
363
+ the SVGs are smaller than the PNGs. In the best case, the PNG is 130%
364
+ the size of the SVG. In the worst case, the PNG is 220% the size of the
365
+ uncompressed SVG.</p>
366
+
367
+
368
+ <p>The compressed SVGs are always much smaller than the PNGs. In the
369
+ best case (a vertical bar chart), the PNG is 4.4 times the size of the
370
+ compressed SVG, and in the worst case (for a pie chart), it is over 12
371
+ times the size of the compressed SVG.</p>
372
+
373
+
374
+ <p>These values were measured with inline styled SVGs, and the PNGs
375
+ were reduced to 8-bit, indexed images, and were crushed with
376
+ pngcrush.</p>
377
+
378
+ </div>
379
+ </a>
380
+
381
+ </div>
382
+ </a>
383
+
384
+ <a name="N10127">
385
+ <div class="sect1">
386
+
387
+ <h2>Bugs</h2>
388
+
389
+
390
+ <p>SVG::Graph probably contains bugs. In fact, it is probably mostly
391
+ bugs, held together with some working code around them. In particular,
392
+ SVG::Graph is probably really intolerant of *your* bugs, and is likely
393
+ entirely unhelpful in helping you track down problems. We can only pray
394
+ that this situation improves<SUP><A href="#N1012E">2</A></SUP>.</p>
395
+
396
+
397
+ <p>There is a <a href="http://www.germane-software.com/cgi-bin/roundup/svg-graph">bug and
398
+ feature request database</a>; use this, and please create a user
399
+ account if you don't have one, so that I can email you if I have
400
+ questions. Alternatively, post anonymously, and check the database
401
+ often.</p>
402
+
403
+ </div>
404
+ </a>
405
+
406
+ <a name="N1013D">
407
+ <div class="sect1">
408
+
409
+ <h2>Repository</h2>
410
+
411
+
412
+ <p>The sourcecode repository is a <a href="http://subversion.tigris.org">Subversion</a> repository, located
413
+ <a href="http://www.germane-software.com/repositories/public/SVG">here</a>.</p>
414
+
415
+ </div>
416
+ </a>
417
+
418
+ </div>
419
+ <div id="footnotes">
420
+ <div class="footnote">
421
+ <div class="footnotenum">
422
+ <A name="N100A2">1)</A>
423
+ </div>
424
+
425
+ <p>Perl is from Hell. The language is bad enough, but working with
426
+ the package system -- CPAN, etc. -- is an exercize in masochism. I'd
427
+ rather chew on glass.</p>
428
+
429
+ </div>
430
+ <div class="footnote">
431
+ <div class="footnotenum">
432
+ <A name="N1012E">2)</A>
433
+ </div>
434
+
435
+ <p>Prayer is much more effective when accompanied by sums of cash
436
+ sent to the author.</p>
437
+
438
+ </div>
439
+ </div>
440
+ <div id="footer">
441
+ <div style="float:right">Copyright Sean Russell</div>
442
+ [ <a href="http://www.germane-software.com/~ser">Main</a> ]
443
+ </div>
444
+ </body>
445
+ </html>