gpt4 book ai didi

ruby - 使用 ruby​​_gnuplot 在 Ruby 中制作动画 3d 散点图

转载 作者:行者123 更新时间:2023-12-05 08:00:41 26 4
gpt4 key购买 nike

是否可以使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com