rubypost 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/lib/simpleplot.rb ADDED
@@ -0,0 +1,234 @@
1
+
2
+ module RubyPost
3
+
4
+
5
+ class SimplePlot < Picture
6
+
7
+ #initialise with height and width in centemeters
8
+ def initialize(width, height)
9
+ super()
10
+ @plot_array = Array.new
11
+ @height = height
12
+ @width = width
13
+ #axes set by default
14
+ setaxes(-1,1,-1,1)
15
+ @xtickstr = "\n"
16
+ @ytickstr = "\n"
17
+ @xlabel = "\n"
18
+ @ylabel = "\n"
19
+ end
20
+
21
+ #the scale factors are decided by the very last plot you add
22
+ #you can adjust it with the axes command
23
+ def add_plot(plot)
24
+ @plot_array.push(plot)
25
+ setaxesfor(plot)
26
+ end
27
+
28
+ def setaxesfor(plot)
29
+ puts plot.xmin
30
+ puts plot.ymax
31
+ setaxes(plot.xmin, plot.xmax, plot.ymin, plot.ymax)
32
+ end
33
+
34
+ def setaxes(xmin, xmax, ymin, ymax)
35
+ @xmax = xmax
36
+ @xmin = xmin
37
+ @ymax = ymax
38
+ @ymin = ymin
39
+
40
+ @xscale = @width.to_f/(xmax - xmin)
41
+ @yscale = @height.to_f/(ymax - ymin)
42
+ end
43
+
44
+ #set xtick marks, a is an array of tick position and label is the
45
+ #text for each tick. func describes whether a tick should be put on
46
+ #the top or the bottom. func(x) should return positive for on the bottom
47
+ #and negative for on the top.
48
+ def xticks(x, label=nil, func = lambda {|v| 1} )
49
+ if(label==nil) then label = x.map{|v| latex(v.to_s) } end
50
+ lplace = x.map{ |v| if(func.call(v) < 0) then 'urt' else 'lrt' end }
51
+ @xtickstr = ''
52
+ x.each_index{ |i|
53
+ @xtickstr = @xtickstr + 'draw ((0,-0.1cm)--(0,0.1cm)) shifted (' + (x[i]*@xscale).to_s + "cm, 0);\n"
54
+ @xtickstr = @xtickstr + 'label.' + lplace[i].to_s + '(' + label[i] + ' ,(' + (x[i]*@xscale).to_s + "cm, 0));\n"
55
+ }
56
+ end
57
+
58
+ #set ytick marks, a is an array of tick position and laebl is the text
59
+ def yticks(y, label=nil )
60
+ if(label==nil) then label = y.map{|v| latex(v.to_s) } end
61
+ @ytickstr = ''
62
+ y.each_index{ |i|
63
+ @ytickstr = @ytickstr + 'draw ((-0.1.cm,0)--(0.1cm,0)) shifted (0,' + (y[i]*@yscale).to_s + "cm);\n"
64
+ @ytickstr = @ytickstr + 'label.rt(' + label[i] + ' ,(0,' + (y[i]*@yscale).to_s + "cm));\n"
65
+ }
66
+ end
67
+
68
+ def xlabel(t)
69
+ @xlabel = 'label.top(' + t + ', (' + (@xscale*@xmax + 0.6).to_s + "cm,0));\n"
70
+ end
71
+
72
+ def ylabel(t)
73
+ @ylabel = 'label.rt(' + t + ', (0, ' + (@yscale*@ymax + 0.6).to_s + "cm));\n"
74
+ end
75
+
76
+ def precompile
77
+ str = "picture " + @name + ";\n"
78
+
79
+ #draw the axes
80
+ str = str + "\n%draw the axes\n"
81
+ str = str + 'draw ((' + (@xscale*@xmax + 0.6).to_s + 'cm,0)--('+ (@xscale*@xmin - 0.3).to_s + "cm,0));\n"
82
+ str = str + 'draw ((0, ' + (@yscale*@ymin - 0.3).to_s + 'cm)--(0, ' + (@yscale*@ymax + 0.6).to_s + "cm));\n"
83
+
84
+ str = str + "\n%draw xticks\n"
85
+ str = str + @xtickstr
86
+ str = str + "\n%draw yticks\n"
87
+ str = str + @ytickstr
88
+ str = str + "\n%draw xticks\n"
89
+ str = str + @xlabel
90
+ str = str + "\n%draw yticks\n"
91
+ str = str + @ylabel
92
+
93
+
94
+ #draw each plot componenet.
95
+ @plot_array.each{|p|
96
+ puts p.class
97
+ puts p.ymax
98
+ str = str + p.compilewithscale(@xscale, @yscale) }
99
+
100
+ str = str + @name + " := currentpicture; currentpicture := " + @@org_picture + ";\n"
101
+ end
102
+
103
+ end
104
+
105
+ class AbstractPlot < BaseDrawCommand
106
+
107
+ attr_writer :x, :y
108
+
109
+ def initialize()
110
+ super()
111
+ end
112
+
113
+ def xmax
114
+ @x.max
115
+ end
116
+
117
+ def xmin
118
+ @x.min
119
+ end
120
+
121
+ def ymax
122
+ @y.max
123
+ end
124
+
125
+ def ymin
126
+ @y.min
127
+ end
128
+
129
+ end
130
+
131
+ class LinePlot < AbstractPlot
132
+
133
+ #Intitalise with two arrays of the same size.
134
+ def initialize(x, y)
135
+ super()
136
+ @x = x
137
+ @y = y
138
+ end
139
+
140
+ def compile
141
+ @p = Path.new
142
+ @x.each_index{ |i| @p.add_pair(Pair.new(@x[i].cm, @y[i].cm)) }
143
+ 'draw ' + @p.compile + ' ' + compile_options + ";\n"
144
+ end
145
+
146
+ def compilewithscale(xscale, yscale)
147
+ @p = Path.new
148
+ @x.each_index{ |i| @p.add_pair(Pair.new((@x[i]*xscale).cm, (@y[i]*yscale).cm)) }
149
+ 'draw ' + @p.compile + ' ' + compile_options + ";\n"
150
+ end
151
+
152
+ end
153
+
154
+ class CurvedPlot < AbstractPlot
155
+
156
+ #Intitalise with two arrays of the same size.
157
+ def initialize(x, y)
158
+ super()
159
+ @x = x
160
+ @y = y
161
+ end
162
+
163
+ def compile
164
+ @p = Path.new.curved
165
+ @x.each_index{ |i| @p.add_pair(Pair.new(@x[i].cm, @y[i].cm)) }
166
+ 'draw ' + @p.compile + ' ' + compile_options + ";\n"
167
+ end
168
+
169
+ def compilewithscale(xscale, yscale)
170
+ @p = Path.new.curved
171
+ @x.each_index{ |i| @p.add_pair(Pair.new((@x[i]*xscale).cm, (@y[i]*yscale).cm)) }
172
+ 'draw ' + @p.compile + ' ' + compile_options + ";\n"
173
+ end
174
+
175
+ end
176
+
177
+ class ImpulsePlot < AbstractPlot
178
+
179
+ #Intitalise with two arrays of the same size.
180
+ def initialize(x, y)
181
+ super()
182
+ @x = x
183
+ @y = y
184
+ end
185
+
186
+ def compile
187
+ str = ''
188
+ @x.each_index{ |i|
189
+ str = str + 'drawarrow (' + @x[i].to_s + 'cm, 0)--(' + @x[i].to_s + 'cm, ' + @y[i].to_s + 'cm) ' + compile_options + ";\n"
190
+ }
191
+ return str
192
+ end
193
+
194
+ def compilewithscale(xscale, yscale)
195
+ str = ''
196
+ @x.each_index{ |i|
197
+ str = str + 'drawarrow (' + (@x[i]*xscale).to_s + 'cm, 0)--(' + (@x[i]*xscale).to_s + 'cm, ' + (@y[i]*yscale).to_s + 'cm) ' + compile_options + ";\n"
198
+ }
199
+ return str
200
+ end
201
+
202
+ end
203
+
204
+ class StemPlot < AbstractPlot
205
+
206
+ #Intitalise with two arrays of the same size.
207
+ def initialize(x, y)
208
+ super()
209
+ @x = x
210
+ @y = y
211
+ end
212
+
213
+ def compile
214
+ str = ''
215
+ @x.each_index{ |i|
216
+ str = str + 'draw (' + @x[i].to_s + 'cm, 0)--(' + @x[i].to_s + 'cm, ' + @y[i].to_s + 'cm) ' + compile_options + ";\n"
217
+ str = str + 'fill fullcircle scaled (0.1cm) shifted (' + @x[i].to_s + 'cm, ' + @y[i].to_s + 'cm) ' + compile_options + ";\n"
218
+ }
219
+ return str
220
+ end
221
+
222
+ def compilewithscale(xscale, yscale)
223
+ str = ''
224
+ @x.each_index{ |i|
225
+ str = str + 'draw (' + (@x[i]*xscale).to_s + 'cm, 0)--(' + (@x[i]*xscale).to_s + 'cm, ' + (@y[i]*yscale).to_s + 'cm) ' + compile_options + ";\n"
226
+ str = str + 'fill fullcircle scaled (0.1cm) shifted (' + (@x[i]*xscale).to_s + 'cm, ' + (@y[i]*yscale).to_s + 'cm) ' + compile_options + ";\n"
227
+ }
228
+ return str
229
+ end
230
+
231
+ end
232
+
233
+
234
+ end
data/tests/test_circle.rb CHANGED
File without changes
data/tests/test_clip.rb CHANGED
File without changes
data/tests/test_graph.rb CHANGED
@@ -34,5 +34,4 @@ gd.add_label(GraphLabel.new(latex("data label"), 5).right)
34
34
  puts file.compile_to_string
