matplotlib im JMP-Graph-BuilderHallo, ich versuche, Matplotlib und JMP Graph Builder zu kombinieren, weiß aber nicht, ob dies möglich ist. Ich möchte einen bestimmten Graphen zeichnen, den ich nur auf Matplotlib zeichnen könnte; aber ich möchte die Vorteile der JMP-Graph-Builder-Schnittstelle nutzen, wie z. B. die Datenfilterung. Ist es möglich, einen Matplotlib-Plot über die JMP-Graph-Builder-Schnittstelle anzuzeigen? Danke im Voraus
GrafikSkriptingBetreff: matplotlib im JMP-Graph-BuilderEin Skript könnte mit einem Datenfilter umgehen, der den Matplotlib-Code auslöst und das Diagramm basierend auf den gefilterten Daten neu erstellt.Aber ich weiß sowieso nicht, Graph Builder mit matplotlib zu integrieren.
Betreff: matplotlib im JMP-Graph-BuilderIch mag das gewünschte Ergebnis missverstehen, aber klingt so, dass Sie nur einen Datenfilter und ein Diagramm benötigen, nicht die Drag-and-Drop-Interaktivität im Graph Builder (GB) und das komplexe Diagrammlayout innerhalb von 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 Zustand des Datenfilters abrufen können. Siehe Beispiel für "Make Filter Change Handler" im Scripting Index.
- JSL-Funktion "Python Get Graphics", damit Sie den Plot 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. ZB müssen alle Strings in Python Submit am Anfang der Zeilen stehen.
Hier sind ein paar Screenshots des Produkts.


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. meine langsame Maschine kann 10-30 Sekunden dauern. Einmal geladen, ist es bei nachfolgenden Klicks schnell genug.
Betreff: matplotlib im JMP-Graph-BuilderDieses Beispiel muss dem JMP-Kochbuch hinzugefügt werden