首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Plot.jl添加绘图到GTK窗口朱莉娅

从Plot.jl添加绘图到GTK窗口朱莉娅
EN

Stack Overflow用户
提问于 2022-06-09 23:03:41
回答 1查看 220关注 0票数 4

我使用Glade、GTK和Julia构建了一个GUI。我想在GUI中添加一个绘图(在我的窗口/布局中),但无法找到将一个绘图作为小部件添加的方法。如何使用Plots.jl在图形用户界面中实现一个绘图?

添加以下内容不会使GUI布局中出现任何内容

代码语言:javascript
运行
复制
x = 1:10; y = rand(10, 3) #
plot(x, y)
EN

回答 1

Stack Overflow用户

发布于 2022-06-10 19:31:33

您可以让绘图将图像写入内存中的MIME映像,然后在画布中绘制更新,让Gtk加载该图像:

代码语言:javascript
运行
复制
using Cairo
using Gtk
using Plots

const io = PipeBuffer()

histio(n) = show(io, MIME("image/png"),  histogram(randn(n)))

function plotincanvas(h = 900, w = 800)
    win = GtkWindow("Normal Histogram Widget", h, w) |> (vbox = GtkBox(:v) |> (slide = GtkScale(false, 1:500)))
    Gtk.G_.value(slide, 250.0)
    can = GtkCanvas()
    push!(vbox, can)
    set_gtk_property!(vbox, :expand, can, true)
    @guarded draw(can) do widget
        ctx = getgc(can)
        n = Int(Gtk.GAccessor.value(slide))
        histio(n)
        img = read_from_png(io)
        set_source_surface(ctx, img, 0, 0)
        paint(ctx)
    end
    id = signal_connect((w) -> draw(can), slide, "value-changed")
    showall(win)
    show(can)
end

plotincanvas()

我确信,如果您知道底层的数据格式,也有一种方法可以直接传输图像数据,而不需要show()。该方法避免了任何显式转换的需要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72567498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档