在iRuby中显示多个图形

时间:2019-06-06 03:35:47

标签: ruby iruby

我试图显示多个图,并且每个图在iRuby的一个输出中都具有两个水平布局的子图,并在Google Colaboratory上运行。

我第一次使用Nyaplot,但是它不起作用。我不知道为什么,但是它没有给我任何答复。

这是我检查其工作原理的来源:

require 'nyaplot'

plot = Nyaplot::Plot.new
plot.add(:bar, ['Persian', 'Maine Coon', 'American Shorthair'], [10,20,30])
plot.x_label("Species")
plot.y_label("Number")
p = Nyaplot::Frame.new
p.add(plot)
p.show

这是输出:

#<CZTop::Socket::PUB:0x5609e3406f80 last_endpoint="tcp://127.0.0.1:42375">

仅此而已。

所以我更改为Matplotlib :: Pyplot,它工作正常。 (除非当我尝试使用子图时速度太慢。)但是当我试图在一个单元格中显示多个图形时,每个输出都被合并,所以我不能使用它。

测试了此示例代码:

def a
    plt = Matplotlib::pyplot

    xs = [*1..100]

    ys = xs.map {|x| Math.sin(Math::PI * x / 20.0) + 0.1 * (rand - 0.5) }
    ys2 = xs.map {|x| Math.cos(Math::PI * x / 20.0) + 0.1 * (rand - 0.5) }

    plt.subplot(2,1,1)
    plt.plot(xs, ys, "r", label: "Hello")
    plt.title("a")
    plt.plot(xs, ys2, "b", label: "GoodBye")
    plt.legend
    plt.subplot(2,1,2)
    plt.plot(ys, xs, "r", label: "hello?")
    plt.plot(ys2, xs, "b", label: "goodbye?")
    plt.title("b")
    plt.legend

    plt.show
end

a()
a()
a()

得到this image

因此,我更改为daru-view,但仅一次调用show_in_iruby超过一次,就无法在一个输出中显示多个图形。另外,我需要在matplotlib中有类似subplot的东西,但是找不到水平布局的东西。

使用以下代码:


Daru::View.plotting_library = :googlecharts
idx = Daru::Index.new ['a', 'b', 'c']
df_1 = Daru::DataFrame.new([[1,2,3], [1,2,3], [1,3,5]])
df_1.vectors = idx
idx2 = Daru::Index.new ['a', 'b', 'c']
df_2 = Daru::DataFrame.new([[1,2,3], [1,2,3], [1,2,3]])
df_2.vectors = idx2

options = {title: "name", colors: ["red", "blue"]}
plt1 = Daru::View::Plot.new(df_1, options)
plt2 = Daru::View::Plot.new(df_2, options)
plt1.show_in_iruby
plt2.show_in_iruby

得到image like this

我应该怎么做才能在一个输出中显示多个图形?

0 个答案:

没有答案