In [1]:
gem 'nyaplot', '0.1.5'
require 'nyaplot'
require 'nyaplot3d'

Out[1]:
Out[1]:
Out[1]:
true
In [2]:
x=[];y=[];z=[]
-10.step(10, 0.5) do |i|
-10.step(10, 0.5) do |j|
x.push(i)
y.push(j)
z.push(Math.sin(Math.sqrt(i*i+j*j))/Math.sqrt(i*i+j*j))
end
end
z.map!{|val| next (val.nan? ? 0 : val)} #(0,0) will be -inf
""

Out[2]:
""

# Wireframe¶

In [3]:
plot = Nyaplot::Plot3D.new
plot.add(:wireframe, x, y, z)
plot.show

Out[3]:

# Surface¶

In [4]:
plot = Nyaplot::Plot3D.new
plot.add(:surface, x, y, z)
plot.show

Out[4]:

# Line¶

In [5]:
step_num = 10000;
p = 10; r = 28; b = 8/3; dt = 0.01

fx = Proc.new{|x,y,z| ((-1)*p*x + p*y)};
fy = Proc.new{|x,y,z| ((-1)*x*z + r*x - y)};
fz = Proc.new{|x,y,z| (x*y - b*z)};

x_arr=[]; y_arr=[]; z_arr=[]
x = 1; y = 1; z = 1
step_num.times do |i|
x += dt * fx.call(x,y,z);
y += dt * fy.call(x,y,z);
z += dt * fz.call(x,y,z);
x_arr.push(x);
y_arr.push(y);
z_arr.push(z);
end

plot = Nyaplot::Plot3D.new
plot.add(:line, x_arr, y_arr, z_arr)
plot.show

Out[5]:

# Scatter¶

In [6]:
plot = Nyaplot::Plot3D.new
colors = ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072']
['circle', 'rect', 'rect', 'diamond'].each do |shape|
x, y, z = [0,0,0].map{|d| next Array.new(20, rand*5).map{|v| next v+rand}}
sc = plot.add(:scatter, x, y, z)
sc.shape(shape)
sc.fill_color(colors.pop)
end
plot.show

Out[6]:

# Particles¶

In [7]:
plot = Nyaplot::Plot3D.new
['#ff7f00','#1f78b4','#a6cee3'].each_with_index do |color, index|
x=[];y=[];z=[];dz = 5*rand
0.step(1, 0.2) do |i|
0.step(1, 0.2) do |j|
x.push(i+rand)
y.push(j+rand)
z.push(Math.sin(i)*Math.sin(j)+dz+rand)
end
end
p = plot.add(:particles, x, y, z)
p.color(color)
p.name('molecules')
end
plot.show

Out[7]:
In [ ]: