作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以使用 gnuplot gem 在 Ruby 中创建动画 3 维散点图?
我已经查看了 gem 源代码、一堆示例和 gnuplot 手册,但还没有弄清楚该怎么做。
我想我必须将它 fork 并添加一些 do-loop 功能 - 但在我这样做之前,我想知道是否有好的方法。
这是我的代码的摘录,显示了我目前所拥有的内容。
Gnuplot.open do |gp|
Gnuplot::SPlot.new( gp ) do |plot|
plot.title 'Orbital Simulation'
N.times do | i |
objects.each { | key, object | object.calc_tick(objects.except key) }
objects.each { | key, object | object.apply_tick }
x = []
y = []
z = []
objects.each do | key, object |
x << object.get_x
y << object.get_y
z << object.get_z
end
plot.data << Gnuplot::DataSet.new( [x, y, z] ) do |ds|
ds.with = "points"
ds.notitle
end
end
end
end
最佳答案
方法调用 Gnuplot::Splot.new(gp) {...}
将给定 block 中定义的命令(包括 splot 命令和内联数据)发送到 IO 对象 GP
。因此,在循环中依次调用Gnuplot::Splot.new
,并在它们之后插入一些等待行为(休眠)。
例如,以下代码生成动画 3d 散点图(实际上只包含一个点)。
require "gnuplot"
Gnuplot.open do |gp|
1000.times do |k| ### loop
Gnuplot::SPlot.new( gp ) do |plot|
plot.title 'Orbital Simulation'
plot.xrange "[-2:2]"
plot.yrange "[-2:2]"
plot.zrange "[-2:2]"
x = [Math.sin(k*0.05)]
y = [Math.cos(k*0.05)]
z = [Math.sin(k*0.07)]
plot.data << Gnuplot::DataSet.new( [x, y, z] ) do |ds|
ds.with = "points ps 2 pt 7"
ds.notitle
end
end
gp << "\n" ### this is needed to separate line after inline data
gp.flush ### flushing popen buffer
sleep 0.1 ### waiting
end
end
关于ruby - 使用 ruby_gnuplot 在 Ruby 中制作动画 3d 散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17508051/
我是一名优秀的程序员,十分优秀!