35
35
  file.compile('testgraph')
36
36
 
37
- file.dvi_viewer = 'evince'
38
37
  file.view
data/tests/test_label.rb CHANGED
File without changes
data/tests/test_pair.rb CHANGED
File without changes
data/tests/test_path.rb CHANGED
@@ -4,8 +4,7 @@ require '../lib/objects'
4
4
  require '../lib/drawable'
5
5
  require '../lib/draw'
6
6
  require '../lib/options'
7
- require '../lib/label'
8
- require '../lib/graph'
7
+ #require '../lib/graph'
9
8
 
10
9
  include RubyPost
11
10
 
@@ -4,7 +4,6 @@ require '../lib/objects'
4
4
  require '../lib/drawable'
5
5
  require '../lib/draw'
6
6
  require '../lib/options'
7
- require '../lib/label'
8
7
  require '../lib/graph'
9
8
 
10
9
  include RubyPost
@@ -0,0 +1,49 @@
1
+ #require 'rubypost'
2
+
3
+ require '../lib/objects'
4
+ require '../lib/drawable'
5
+ require '../lib/draw'
6
+ require '../lib/options'
7
+ require '../lib/simpleplot'
8
+ #require '../lib/graph'
9
+
10
+ include RubyPost
11
+
12
+ #note, can't use underscores in filenames if you are going
13
+ #to use File#view. tex mproof breaks
14
+ file = RubyPost::File.new('testsimpleplot')
15
+
16
+ x = (-3..3).to_a
17
+ y = x.map { |v| v**2 }
18
+
19
+ lplot = CurvedPlot.new(x,y).add_option(Colour.new(1.0,0,0))
20
+ splot = LinePlot.new(x,y).add_option(Colour.new(1.0,0,0))
21
+ iplot = ImpulsePlot.new(x,y).add_option(Colour.new(0,1.0,0))
22
+ stemplot = StemPlot.new(x,y).add_option(Colour.new(0,0,1.0))
23
+
24
+ #draw a curved path
25
+ fig1 = Figure.new
26
+ file.add_figure(fig1)
27
+ fig1.add_drawable(lplot)
28
+
29
+
30
+ simpplot = SimplePlot.new(10, 5)
31
+ simpplot.add_plot(lplot)
32
+ simpplot.add_plot(splot)
33
+ simpplot.add_plot(iplot)
34
+ simpplot.add_plot(stemplot)
35
+ simpplot.xticks(x)
36
+ simpplot.yticks([3,6,9])
37
+ simpplot.xlabel(latex('t'))
38
+ simpplot.ylabel(latex('X(t)'))
39
+
40
+
41
+ #draw a curved path
42
+ fig2 = Figure.new
43
+ file.add_figure(fig2)
44
+ fig2.add_drawable(Draw.new(simpplot))
45
+
46
+
47
+ puts file.compile_to_string
48
+ file.compile
49
+ #file.view
data/tests/test_square.rb CHANGED
@@ -4,7 +4,6 @@ require '../lib/objects'
4
4
  require '../lib/drawable'
