matplotlib im JMP Graph BuilderHallo, ich versuche Matplotlib und JMP Graph Builder zu kombinieren, weiß aber nicht, ob das möglich ist. Ich möchte ein bestimmtes Diagramm zeichnen, das ich nur mit Matplotlib zeichnen konnte. Ich möchte jedoch die Vorteile der JMP Graph Builder-Schnittstelle nutzen, beispielsweise die Datenfilterung. Ist es möglich, einen Matplotlib-Plot über die JMP Graph Builder-Schnittstelle anzuzeigen? Dank im Voraus
InhaltsorganisationBetreff: Matplotlib im JMP Graph BuilderDieses Beispiel muss dem JMP-Kochbuch hinzugefügt werden
Betreff: Matplotlib im JMP Graph BuilderErstaunlich tolles Beispiel!
Wenn Sie dieses Beispiel verwenden, müssen Sie darauf warten, dass Python nach dem ersten Klick geladen wird. Bei meiner langsamen Maschine kann es 10 bis 30 Sekunden dauern. Einmal geladen, ist es bei nachfolgenden Klicks schnell genug.
Betreff: Matplotlib im JMP Graph BuilderVielleicht verstehe ich das gewünschte Ergebnis falsch, aber es hört sich so an, als ob Sie nur einen Datenfilter und ein Diagramm benötigen, nicht die Drag-and-Drop-Interaktivität in Graph Builder (GB) und das komplexe Diagrammlayout in GB.
Wenn ja, glaube ich, dass Sie mindestens folgende Zutaten benötigen:
- JSL-Funktion „Make Filter Change Handler“, damit Sie Teilmengen von Daten basierend auf dem Status des Datenfilters abrufen können. Siehe Beispiel für „Make Filter Change Handler“ im Skriptindex.
- JSL-Funktion „Python Get Graphics“, damit Sie die Darstellung von Python zurückholen können. Siehe Beispiel für „Python Get Graphics“ im Scripting Index.
- Ein Anzeigefeld „Datenfilter-Kontextfeld“, in dem sowohl der Filter als auch Ihr Diagramm und möglicherweise andere Analysen zusammengehalten werden.
Hier ist ein kleines Beispiel, das die Elemente zusammenfügt.
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
New Window( "Shared Local Filter",
Data Filter Context Box(
H List Box(
filter = (dt << Data Filter( Local, Add Filter( columns( :Region ) ) )),
pb = Picture Box()
)
)
);
f = Function( {nrows},
rows = filter << get filtered rows;
xx = dt:X[rows];
yy = dt:Y[rows];
Python Init();
Python Send(xx);
Python Send(yy);
ml = Python Submit(
"\[
import matplotlib.pyplot as plt
plt.scatter(xx,yy)
plt.xlabel('X')
plt.ylabel('Y')
plt.show(block=False)
]\"
);
plot = Python Get Graphics( png );
pb << set image(plot);
Python Submit( "plt.close()" );
Python Term();
);
rs = filter << Make Filter Change Handler( f );
Beachten Sie die Einrückungsregel von Python. Beispielsweise müssen alle Zeichenfolgen in Python Submit am Anfang der Zeilen stehen.
Hier sind ein paar Screenshots des Produkts.


Betreff: Matplotlib im JMP Graph BuilderEin Skript könnte die Verwendung eines Datenfilters verarbeiten, der den Matplotlib-Code auslöst und das Diagramm basierend auf den gefilterten Daten neu erstellt.Aber ich weiß sowieso nicht, wie man Graph Builder mit Matplotlib integriert.