Class: BoxPlotSketch

Inherits:
Processing::App
  • Object
show all
Defined in:
lib/demo-boxplot.rb

Instance Method Summary collapse

Instance Method Details

#setupObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/demo-boxplot.rb', line 9

def setup
	@screen_height = 900
	@width = width
	@height = height
	no_loop
	smooth
	background(0,0,0)
	color_mode(HSB, 1.0)
	box = {:minimum => 20, :maximum => 70, :q1 => 30, :q2 => 40, :q3 => 50}
	@x_unit_vector = {:x => 1.0, :y => 0.15}
	@y_unit_vector = {:x => 0.2, :y => 1.0}
	@screen_transform = Transform.new({:x => 5.0, :y => -5.0}, {:x => @width/2, :y => @screen_height})
	x_range = ContinuousRange.new({:minimum => 0.0, :maximum => 80.0})
	y_range = ContinuousRange.new({:minimum => 0.0, :maximum => 80.0})
	@c = CoordinateSystem.new(Axis.new(@x_unit_vector,x_range), Axis.new(@y_unit_vector,y_range), self, [[1,0],[0,1]])
	@screen = Screen.new(@screen_transform, self, @c)
	stroke(0.3,1,1)
	no_fill
	position = 20
	box_width = 20
	whisker_width = 10
	@screen.plot(box) do |o,s|
		s.in_basis do
			rect(position - box_width/2, o[:q1], box_width, o[:q2] - o[:q1])
			rect(position - box_width/2, o[:q2], box_width, o[:q3] - o[:q2])
			line(position, o[:q3], position, o[:maximum])
			line(position, o[:q1], position, o[:minimum])
			line(position - whisker_width/2, o[:minimum], position + whisker_width/2, o[:minimum])
			line(position - whisker_width/2, o[:maximum], position + whisker_width/2, o[:maximum])
		end
	end
	
	@screen.draw_axes(10, 4)
end