svg-graph 1.0.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +7 -5
  3. data/Manifest.txt +53 -17
  4. data/README.markdown +14 -0
  5. data/README.txt +10 -3
  6. data/Rakefile +6 -0
  7. data/build.xml +143 -0
  8. data/dist.xml.in +46 -0
  9. data/images/bar.png +0 -0
  10. data/images/bar.svg +76 -0
  11. data/images/bar.svgz +0 -0
  12. data/images/barhorizontal.png +0 -0
  13. data/images/barhorizontal.svg +76 -0
  14. data/images/barhorizontal.svgz +0 -0
  15. data/images/line.png +0 -0
  16. data/images/line.svg +80 -0
  17. data/images/line.svgz +0 -0
  18. data/images/pie.png +0 -0
  19. data/images/pie.svg +70 -0
  20. data/images/pie.svgz +0 -0
  21. data/images/plot.png +0 -0
  22. data/images/plot.svg +131 -0
  23. data/images/plot.svgz +0 -0
  24. data/images/schedule.png +0 -0
  25. data/images/schedule.svg +67 -0
  26. data/images/timeseries.png +0 -0
  27. data/images/timeseries.svg +179 -0
  28. data/images/timeseries.svgz +0 -0
  29. data/index.xml +281 -0
  30. data/install.rb +161 -0
  31. data/lib/SVG/Graph/Bar.rb +1 -1
  32. data/lib/SVG/Graph/Graph.rb +11 -9
  33. data/lib/SVG/Graph/Line.rb +1 -0
  34. data/lib/SVG/Graph/Pie.rb +3 -3
  35. data/lib/SVG/Graph/Plot.rb +69 -20
  36. data/lib/SVG/Graph/Schedule.rb +19 -5
  37. data/lib/SVG/Graph/TimeSeries.rb +62 -45
  38. data/lib/svggraph.rb +1 -2
  39. data/screenshots.xml +148 -0
  40. data/style/common.xsl +37 -0
  41. data/style/release_html.xsl +169 -0
  42. data/style/release_txt.xsl +25 -0
  43. data/svg-graph.gemspec +59 -0
  44. data/test/data.txt +4 -0
  45. data/test/plot.rb +51 -0
  46. data/test/schedule.rb +43 -0
  47. data/test/single.rb +33 -0
  48. data/test/test.rb +54 -0
  49. data/test/test_plot.rb +170 -0
  50. data/test/test_svg_graph.rb +24 -55
  51. data/test/timeseries.rb +58 -0
  52. metadata +79 -14
  53. metadata.gz.sig +2 -1
data.tar.gz.sig ADDED
Binary file
data/History.txt CHANGED
@@ -1,7 +1,9 @@
1
- === 1.0.1 / 2009-09-26
1
+ === 1.0.3 / 2011-08-04
2
+ * Removed unused variables which raises warnings on ruby head
3
+ * Bug fix: Test raises error on different order of xml attribute
4
+ * Merge pull request #2 from liehann/master
5
+ * Max values and improved Time data handling.
6
+ * Merge pull request #1 from thinkingbox/master
7
+ * Adding scattered plot support with :show_lines =>false Rounding values to integers in popups can be disabled with :round_popups => false Optional description gets shown in popup
2
8
 
3
- * Work for Ruby version 1.8.6, 1.8.7 and 1.9
4
9
 
