matplotlib nel generatore di grafici JMPSalve, sto cercando di combinare matplotlib e il generatore di grafici JMP, ma non so se sia possibile. Voglio tracciare un grafico particolare che potrei tracciare solo su matplotlib; ma voglio sfruttare i vantaggi dell'interfaccia del generatore di grafici di JMP, come il filtraggio dei dati. È possibile mostrare un grafico matplotlib sull'interfaccia del generatore di grafici JMP? grazie in anticipo
GraficaScriptingRi: matplotlib sul generatore di grafici JMPQuesto esempio deve essere aggiunto al ricettario di JMP
Ri: matplotlib sul generatore di grafici JMPIncredibile grande esempio!
Se utilizzi questo esempio, preparati ad attendere il caricamento di Python dopo il primo clic; la mia macchina lenta potrebbe impiegare 10-30 secondi. Una volta caricato, è abbastanza veloce nei clic successivi.
Ri: matplotlib sul generatore di grafici JMPPotrei fraintendere il risultato desiderato, ma sembra che tu abbia bisogno solo di un filtro dati e di un grafico, non dell'interattività drag-n-drop in Graph Builder (GB) e del complesso layout grafico all'interno di GB.
Se è così, credo che tu abbia bisogno almeno dei seguenti ingredienti:
- Funzione JSL "Make Filter Change Handler", in modo da poter ottenere sottoinsiemi di dati in base allo stato del filtro dati. Vedi l'esempio per "Make Filter Change Handler" in Scripting Index.
- Funzione JSL "Python Get Graphics", in modo da poter recuperare la trama da Python. Vedere l'esempio per "Python Get Graphics" in Scripting Index.
- Una casella di visualizzazione "Riquadro contesto filtro dati" per contenere sia il filtro che il grafico e possibilmente altre analisi insieme.
Ecco un piccolo esempio che mette insieme gli elementi.
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 );
Presta attenzione alla regola di indentazione di Python. Ad esempio, tutte le stringhe in Python Submit devono incollare i fronti all'inizio delle righe.
Ecco un paio di screenshot del prodotto.


Ri: matplotlib sul generatore di grafici JMPUno script potrebbe gestire l'utilizzo di un filtro dati, che attiva il codice matplotlib e ricrea il grafico in base ai dati filtrati.Ma non so comunque integrare Graph Builder con matplotlib.