1
votes

Julia - Affichage de plusieurs tracés dans le même tracé (pas de sous-tracé)

Le traçage de plusieurs séries dans un même affichage de tracé est possible ainsi que plusieurs sous-tracés dans un affichage. Mais je veux que plusieurs graphiques qui peuvent être des choses complètement différentes (pas nécessairement une série ou un graphique d'une carte) soient affichés exactement dans un cadre. Comment puis je faire ça? Dans Maple, vous attribuez des noms pour chaque parcelle comme P1: = ...: , P2: = ...: puis en utilisant tracés: -display (P1, P2, ...); et cela fonctionne. Mais je veux faire ça avec Julia. Disons que j'ai les graphiques suivants comme exemple:

using Plots
pyplot()
x=[1,2,2,1,1]
y=[1,1,2,2,1]
p1=plot(x,y,fill=(0, :orange))

x2=[2,3,3,2,2]
y2=[2,2,3,3,2]
p2=plot!(x2,y2,fill=(0, :orange))

p3=plot(x,y)

display(p2)

p5=plot!([1,2,2,1,1],[2,2,3,3,2],fill=(0, :green))

Maintenant, comment avoir à la fois P1 et P2 dans un graphique? Je n'ai pas un raccourci ou une astuce pour écrire la sortie de cet exemple spécifique avec une ligne de tracé, notez que ma question est générale, par exemple p2 peut être une courbe ou autre chose, ou je peux avoir un pour qui génère un tracé à chaque étape, puis je veux mettre toutes ces formes dans un affichage de tracé à la fin de la boucle for .


Code pour un exemple simple d'essayer d'utiliser plot! () pour l'ajouter à un graphique avec un ordre arbitraire.

using Plots
pyplot()
x=[1,2,2,1,1]
y=[1,1,2,2,1]
plot(x,y)

p1=plot(x,y,fill=(0, :orange))

x2=[2,3,3,2,2]
y2=[2,2,3,3,2]
p2=plot(x2,y2,fill=(0, :yellow))

En exécutant le code ci-dessus, je vois les graphiques suivants respectivement. entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici

Mais ce que je m'attendais à voir est un tracé avec le rectangle vert ajouté à l'intérieur du tracé avec les deux rectangles orange.


6 commentaires

Pour ceux qui ne connaissent pas Maple, il est difficile de comprendre ce que vous recherchez. Avec plot! (), Vous pouvez ajouter au même cadre des choses assez différentes .. un histogramme, puis un graphique en courbes, puis un graphique à bulles .... vous voulez réaliser ...


@Antonello merci, plot! () fonctionne. Mais il y a un inconvénient à propos de plot! () , et c'est de cette façon que vous ajoutez le tracé actuel au dernier tracé précédent. Cela vous oblige donc forcément à avoir les tracés que vous souhaitez imprimer dans le même cadre exactement les uns après les autres. Alors que la méthode de Maple vous donne la liberté de définir des tracés, vous pouvez ensuite avoir n'importe quelle combinaison d'entre eux où que vous soyez dans le programme. Y a-t-il par hasard une autre commande dans le package Plots de Julia ou tout autre package de traçage de Julia qui donne une telle liberté?


Vegalite peut vous permettre de le faire.


Je n'obtiens toujours pas ce que vous voulez ... vous pouvez enregistrer les graphiques individuels dans des variables, puis les afficher où vous le souhaitez dans le programme, c'est juste que plot () affiche par défaut le dernier intrigue faite ..


@Antonello pouvez-vous vérifier le code que j'ai ajouté à la fin de la question? Bien que je demande à Julia d'afficher P2 avant P4 = plot! () , il ajoute encore P4 à P3 . Peut-être que je fais quelque chose de mal sinon il semble que plot! () ne fait qu'ajouter au dernier nouveau graphique.


@ MichaelK.Borregaard merci d'avoir présenté Vega-Lite, je vais vérifier.


3 Réponses :


0
votes

Eh bien, si vous faites cela, vous aurez techniquement des sous-intrigues. C'est ce que cela signifie. La syntaxe est

plot(p1, p2)


3 commentaires

J'ai mentionné que je ne voulais pas deux sous-graphiques séparés.


Ahh je vois. C'est une question de terminologie - dans Plots, nous nous référons spécifiquement à une chose encadrée lorsque nous utilisons le terme «intrigue». Ce dont vous parlez, c'est d'avoir plusieurs «séries» dans la même intrigue.


Merci pour la terminologie, je pensais par «série» dans la documentation des parcelles, cela veut dire schématiser une série chronologique ou quelque chose comme ça. Vous avez raison, je parle de plusieurs séries dans la même intrigue ^ _ ^



0
votes

Désolé, je ne sais pas comment tracer une parcelle entière (à l'inverse d'une série) sur une autre parcelle. Pour ce qui concerne l'ordre des parcelles, vous pouvez créer autant de parcelles que vous le souhaitez sans les afficher puis affichez-les où vous voulez, par exemple:

using Plots
pyplot()

# Here we create independent plots, without displaying them:
x=[1,2,2,1,1]
y=[1,1,2,2,1]
p1=plot(x,y,fill=(0, :orange));
x2=[2,3,3,2,2]
y2=[2,2,3,3,2]
p2=plot(x2,y2,fill=(0, :orange));
p3=plot(x,y);
p5=plot([1,2,2,1,1],[2,2,3,3,2],fill=(0, :green));

# Here we display the plots (in the order we want):
println("P2:")
display(p2)
println("P3:")
display(p3)
println("P5:")
display(p5)
println("P1:")
display(p1)


0 commentaires

1
votes

Actuellement (Julia 1.5.0, 2020-08), intriguez! peut prendre un argument facultatif qui fait référence à un tracé existant, qui est ensuite ajouté à:

p = plot(x, y)
plot!(p, x, z)

Vous pouvez donc tracer ce que vous voulez et l'ajouter dans l'ordre dont vous avez besoin.


0 commentaires