5
- === 1.0.0 / 2009-08-01
6
-
7
- * First version
data/Manifest.txt CHANGED
@@ -1,17 +1,53 @@
1
- GPL.txt
2
- History.txt
3
- LICENSE.txt
4
- Manifest.txt
5
- README.txt
6
- Rakefile
7
- lib/svggraph.rb
8
- lib/SVG/Graph/Bar.rb
9
- lib/SVG/Graph/BarBase.rb
10
- lib/SVG/Graph/BarHorizontal.rb
11
- lib/SVG/Graph/Graph.rb
12
- lib/SVG/Graph/Line.rb
13
- lib/SVG/Graph/Pie.rb
14
- lib/SVG/Graph/Plot.rb
15
- lib/SVG/Graph/Schedule.rb
16
- lib/SVG/Graph/TimeSeries.rb
17
- test/test_svg_graph.rb
1
+ GPL.txt
2
+ History.txt
3
+ LICENSE.txt
4
+ Manifest.txt
5
+ README.markdown
6
+ README.txt
7
+ Rakefile
8
+ build.xml
9
+ dist.xml.in
10
+ images/bar.png
11
+ images/bar.svg
12
+ images/bar.svgz
13
+ images/barhorizontal.png
14
+ images/barhorizontal.svg
15
+ images/barhorizontal.svgz
16
+ images/line.png
17
+ images/line.svg
18
+ images/line.svgz
19
+ images/pie.png
20
+ images/pie.svg
21
+ images/pie.svgz
22
+ images/plot.png
23
+ images/plot.svg
24
+ images/plot.svgz
25
+ images/schedule.png
26
+ images/schedule.svg
27
+ images/timeseries.png
28
+ images/timeseries.svg
29
+ images/timeseries.svgz
30
+ index.xml
31
+ install.rb
32
+ lib/SVG/Graph/Bar.rb
33
+ lib/SVG/Graph/BarBase.rb
34
+ lib/SVG/Graph/BarHorizontal.rb
35
+ lib/SVG/Graph/Graph.rb
36
+ lib/SVG/Graph/Line.rb
37
+ lib/SVG/Graph/Pie.rb
38
+ lib/SVG/Graph/Plot.rb
39
+ lib/SVG/Graph/Schedule.rb
40
+ lib/SVG/Graph/TimeSeries.rb
41
+ lib/svggraph.rb
42
+ screenshots.xml
43
+ style/common.xsl
44
+ style/release_html.xsl
45
+ style/release_txt.xsl
46
+ svg-graph.gemspec
47
+ test/data.txt
48
+ test/plot.rb
49
+ test/schedule.rb
50
+ test/single.rb
51
+ test/test.rb
52
+ test/test_svg_graph.rb
53
+ test/timeseries.rb
data/README.markdown ADDED
@@ -0,0 +1,14 @@
1
+ SVG::Graph19
2
+ ============
3
+
4
+ Description
5
+ -----------
6
+ This is a minor revision of the [SVG::Graph library](http://www.germane-software.com/software/SVG/SVG::Graph/) by Sean Russell with few minor touch-ups to make it run on Ruby 1.9.x and to have it [gem-installable](http://gemcutter.org/gems/svg-graph19).
7
+
8
+ Warning
9
+ -------
10
+ I'm not sure that all the parts of the original SVG library work as expected under 1.9.x too. Please notify me (via github messages or on the Issues section) if you find any bug.
11
+
12
+ Usage
13
+ -----
14
+ Yet to be written. Look at the original [SVG::Graph web page](http://www.germane-software.com/software/SVG/SVG::Graph/) for the moment (I'm not introducing new methods nor changing APIs, for the moment).
data/README.txt CHANGED
@@ -2,22 +2,29 @@
2
2
 
3
3
  http://www.germane-software.com/software/SVG/SVG::Graph/
4
4
 
5
- == Author
5
+ == AUTHOR
6
6
 
7
7
  Sean E. Russell <serATgermaneHYPHENsoftwareDOTcom>
8
8
  Copyright 2004 Sean E. Russell
9
9
  This software is available under the Ruby license[LICENSE.txt]
10
10
 
11
+ == DEVELOPERS
12
+
13
+ * Claudio Bustos <clbustos_AT_gmail_DOT_com
14
+ * Liehann Loots <liehhanl_AT_gmail_DOT_com
15
+ * Piergiuliano Bossi <pgbossi_AT_gmail_DOT_com
11
16
 
12
17
  == DESCRIPTION:
13
18
 
14
- Gem version of SVG:::Graph.
19
+ This is a minor revision of the [SVG::Graph library](http://www.germane-software.com/software/SVG/SVG::Graph/) by Sean Russell with few minor touch-ups to make it run on Ruby 1.9.x and to have it gem-installable
15
20
 
16
21
  SVG:::Graph is a pure Ruby library for generating charts, which are a type of graph where the values of one axis are not scalar. SVG::Graph has a verry similar API to the Perl library SVG::TT::Graph, and the resulting charts also look the same. This isn't surprising, because SVG::Graph started as a loose port of SVG::TT::Graph, although the internal code no longer resembles the Perl original at all.
17
22
 
18
23
  == FEATURES
19
24
 
20
- * Tested for Ruby versions 1.8.6, 1.8.7 and 1.9.1
25
+ * Tested for Ruby versions 1.8.6, 1.8.7 and 1.9.*
26
+
27
+ We are not sure that all the parts of the original SVG library work as expected under 1.9.x too. Please notify via github messages or on the Issues section if you find any bug.
21
28
 
22
29
  == LICENSE:
23
30
 
data/Rakefile CHANGED
@@ -1,13 +1,19 @@
1
1
  # -*- ruby -*-
2
+ # -*- coding: utf-8 -*-
3
+ $:.unshift(File.dirname(__FILE__)+"/lib/")
2
4
 
3
5
  require 'rubygems'
4
6
  require 'hoe'
7
+
8
+ Hoe.plugin :git
5
9
  $:.unshift("./lib")
6
10
  require 'svggraph'
7
11
  Hoe.spec 'svg-graph' do
8
12
  self.version=SVG::Graph::VERSION
9
13
  self.developer('Sean Russell', 'ser_AT_germane-software.com')
10
14
  self.developer('Claudio Bustos', 'clbustos_AT_gmail.com')
15
+ self.developer("Liehann Loots","liehhanl_AT_gmail.com")
16
+ self.developer("Piergiuliano Bossi","pgbossi_AT_gmail.com")
11
17
  self.rubyforge_name = 'ruby-statsample' # if different than 'svg_graph'
12
18
  self.remote_rdoc_dir = 'svg-graph'
13
19
  end
data/build.xml ADDED
@@ -0,0 +1,143 @@
1
+ <project name='SVG::Graph' default='build-dist' basedir='.'>
2
+ <property name='date' value='+2005/058'/>
3
+ <property name='release' value='0.6.1'/>
4
+ <property name='version' value='$Rev$'/>
5
+
6
+ <!-- Build the API docs -->
7
+ <target name='api'>
8
+ <filter token='ANT_VERSION' value='${release}'/>
9
+ <filter token='ANT_DATE' value='${date}'/>
10
+ <delete dir='doc'/>
11
+ <mkdir dir='temp'/>
12
+ <copy todir='temp' filtering='true'> <fileset dir='SVG'/> </copy>
13
+ <exec executable='rdoc'>
14
+ <arg line='--main SVG::Graph::Graph --op doc --exclude .svn temp'/>
15
+ </exec>
16
+ <delete dir='temp'/>
17
+ </target>
18
+
19
+
20
+ <!-- Build the API doc archives -->
21
+ <target name='api-dist' depends='api'>
22
+ <!-- Make a distribution directory and copy the docs to it -->
23
+ <mkdir dir='dist'/>
24
+ <mkdir dir='dist/svg_graph_${release}'/>
25
+ <mkdir dir='dist/svg_graph_${release}/doc'/>
26
+ <copy todir='dist/svg_graph_${release}/doc'> <fileset dir='doc'/> </copy>
27
+ <tar tarfile='svg_graph_api_${release}.tar' basedir='dist'/>
28
+ <gzip zipfile='svg_graph_api_${release}.tgz' src='svg_graph_api_${release}.tar'/>
29
+ <zip zipfile='svg_graph_api_${release}.zip' basedir='dist'/>
30
+ <delete dir='dist'/>
31
+ <delete> <fileset dir='.' includes='*.tar'/> </delete>
32
+ </target>
33
+
34
+
35
+ <!-- Builds the distribution archive -->
36
+ <target name='dist'>
37
+ <filter token='ANT_VERSION' value='${release}'/>
38
+ <filter token='ANT_DATE' value='${date}'/>
39
+
40
+ <copy file="dist.xml.in" tofile="dist.xml" filtering="true"/>
41
+
42
+ <delete dir='dist'/>
43
+
44
+ <antcall target='docs'>
45
+ <param name='destdir' value='dist/svg_graph_${release}'/>
46
+ </antcall>
47
+
48
+ <copy todir='dist/svg_graph_${release}' filtering='true'>
49
+ <fileset dir='.' excludes='**/.svn/**,*~'
50
+ includes='README.txt,test.rb,test2.rb,data.txt'/>
51
+ </copy>
52
+ <copy filtering='true'
53
+ tofile='dist/svg_graph_${release}/install.rb' file='install.rb'/>
54
+ <copy todir='dist/svg_graph_${release}'>
55
+ <fileset dir='.' includes='SVG/**'/>
56
+ </copy>
57
+
58
+ <tar tarfile='svg_graph_${release}.tar' basedir='dist'/>
59
+ <gzip zipfile='svg_graph_${release}.tgz' src='svg_graph_${release}.tar'/>
60
+ <zip zipfile='svg_graph_${release}.zip' basedir='dist'/>
61
+
62
+ <!-- clean up -->
63
+ <delete dir='dist'/>
64
+ <delete>
65
+ <fileset dir='.' includes='*.tar'/>
66
+ </delete>
67
+ </target>
68
+
69
+
70
+ <target name='web' depends='api,logs'>
71
+ <delete dir='dist'/>
72
+ <mkdir dir='dist'/>
73
+
74
+ <antcall target='docs'>
75
+ <param name='destdir' value='dist'/>
76
+ </antcall>
77
+
78
+ <copy file='release.html' tofile='dist/changelog.html'/>
79
+
80
+ <copy file="dist.xml.in" tofile="dist/dist.xml" filtering="true"/>
81
+ <copy todir='dist/doc'> <fileset dir='doc'/> </copy>
82
+ <tar tarfile='web.tar' basedir='dist'/>
83
+ <gzip zipfile='web.tgz' src='web.tar'/>
84
+
85
+ <delete dir='dist'/>
86
+ <delete file='web.tar'/>
87
+ <delete file='index.xsl'/>
88
+ </target>
89
+
90
+
91
+ <target name='docs'>
92
+ <filter token='ANT_VERSION' value='${release}'/>
93
+ <filter token='ANT_DATE' value='${date}'/>
94
+ <filter token='ANT_PROJECT' value='SVG::Graph'/>
95
+
96
+ <copy tofile='${destdir}/index.xml' file='index.xml' filtering='true'/>
97
+ <copy tofile='${destdir}/screenshots.xml' file='screenshots.xml'/>
98
+ <copy todir='${destdir}' overwrite='yes' filtering='true'>
99
+ <fileset dir='.' includes='screenshot.svg,LICENSE.txt,GPL.txt'/>
100
+ </copy>
101
+ <copy todir='${destdir}/images'><fileset dir='images'/></copy>
102
+
103
+ <get dest='index.xsl'
104
+ src='http://www.germane-software.com/~ser/styles/common.xsl'/>
105
+ <style in='${destdir}/index.xml' out='${destdir}/index.html'
106
+ style='index.xsl'/>
107
+ <style in='${destdir}/screenshots.xml' out='${destdir}/screenshots.html'
108
+ style='index.xsl'/>
109
+
110
+ <delete file='${destdir}/index.xml'/>
111
+ <delete file='${destdir}/screenshots.xml'/>
112
+ </target>
113
+
114
+
115
+ <target name='logs'>
116
+ <echo>Generating logs...</echo>
117
+ <echo file='log.xml'><![CDATA[<log><previous>]]></echo>
118
+ <exec executable='svn' output='log.xml' append='true'>
119
+ <arg line='log --xml --incremental -r HEAD:1 .'/>
120
+ </exec>
121
+ <echo file='log.xml' append='true'><![CDATA[</previous></log>]]></echo>
122
+
123
+ <echo>Creating release document...</echo>
124
+ <style in='log.xml' out='release.html' style='style/release_html.xsl'>
125
+ <param name='release' expression='${release}'/>
126
+ </style>
127
+
128
+ <echo>Cleaning up...</echo>
129
+ <delete><fileset dir='.' includes='log.xml'/></delete>
130
+ </target>
131
+
132
+
133
+ <target name='clean'>
134
+ <delete>
135
+ <fileset dir='.' includes='dist.xml,*.tgz,*.zip,*~,index.html,release.html'/>
136
+ <fileset dir='doc'/>
137
+ </delete>
138
+ </target>
139
+
140
+ <!-- The main task. We don't have to compile anything, so we just build a
141
+ bunch of documentation and some distribution archives. -->
142
+ <target name='build-dist' depends='api-dist,dist,web'/>
143
+ </project>
data/dist.xml.in ADDED
@@ -0,0 +1,46 @@
1
+ <!--
2
+ - The project must have a 'name', 'version', and 'date'.
3
+ - It must also have either a 'url' or a <documentation> entry. The 'url'
4
+ - attribute overrides the <documentation> entry.
5
+ -->
6
+ <project name='SVG::Graph' version='@ANT_VERSION@' date='@ANT_DATE@'>
7
+
8
+ <!-- The language the project is in -->
9
+ <language name='ruby'/>
10
+
11
+ <!--
12
+ - The project category. Multiple categories are allowed, but only the
13
+ - first one is (currently) used.
14
+ -->
15
+ <category>SVG</category>
16
+ <category>Ruby</category>
17
+ <category>Libraries</category>
18
+
19
+ <!-- A short description for the index page. Can contain HTML -->
20
+ <description>
21
+ <p>
22
+ SVG:::Graph is a pure Ruby library for generating charts, which are a type of graph
23
+ where the values of one axis are not scalar. SVG::Graph has a verry similar API
24
+ to the Perl library SVG::TT::Graph, and the resulting charts also look the same.
25
+ </p>
26
+
27
+ <p>This software is distribute under the Ruby license.</p>
28
+ </description>
29
+
30
+ <!--
31
+ - If documentation attributes exist, the files referenced will be
32
+ - untarred into <web path>/<category>/<name>, and the index link will
33
+ - point to this directory. If the <project> 'name' attribute exists,
34
+ - it will be used as the link instead.
35
+ -->
36
+ <documentation file='web.tgz'/>
37
+
38
+ <!--
39
+ - A list of archive files. These files will be copied to the archive
40
+ - directory.
41
+ -->
42
+ <archive title='API docs (tgz)' file='svg_graph_api_@ANT_VERSION@.tgz'/>
43
+ <archive title='API docs (zip)' file='svg_graph_api_@ANT_VERSION@.zip'/>
44
+ <archive title='Source (tgz)' file='svg_graph_@ANT_VERSION@.tgz'/>
45
+ <archive title='Source (zip)' file='svg_graph_@ANT_VERSION@.zip'/>
46
+ </project>
data/images/bar.png ADDED
Binary file
data/images/bar.svg ADDED
@@ -0,0 +1,76 @@
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'>
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( 14.2 26 )'>
19
+ <rect x='0' class='graphBackground' y='0' height='435' style='fill:#f0f0f0;' width='560.8'/>
20
+ <path class='axis' d='M 0 0 v435' id='xAxis' style='stroke: #000000; stroke-width: 1px;'/>
21
+ <path class='axis' d='M 0 435 h560.8' id='yAxis' style='stroke: #000000; stroke-width: 1px;'/>
22
+ <text x='56.08' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>Internet</text>
23
+ <text x='168.24' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>TV</text>
24
+ <text x='280.4' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>Newspaper</text>
25
+ <text x='392.56' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>Magazine</text>
26
+ <text x='504.72' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>Radio
27
+ </text>
28
+ <text x='-3' class='yAxisLabels' y='439.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>
29
+ <text x='-3' class='yAxisLabels' y='302.0' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>1</text>
30
+ <path class='guideLines' d='M0 298.0 h560.8' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
31
+ <text x='-3' class='yAxisLabels' y='165.0' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: end'>2</text>
32
+ <path class='guideLines' d='M0 161.0 h560.8' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
33
+ <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'>3</text>
34
+ <path class='guideLines' d='M0 24.0 h560.8' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
35
+ <path class='fill1' d='M0.0 435 V161.0 h51.08 V435 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
36
+ <path class='fill2' d='M51.08 435 V298.0 h51.08 V435 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
37
+ <path class='fill1' d='M112.16 435 V161.0 h51.08 V435 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
38
+ <path class='fill2' d='M163.24 435 V298.0 h51.08 V435 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
39
+ <path class='fill1' d='M224.32 435 V435.0 h51.08 V435 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
40
+ <path class='fill2' d='M275.4 435 V435.0 h51.08 V435 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
41
+ <path class='fill1' d='M336.48 435 V24.0 h51.08 V435 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
42
+ <path class='fill2' d='M387.56 435 V24.0 h51.08 V435 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
43
+ <path class='fill1' d='M448.64 435 V435.0 h51.08 V435 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
44
+ <path class='fill2' d='M499.72 435 V298.0 h51.08 V435 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
45
+ <g>
46
+ <text x='25.54' class='dataPointLabel' y='155.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;'>2</text>
47
+ <text x='25.54' class='dataPointLabel' y='155.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>2</text>
48
+ <text x='76.62' class='dataPointLabel' y='292.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;'>1</text>
49
+ <text x='76.62' class='dataPointLabel' y='292.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>1</text>
50
+ <text x='137.7' class='dataPointLabel' y='155.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;'>2</text>
51
+ <text x='137.7' class='dataPointLabel' y='155.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>2</text>
52
+ <text x='188.78' class='dataPointLabel' y='292.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;'>1</text>
53
+ <text x='188.78' class='dataPointLabel' y='292.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>1</text>
54
+ <text x='249.86' class='dataPointLabel' y='429.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;'>0</text>
55
+ <text x='249.86' class='dataPointLabel' y='429.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>0</text>
56
+ <text x='300.94' class='dataPointLabel' y='429.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;'>0</text>
57
+ <text x='300.94' class='dataPointLabel' y='429.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>0</text>
58
+ <text x='362.02' 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;'>3</text>
59
+ <text x='362.02' class='dataPointLabel' y='18.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>3</text>
60
+ <text x='413.1' 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;'>3</text>
61
+ <text x='413.1' class='dataPointLabel' y='18.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>3</text>
62
+ <text x='474.18' class='dataPointLabel' y='429.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;'>0</text>
63
+ <text x='474.18' class='dataPointLabel' y='429.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>0</text>
64
+ <text x='525.26' class='dataPointLabel' y='292.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;'>1</text>
65
+ <text x='525.26' class='dataPointLabel' y='292.0' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;'>1</text>
66
+ </g>
67
+ </g>
68
+ <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;'>Question 7
69
+ </text>
70
+ <g transform='translate(585.0 46)'>
71
+ <rect x='0' class='key1' y='0' height='12' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;' width='12'/>
72
+ <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;'>Female</text>
73
+ <rect x='0' class='key2' y='17' height='12' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;' width='12'/>
74
+ <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;'>Male</text>
75
+ </g>
76
+ </svg>
data/images/bar.svgz ADDED
Binary file
Binary file
@@ -0,0 +1,76 @@
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'>
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( 19 26 )'>
19
+ <rect x='0' class='graphBackground' y='0' height='435' style='fill:#f0f0f0;' width='556.0'/>
20
+ <path class='axis' d='M 0 0 v435' id='xAxis' style='stroke: #000000; stroke-width: 1px;'/>
21
+ <path class='axis' d='M 0 435 h556.0' id='yAxis' style='stroke: #000000; stroke-width: 1px;'/>
22
+ <text x='0.0' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>0</text>
23
+ <text x='177.333333333333' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>1</text>
24
+ <path class='guideLines' d='M177.333333333333 0 v435' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
25
+ <text x='354.666666666667' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>2</text>
26
+ <path class='guideLines' d='M354.666666666667 0 v435' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
27
+ <text x='532.0' class='xAxisLabels' y='450' style='text-anchor: middle; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>3</text>
28
+ <path class='guideLines' d='M532.0 0 v435' style='stroke: #666666; stroke-width: 1px; stroke-dasharray: 5 5;'/>
29
+ <text transform='translate( -12 0 ) rotate( 90 0 391.5 ) ' x='0' class='yAxisLabels' y='391.5' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>Internet</text>
30
+ <text transform='translate( -12 0 ) rotate( 90 0 304.5 ) ' x='0' class='yAxisLabels' y='304.5' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>TV</text>
31
+ <text transform='translate( -12 0 ) rotate( 90 0 217.5 ) ' x='0' class='yAxisLabels' y='217.5' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>Newspaper</text>
32
+ <text transform='translate( -12 0 ) rotate( 90 0 130.5 ) ' x='0' class='yAxisLabels' y='130.5' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>Magazine</text>
33
+ <text transform='translate( -12 0 ) rotate( 90 0 43.5 ) ' x='0' class='yAxisLabels' y='43.5' style='text-anchor: end; fill: #000000; font-size: 12px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: middle'>Radio
34
+ </text>
35
+ <path class='fill1' d='M0 348.0 H354.666666666667 v38.5 H0 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
36
+ <path class='fill2' d='M0 386.5 H177.333333333333 v38.5 H0 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
37
+ <path class='fill1' d='M0 261.0 H354.666666666667 v38.5 H0 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
38
+ <path class='fill2' d='M0 299.5 H177.333333333333 v38.5 H0 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
39
+ <path class='fill1' d='M0 174.0 H0.0 v38.5 H0 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
40
+ <path class='fill2' d='M0 212.5 H0.0 v38.5 H0 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
41
+ <path class='fill1' d='M0 87.0 H532.0 v38.5 H0 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
42
+ <path class='fill2' d='M0 125.5 H532.0 v38.5 H0 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
43
+ <path class='fill1' d='M0 0.0 H0.0 v38.5 H0 Z' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;'/>
44
+ <path class='fill2' d='M0 38.5 H177.333333333333 v38.5 H0 Z' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;'/>
45
+ <g>
46
+ <text x='359.666666666667' class='dataPointLabel' y='373.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>2</text>
47
+ <text x='359.666666666667' class='dataPointLabel' y='373.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>2</text>
48
+ <text x='182.333333333333' class='dataPointLabel' y='411.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>1</text>
49
+ <text x='182.333333333333' class='dataPointLabel' y='411.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>1</text>
50
+ <text x='359.666666666667' class='dataPointLabel' y='286.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>2</text>
51
+ <text x='359.666666666667' class='dataPointLabel' y='286.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>2</text>
52
+ <text x='182.333333333333' class='dataPointLabel' y='324.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>1</text>
53
+ <text x='182.333333333333' class='dataPointLabel' y='324.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>1</text>
54
+ <text x='5.0' class='dataPointLabel' y='199.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>0</text>
55
+ <text x='5.0' class='dataPointLabel' y='199.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>0</text>
56
+ <text x='5.0' class='dataPointLabel' y='237.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>0</text>
57
+ <text x='5.0' class='dataPointLabel' y='237.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>0</text>
58
+ <text x='537.0' class='dataPointLabel' y='112.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>3</text>
59
+ <text x='537.0' class='dataPointLabel' y='112.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>3</text>
60
+ <text x='537.0' class='dataPointLabel' y='150.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>3</text>
61
+ <text x='537.0' class='dataPointLabel' y='150.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>3</text>
62
+ <text x='5.0' class='dataPointLabel' y='25.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>0</text>
63
+ <text x='5.0' class='dataPointLabel' y='25.25' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>0</text>
64
+ <text x='182.333333333333' class='dataPointLabel' y='63.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; stroke: #fff; stroke-width: 2;'>1</text>
65
+ <text x='182.333333333333' class='dataPointLabel' y='63.75' style='fill: #000000; text-anchor:middle; font-size: 10px; font-family: &quot;Arial&quot;, sans-serif; font-weight: normal;text-anchor: start; '>1</text>
66
+ </g>
67
+ </g>
68
+ <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;'>Question 7
69
+ </text>
70
+ <g transform='translate(585.0 46)'>
71
+ <rect x='0' class='key1' y='0' height='12' style='fill: #ff0000; fill-opacity: 0.5; stroke: none; stroke-width: 0.5px;' width='12'/>
72
+ <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;'>Female</text>
73
+ <rect x='0' class='key2' y='17' height='12' style='fill: #0000ff; fill-opacity: 0.5; stroke: none; stroke-width: 1px;' width='12'/>
74
+ <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;'>Male</text>
75
+ </g>
76
+ </svg>