Я хочу сделать набор подзаговоров из многомерного массива, используя Brullo's Julia Plots. Эта функция plot принимает вход varargs и превращает их в подзаголовки, но я не могу, кажется, правильно кормить свой массив и, вероятно, не замечаю ничего простого. Например, с массивом a
:Как создать произвольное количество подзаговоров в сюжетах Julia
a = randn(5,5,8)
a = a.-mean(a)
a = a./maximum(extrema(a))
Если я хочу построить некоторые из 5х5 ломтиков как тепловые карты, я могу сделать:
plot(heatmap(a[:,:,1], aspect_ratio=:equal, clims=(-1,1), title=string(1)),
heatmap(a[:,:,2], aspect_ratio=:equal, clims=(-1,1), title=string(2)),
heatmap(a[:,:,3], aspect_ratio=:equal, clims=(-1,1), title=string(3)))
, который производит:
но если я хочу сделать все восемь (или переменное число, которое является моей целью), я не могу заставить его работать с циклом или splat. Я попробовал последний создать кортеж, но получил ошибку:
plot(tuple([heatmap(a[:,:,i], aspect_ratio=:equal, clims=(-1,1)) for i in 1:8]...))
LoadError: MethodError: Cannot `convert` an object of type String to an object of type MethodError
This may have arisen from a call to the constructor MethodError(...),
since type constructors fall back to convert methods.
while loading In[1], in expression starting on line 1
Какой лучший подход здесь?
Спасибо, что помогли мне получить мою голову прямо. Ключ непосредственно разбивает массив. Поэтому, изменяя мою попытку: «plot ([heatmap (a [:,:, i], aspect_ratio =: equal, clims = (- 1,1)) для i в 1: 8] ...)' будет работать с тех пор splat [разделяет аргументы в вызовах функций] (http://docs.julialang.org/en/stable/manual/faq/#splits-one-argument-into-many-different-arguments-in-function-calls). – ultradian