5
5
  require '../lib/draw'
6
6
  require '../lib/options'
7
- require '../lib/label'
8
7
  require '../lib/graph'
9
8
 
10
9
  include RubyPost
@@ -0,0 +1,33 @@
1
+ %!PS-Adobe-3.0 EPSF-3.0
2
+ %%BoundingBox: -86 -1 86 256
3
+ %%HiResBoundingBox: -85.28935 -0.25 85.28935 255.36806
4
+ %%Creator: MetaPost 1.208
5
+ %%CreationDate: 2010.08.02:2217
6
+ %%Pages: 1
7
+ %%DocumentResources: procset mpost-minimal
8
+ %%DocumentSuppliedResources: procset mpost-minimal
9
+ %%EndComments
10
+ %%BeginProlog
11
+ %%BeginResource: procset mpost-minimal
12
+ /bd{bind def}bind def/fshow {exch findfont exch scalefont setfont show}bd
13
+ /fcp{findfont dup length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall}bd
14
+ /fmc{FontMatrix dup length array copy dup dup}bd/fmd{/FontMatrix exch def}bd
15
+ /Amul{4 -1 roll exch mul 1000 div}bd/ExtendFont{fmc 0 get Amul 0 exch put fmd}bd
16
+ /ScaleFont{dup fmc 0 get Amul 0 exch put dup dup 3 get Amul 3 exch put fmd}bd
17
+ /SlantFont{fmc 2 get dup 0 eq{pop 1}if Amul FontMatrix 0 get mul 2 exch put fmd}bd
18
+ %%EndResource
19
+ %%EndProlog
20
+ %%BeginSetup
21
+ %%EndSetup
22
+ %%Page: 1 1
23
+ 1 0 0 setrgbcolor 0 0.5 dtransform truncate idtransform setlinewidth pop
24
+ [] 0 setdash 1 setlinecap 1 setlinejoin 10 setmiterlimit
25
+ newpath -85.03935 255.11806 moveto
26
+ -79.06273 207.2454 -69.58858 159.87465 -56.6929 113.3858 curveto
27
+ -48.70035 84.57266 -39.40112 56.13019 -28.34645 28.34645 curveto
28
+ -22.77745 14.34987 -14.41289 0 0 0 curveto
29
+ 14.41289 0 22.77745 14.34987 28.34645 28.34645 curveto
30
+ 39.40111 56.13019 48.70035 84.57266 56.6929 113.3858 curveto
31
+ 69.58858 159.87465 79.06273 207.2454 85.03935 255.11806 curveto stroke
32
+ showpage
33
+ %%EOF
@@ -0,0 +1,238 @@
1
+ %!PS-Adobe-3.0 EPSF-3.0
2
+ %%BoundingBox: -151 -9 161 164
3
+ %%HiResBoundingBox: -150.48628 -8.75403 160.67749 163.72165
4
+ %%Creator: MetaPost 1.208
5
+ %%CreationDate: 2010.08.02:2217
6
+ %%Pages: 1
7
+ %%DocumentResources: procset mpost-minimal
8
+ %%+ font CMR10
9
+ %%DocumentSuppliedResources: procset mpost-minimal
10
+ %%DocumentNeededResources: font CMR10
11
+ %%IncludeResource: font CMR10
12
+ %%EndComments
13
+ %%BeginProlog
14
+ %%BeginResource: procset mpost-minimal
15
+ /bd{bind def}bind def/fshow {exch findfont exch scalefont setfont show}bd
16
+ /fcp{findfont dup length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall}bd
17
+ /fmc{FontMatrix dup length array copy dup dup}bd/fmd{/FontMatrix exch def}bd
18
+ /Amul{4 -1 roll exch mul 1000 div}bd/ExtendFont{fmc 0 get Amul 0 exch put fmd}bd
19
+ /ScaleFont{dup fmc 0 get Amul 0 exch put dup dup 3 get Amul 3 exch put fmd}bd
20
+ /SlantFont{fmc 2 get dup 0 eq{pop 1}if Amul FontMatrix 0 get mul 2 exch put fmd}bd
21
+ %%EndResource
22
+ %%EndProlog
23
+ %%BeginSetup
24
+ /cmr10 /CMR10 def
25
+ %%EndSetup
26
+ %%Page: 1 1
27
+ 0 0 0 setrgbcolor 0 0.5 dtransform truncate idtransform setlinewidth pop
28
+ [] 0 setdash 1 setlinecap 1 setlinejoin 10 setmiterlimit
29
+ newpath 158.7403 0 moveto
30
+ -150.23628 0 lineto stroke
31
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
32
+ newpath 0 -8.50403 moveto
33
+ 0 158.7403 lineto stroke
34
+ newpath -141.73225 -2.83482 moveto
35
+ -141.73225 2.83482 lineto stroke
36
+ -139.63226 -8.52039 moveto
37
+ (-3) cmr10 9.96265 fshow
38
+ newpath -94.48802 -2.83482 moveto
39
+ -94.48802 2.83482 lineto stroke
40
+ -92.38803 -8.52039 moveto
41
+ (-2) cmr10 9.96265 fshow
42
+ newpath -47.24423 -2.83482 moveto
43
+ -47.24423 2.83482 lineto stroke
44
+ -45.14424 -8.52039 moveto
45
+ (-1) cmr10 9.96265 fshow
46
+ newpath 0 -2.83482 moveto
47
+ 0 2.83482 lineto stroke
48
+ 2.09999 -8.52039 moveto
49
+ (0) cmr10 9.96265 fshow
50
+ newpath 47.24423 -2.83482 moveto
51
+ 47.24423 2.83482 lineto stroke
52
+ 49.34422 -8.52039 moveto
53
+ (1) cmr10 9.96265 fshow
54
+ newpath 94.48802 -2.83482 moveto
55
+ 94.48802 2.83482 lineto stroke
56
+ 96.58801 -8.52039 moveto
57
+ (2) cmr10 9.96265 fshow
58
+ newpath 141.73225 -2.83482 moveto
59
+ 141.73225 2.83482 lineto stroke
60
+ 143.83224 -8.52039 moveto
61
+ (3) cmr10 9.96265 fshow
62
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
63
+ newpath -2.83482 47.24423 moveto
64
+ 2.83482 47.24423 lineto stroke
65
+ 3 44.03403 moveto
66
+ (3) cmr10 9.96265 fshow
67
+ newpath -2.83482 94.48802 moveto
68
+ 2.83482 94.48802 lineto stroke
69
+ 3 91.27782 moveto
70
+ (6) cmr10 9.96265 fshow
71
+ newpath -2.83482 141.73225 moveto
72
+ 2.83482 141.73225 lineto stroke
73
+ 3 138.52205 moveto
74
+ (9) cmr10 9.96265 fshow
75
+ 156.80309 3 moveto
76
+ (t) cmr10 9.96265 fshow
77
+ 3 156.24965 moveto
78
+ (X\(t\)) cmr10 9.96265 fshow
79
+ 1 0 0 setrgbcolor
80
+ newpath -141.73225 141.73225 moveto
81
+ -128.78806 113.90198 -112.95288 87.51018 -94.48802 62.99231 curveto
82
+ -80.99356 45.0742 -65.99892 28.09071 -47.24423 15.74808 curveto
83
+ -33.07912 6.42587 -16.96332 0 0 0 curveto
84
+ 16.96332 0 33.07912 6.42587 47.24423 15.74808 curveto
85
+ 65.99892 28.09071 80.99356 45.0742 94.48802 62.99231 curveto
86
+ 112.95288 87.51018 128.78804 113.90198 141.73225 141.73225 curveto stroke
87
+ newpath -141.73225 141.73225 moveto
88
+ -94.48802 62.99231 lineto
89
+ -47.24423 15.74808 lineto
90
+ 0 0 lineto
91
+ 47.24423 15.74808 lineto
92
+ 94.48802 62.99231 lineto
93
+ 141.73225 141.73225 lineto stroke
94
+ 0 1 0 setrgbcolor 0.5
95
+ 0 dtransform exch truncate exch idtransform pop setlinewidth
96
+ newpath -141.73225 0 moveto
97
+ -141.73225 141.73225 lineto stroke
98
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
99
+ newpath -140.20113 138.03589 moveto
100
+ -141.73225 141.73225 lineto
101
+ -143.26338 138.03589 lineto
102
+ closepath
103
+ gsave fill grestore stroke
104
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
105
+ newpath -94.48802 0 moveto
106
+ -94.48802 62.99231 lineto stroke
107
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
108
+ newpath -92.95709 59.2964 moveto
109
+ -94.48802 62.99231 lineto
110
+ -96.01895 59.2964 lineto
111
+ closepath
112
+ gsave fill grestore stroke
113
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
114
+ newpath -47.24423 0 moveto
115
+ -47.24423 15.74808 lineto stroke
116
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
117
+ newpath -45.71347 12.0526 moveto
118
+ -47.24423 15.74808 lineto
119
+ -48.775 12.0526 lineto
120
+ closepath
121
+ gsave fill grestore stroke
122
+ newpath 0 0 moveto
123
+ 0 0 lineto stroke
124
+ newpath 0 0 moveto
125
+ closepath
126
+ gsave fill grestore stroke
127
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
128
+ newpath 47.24423 0 moveto
129
+ 47.24423 15.74808 lineto stroke
130
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
131
+ newpath 48.775 12.0526 moveto
132
+ 47.24423 15.74808 lineto
133
+ 45.71347 12.0526 lineto
134
+ closepath
135
+ gsave fill grestore stroke
136
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
137
+ newpath 94.48802 0 moveto
138
+ 94.48802 62.99231 lineto stroke
139
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
140
+ newpath 96.01895 59.2964 moveto
141
+ 94.48802 62.99231 lineto
142
+ 92.95709 59.2964 lineto
143
+ closepath
144
+ gsave fill grestore stroke
145
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
146
+ newpath 141.73225 0 moveto
147
+ 141.73225 141.73225 lineto stroke
148
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
149
+ newpath 143.26338 138.03589 moveto
150
+ 141.73225 141.73225 lineto
151
+ 140.20113 138.03589 lineto
152
+ closepath
153
+ gsave fill grestore stroke
154
+ 0 0 1 setrgbcolor 0.5
155
+ 0 dtransform exch truncate exch idtransform pop setlinewidth
156
+ newpath -141.73225 0 moveto
157
+ -141.73225 141.73225 lineto stroke
158
+ newpath -140.31483 141.73225 moveto
159
+ -140.31483 142.10818 -140.4642 142.46869 -140.73001 142.7345 curveto
160
+ -140.99582 143.0003 -141.35632 143.14967 -141.73225 143.14967 curveto
161
+ -142.10818 143.14967 -142.46869 143.0003 -142.7345 142.7345 curveto
162
+ -143.0003 142.46869 -143.14967 142.10818 -143.14967 141.73225 curveto
163
+ -143.14967 141.35632 -143.0003 140.99582 -142.7345 140.73001 curveto
164
+ -142.46869 140.4642 -142.10818 140.31483 -141.73225 140.31483 curveto
165
+ -141.35632 140.31483 -140.99582 140.4642 -140.73001 140.73001 curveto
166
+ -140.4642 140.99582 -140.31483 141.35632 -140.31483 141.73225 curveto closepath
167
+ fill
168
+ newpath -94.48802 0 moveto
169
+ -94.48802 62.99231 lineto stroke
170
+ newpath -93.0706 62.99231 moveto
171
+ -93.0706 63.36824 -93.21997 63.72874 -93.48578 63.99455 curveto
172
+ -93.75159 64.26036 -94.11209 64.40973 -94.48802 64.40973 curveto
173
+ -94.86395 64.40973 -95.22446 64.26036 -95.49026 63.99455 curveto
174
+ -95.75607 63.72874 -95.90544 63.36824 -95.90544 62.99231 curveto
175
+ -95.90544 62.61638 -95.75607 62.25587 -95.49026 61.99007 curveto
176
+ -95.22446 61.72426 -94.86395 61.57489 -94.48802 61.57489 curveto
177
+ -94.11209 61.57489 -93.75159 61.72426 -93.48578 61.99007 curveto
178
+ -93.21997 62.25587 -93.0706 62.61638 -93.0706 62.99231 curveto closepath fill
179
+ newpath -47.24423 0 moveto
180
+ -47.24423 15.74808 lineto stroke
181
+ newpath -45.82681 15.74808 moveto
182
+ -45.82681 16.12401 -45.97618 16.48451 -46.24199 16.75032 curveto
183
+ -46.5078 17.01613 -46.8683 17.1655 -47.24423 17.1655 curveto
184
+ -47.62016 17.1655 -47.98067 17.01613 -48.24648 16.75032 curveto
185
+ -48.51228 16.48451 -48.66165 16.12401 -48.66165 15.74808 curveto
186
+ -48.66165 15.37215 -48.51228 15.01164 -48.24648 14.74583 curveto
187
+ -47.98067 14.48003 -47.62016 14.33066 -47.24423 14.33066 curveto
188
+ -46.8683 14.33066 -46.5078 14.48003 -46.24199 14.74583 curveto
189
+ -45.97618 15.01164 -45.82681 15.37215 -45.82681 15.74808 curveto closepath fill
190
+ 0 0.5 dtransform truncate idtransform setlinewidth pop
191
+ newpath 0 0 moveto
192
+ 0 0 lineto stroke
193
+ newpath 1.41742 0 moveto
194
+ 1.41742 0.37593 1.26805 0.73643 1.00224 1.00224 curveto
195
+ 0.73643 1.26805 0.37593 1.41742 0 1.41742 curveto
196
+ -0.37593 1.41742 -0.73643 1.26805 -1.00224 1.00224 curveto
197
+ -1.26805 0.73643 -1.41742 0.37593 -1.41742 0 curveto
198
+ -1.41742 -0.37593 -1.26805 -0.73643 -1.00224 -1.00224 curveto
199
+ -0.73643 -1.26805 -0.37593 -1.41742 0 -1.41742 curveto
200
+ 0.37593 -1.41742 0.73643 -1.26805 1.00224 -1.00224 curveto
201
+ 1.26805 -0.73643 1.41742 -0.37593 1.41742 0 curveto closepath fill
202
+ 0.5 0 dtransform exch truncate exch idtransform pop setlinewidth
203
+ newpath 47.24423 0 moveto
204
+ 47.24423 15.74808 lineto stroke
205
+ newpath 48.66165 15.74808 moveto
206
+ 48.66165 16.12401 48.51228 16.48451 48.24648 16.75032 curveto
207
+ 47.98067 17.01613 47.62016 17.1655 47.24423 17.1655 curveto
208
+ 46.8683 17.1655 46.5078 17.01613 46.24199 16.75032 curveto
209
+ 45.97618 16.48451 45.82681 16.12401 45.82681 15.74808 curveto
210
+ 45.82681 15.37215 45.97618 15.01164 46.24199 14.74583 curveto
211
+ 46.5078 14.48003 46.8683 14.33066 47.24423 14.33066 curveto
212
+ 47.62016 14.33066 47.98067 14.48003 48.24648 14.74583 curveto
213
+ 48.51228 15.01164 48.66165 15.37215 48.66165 15.74808 curveto closepath fill
214
+ newpath 94.48802 0 moveto
215
+ 94.48802 62.99231 lineto stroke
216
+ newpath 95.90544 62.99231 moveto
217
+ 95.90544 63.36824 95.75607 63.72874 95.49026 63.99455 curveto
218
+ 95.22446 64.26036 94.86395 64.40973 94.48802 64.40973 curveto
219
+ 94.11209 64.40973 93.75159 64.26036 93.48578 63.99455 curveto
220
+ 93.21997 63.72874 93.0706 63.36824 93.0706 62.99231 curveto
221
+ 93.0706 62.61638 93.21997 62.25587 93.48578 61.99007 curveto
222
+ 93.75159 61.72426 94.11209 61.57489 94.48802 61.57489 curveto
223
+ 94.86395 61.57489 95.22446 61.72426 95.49026 61.99007 curveto
224
+ 95.75607 62.25587 95.90544 62.61638 95.90544 62.99231 curveto closepath fill
225
+ newpath 141.73225 0 moveto
226
+ 141.73225 141.73225 lineto stroke
227
+ newpath 143.14967 141.73225 moveto
228
+ 143.14967 142.10818 143.0003 142.46869 142.7345 142.7345 curveto
229
+ 142.46869 143.0003 142.10818 143.14967 141.73225 143.14967 curveto
230
+ 141.35632 143.14967 140.99582 143.0003 140.73001 142.7345 curveto
231
+ 140.4642 142.46869 140.31483 142.10818 140.31483 141.73225 curveto
232
+ 140.31483 141.35632 140.4642 140.99582 140.73001 140.73001 curveto
233
+ 140.99582 140.4642 141.35632 140.31483 141.73225 140.31483 curveto
234
+ 142.10818 140.31483 142.46869 140.4642 142.7345 140.73001 curveto
235
+ 143.0003 140.99582 143.14967 141.35632 143.14967 141.73225 curveto closepath
236
+ fill
237
+ showpage
238
+ %%EOF
@@ -0,0 +1,4 @@
1
+ This is MetaPost, version 1.208 (kpathsea version 5.0.0) (mem=mpost 2010.05.14) 2 AUG 2010 22:17
2
+ **testsimpleplot.mp
3
+ (./testsimpleplot.mp [1{pdftex.map}] [2] )
4
+ 2 output files written: testsimpleplot-1.mps .. testsimpleplot-2.mps
@@ -0,0 +1,75 @@
1
+ prologues := 2;
2
+ filenametemplate "%j-%c.mps";
3
+ picture ORIGINAL_PICTURE;
4
+ ORIGINAL_PICTURE := currentpicture;
5
+ picture picDblerg;
6
+
7
+ %draw the axes
8
+ draw ((5.6cm,0)--(-5.3cm,0));
9
+ draw ((0, -0.3cm)--(0, 5.6cm));
10
+
11
+ %draw xticks
12
+ draw ((0,-0.1cm)--(0,0.1cm)) shifted (-5.0cm, 0);
13
+ label.lrt(btex -3 etex ,(-5.0cm, 0));
14
+ draw ((0,-0.1cm)--(0,0.1cm)) shifted (-3.33333333333333cm, 0);
15
+ label.lrt(btex -2 etex ,(-3.33333333333333cm, 0));
16
+ draw ((0,-0.1cm)--(0,0.1cm)) shifted (-1.66666666666667cm, 0);
17
+ label.lrt(btex -1 etex ,(-1.66666666666667cm, 0));
18
+ draw ((0,-0.1cm)--(0,0.1cm)) shifted (0.0cm, 0);
19
+ label.lrt(btex 0 etex ,(0.0cm, 0));
20
+ draw ((0,-0.1cm)--(0,0.1cm)) shifted (1.66666666666667cm, 0);
21
+ label.lrt(btex 1 etex ,(1.66666666666667cm, 0));
22
+ draw ((0,-0.1cm)--(0,0.1cm)) shifted (3.33333333333333cm, 0);
23
+ label.lrt(btex 2 etex ,(3.33333333333333cm, 0));
24
+ draw ((0,-0.1cm)--(0,0.1cm)) shifted (5.0cm, 0);
25
+ label.lrt(btex 3 etex ,(5.0cm, 0));
26
+
27
+ %draw yticks
28
+ draw ((-0.1.cm,0)--(0.1cm,0)) shifted (0,1.66666666666667cm);
29
+ label.rt(btex 3 etex ,(0,1.66666666666667cm));
30
+ draw ((-0.1.cm,0)--(0.1cm,0)) shifted (0,3.33333333333333cm);
31
+ label.rt(btex 6 etex ,(0,3.33333333333333cm));
32
+ draw ((-0.1.cm,0)--(0.1cm,0)) shifted (0,5.0cm);
33
+ label.rt(btex 9 etex ,(0,5.0cm));
34
+
35
+ %draw xticks
36
+ label.top(btex t etex, (5.6cm,0));
37
+
38
+ %draw yticks
39
+ label.rt(btex X(t) etex, (0, 5.6cm));
40
+ draw ((-5.0cm, 5.0cm)..(-3.33333333333333cm, 2.22222222222222cm)..(-1.66666666666667cm, 0.555555555555556cm)..(0.0cm, 0.0cm)..(1.66666666666667cm, 0.555555555555556cm)..(3.33333333333333cm, 2.22222222222222cm)..(5.0cm, 5.0cm)) withcolor(1.0,0,0);
41
+ draw ((-5.0cm, 5.0cm)--(-3.33333333333333cm, 2.22222222222222cm)--(-1.66666666666667cm, 0.555555555555556cm)--(0.0cm, 0.0cm)--(1.66666666666667cm, 0.555555555555556cm)--(3.33333333333333cm, 2.22222222222222cm)--(5.0cm, 5.0cm)) withcolor(1.0,0,0);
42
+ drawarrow (-5.0cm, 0)--(-5.0cm, 5.0cm) withcolor(0,1.0,0);
43
+ drawarrow (-3.33333333333333cm, 0)--(-3.33333333333333cm, 2.22222222222222cm) withcolor(0,1.0,0);
44
+ drawarrow (-1.66666666666667cm, 0)--(-1.66666666666667cm, 0.555555555555556cm) withcolor(0,1.0,0);
45
+ drawarrow (0.0cm, 0)--(0.0cm, 0.0cm) withcolor(0,1.0,0);
46
+ drawarrow (1.66666666666667cm, 0)--(1.66666666666667cm, 0.555555555555556cm) withcolor(0,1.0,0);
47
+ drawarrow (3.33333333333333cm, 0)--(3.33333333333333cm, 2.22222222222222cm) withcolor(0,1.0,0);
48
+ drawarrow (5.0cm, 0)--(5.0cm, 5.0cm) withcolor(0,1.0,0);
49
+ draw (-5.0cm, 0)--(-5.0cm, 5.0cm) withcolor(0,0,1.0);
50
+ fill fullcircle scaled (0.1cm) shifted (-5.0cm, 5.0cm) withcolor(0,0,1.0);
51
+ draw (-3.33333333333333cm, 0)--(-3.33333333333333cm, 2.22222222222222cm) withcolor(0,0,1.0);
52
+ fill fullcircle scaled (0.1cm) shifted (-3.33333333333333cm, 2.22222222222222cm) withcolor(0,0,1.0);
53
+ draw (-1.66666666666667cm, 0)--(-1.66666666666667cm, 0.555555555555556cm) withcolor(0,0,1.0);
54
+ fill fullcircle scaled (0.1cm) shifted (-1.66666666666667cm, 0.555555555555556cm) withcolor(0,0,1.0);
55
+ draw (0.0cm, 0)--(0.0cm, 0.0cm) withcolor(0,0,1.0);
56
+ fill fullcircle scaled (0.1cm) shifted (0.0cm, 0.0cm) withcolor(0,0,1.0);
57
+ draw (1.66666666666667cm, 0)--(1.66666666666667cm, 0.555555555555556cm) withcolor(0,0,1.0);
58
+ fill fullcircle scaled (0.1cm) shifted (1.66666666666667cm, 0.555555555555556cm) withcolor(0,0,1.0);
59
+ draw (3.33333333333333cm, 0)--(3.33333333333333cm, 2.22222222222222cm) withcolor(0,0,1.0);
60
+ fill fullcircle scaled (0.1cm) shifted (3.33333333333333cm, 2.22222222222222cm) withcolor(0,0,1.0);
61
+ draw (5.0cm, 0)--(5.0cm, 5.0cm) withcolor(0,0,1.0);
62
+ fill fullcircle scaled (0.1cm) shifted (5.0cm, 5.0cm) withcolor(0,0,1.0);
63
+ picDblerg := currentpicture; currentpicture := ORIGINAL_PICTURE;
64
+
65
+ beginfig(1);
66
+ draw ((-3cm, 9cm)..(-2cm, 4cm)..(-1cm, 1cm)..(0cm, 0cm)..(1cm, 1cm)..(2cm, 4cm)..(3cm, 9cm)) withcolor(1.0,0,0);
67
+
68
+ endfig;
69
+
70
+ beginfig(2);
71
+ draw picDblerg ;
72
+
73
+ endfig;
74
+
75
+ end;