J'essaye de créer un complot dans Julia (utilisant actuellement Gadfly mais je serais disposé à utiliser un paquet différent). J'ai un tableau multidimensionnel. Pour une taille de dimension fixe (par exemple 4875x3x3 une parcelle appropriée serait:Julia traçant un nombre inconnu de couches dans Gadfly
p=Gadfly.plot(
layer(y=sim1.value[:,1,1],x=[sim1.range],Geom.line, Theme(default_color=color("red"))),
layer(y=sim1.value[:,1,2],x=[sim1.range],Geom.line, Theme(default_color=color("blue"))),
layer(y=sim1.value[:,1,3],x=[sim1.range],Geom.line, Theme(default_color=color("green")))
)
mais en général je veux être en mesure d'écrire une déclaration de complot où je ne connais pas la troisième dimension du tableau sim1.value Comment. puis-je écrire une telle déclaration
peut-être quelque chose comme:
p=Gadfly.plot([layer(y=sim1.value[:,1,i],x=[sim1.range], Geom.line, Theme(default_color=color("red"))) for i in 1:size(sim1)[3]])
mais cela ne fonctionne pas
j'ai pu résoudre ce problème en réorganisant le tableau. dans une base de données et en ajoutant une colonne pour indiquer quelle est la troisième dimension, mais je me demandais s'il y avait un moyen de le faire sans créer un dataframe.
Les données ressemblent à ceci:
julia> sim1.value
4875x3x3 Array{Float64,3}:
[:, :, 1] =
0.201974 0.881742 0.497407
0.0751914 0.921308 0.732588
-0.109084 1.06304 1.15962
-0.0149133 0.896267 1.22897
0.717094 0.72558 0.456043
0.971697 0.792255 0.40328
0.971697 0.792255 0.227884
-0.600564 1.23815 0.499631
-0.881391 1.07994 0.59905
-0.530923 1.00278 0.447363
⋮
0.866138 0.657875 0.280823
1.00881 0.594015 0.894645
0.470741 0.859117 1.09108
0.919887 0.540488 1.01126
2.22095 0.194968 0.954895
2.5013 0.202698 2.05665
1.94958 0.257192 2.01836
2.24015 0.209885 1.67657
0.76246 0.739945 2.2389
0.673887 0.640661 2.15134
[:, :, 2] =
1.28742 0.760712 1.61112
2.21436 0.229947 1.87528
-1.66456 1.46374 1.94794
-2.4864 1.84093 2.34668
-2.79278 1.61191 2.22896
-1.46289 1.21712 1.96906
-0.580682 1.3222 1.45223
0.17112 1.20572 0.74517
0.734113 0.629927 1.43462
1.29676 0.266065 1.52497
⋮
1.2871 0.595874 0.195617
1.84438 0.383567 1.15537
2.12446 0.520074 0.957211
2.36307 0.222486 0.402168
2.43727 0.19843 0.636037
2.33525 0.302378 0.811371
1.09497 0.605816 0.297978
1.366 0.56246 0.343701
1.366 0.56246 0.219561
1.35889 0.630971 0.281955
[:, :, 3] =
0.649675 0.899028 0.628103
0.718837 0.665043 0.153844
0.914646 0.807048 0.207743
0.612839 0.790611 0.293676
0.759457 0.758115 0.280334
0.77993 0.774677 0.396879
-1.63825 1.38275 0.85772
-1.43517 1.45871 0.835853
-1.15413 1.35757 1.05071
-1.10967 1.37525 0.685986
⋮
1.15299 0.561492 0.680718
1.14853 0.629728 0.294947
1.65147 0.517422 0.22285
1.65147 0.517422 0.517451
1.78835 0.719658 0.745866
2.36554 0.426616 1.49432
0.855502 0.739237 1.24224
-0.175234 0.701025 1.07798
-0.221313 0.939255 1.3463
1.58094 0.368615 1.63817
Je ne l'ai pas essayé, mais est-ce que "splatting" fonctionne ici? 'p = Gadfly.plot ([calque (y = sim1.value [:, 1, i], x = [sim1.range], Geom.line, Thème (default_color = couleur (" rouge "))) pour i dans 1: size (sim1) [3]] ...) ' – rickhg12hs
L'accrochage fonctionne vraiment! Je vous remercie. Vous pouvez le poster comme une réponse et je peux le sélectionner. Existe-t-il un moyen d'utiliser «i» dans la compréhension pour avoir une séquence de couleurs? – bdeonovic
Une autre option consiste à utiliser 'add_plot_element', voir [cette question] (http://stackoverflow.com/questions/23585327/are-gadfly-plots-currently-composable). –