以前我用每一个过程来创建一个图。因为有太多的图,最好把这些图安排在子图中,以便更好地进行比较。
我第一次尝试这个
using Distributed
@everywhere using PyPlot
fig, ax = plt.subplots(1, 4)
pmap(i-> begin
ax[i].scatter([i, 2], [3, 4])
end, 1:4)
fig.savefig("test.png", transparent=false)
它只是生成空的子图。我后来明白了,这是因为ax
是为每个进程复制的,并且不会在进程之间共享。
然后我尝试SharedArrays
共享ax
using SharedArrays
convert(SharedArray, ax)
并得到
ArgumentError: type of SharedArray elements must be bits types, got PyCall.PyObject
最终的解决方案是将绘图移出每个过程并收集数据。
然而,我仍然很好奇,是否有任何方法可以在每个过程中创建数字(或子情节),并最终收集它们?
1条答案
按热度按时间wecizke31#
通过Plots.jl使用PyPlot。Plots.jl允许从以前生成的图构建布局。
(note这个例子中的每个图都有对应于工人ID的Y刻度)