matplotlib sul generatore di grafici JMPCiao, sto cercando di combinare matplotlib e il costruttore di grafici JMP, ma non so se è possibile. Voglio tracciare un grafico particolare che potrei tracciare solo su matplotlib; ma voglio sfruttare i vantaggi dell'interfaccia del generatore di grafici JMP, come il filtraggio dei dati. È possibile mostrare un grafico matplotlib sull'interfaccia del generatore di grafici JMP? Grazie in anticipo
GraficaScriptingRe: 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.
Re: matplotlib sul generatore di grafici JMPPotrei fraintendere il risultato desiderato, ma sembra che sia necessario solo un filtro di dati e un grafico, non l'interattività drag-n-drop in Graph Builder (GB) e il complesso layout del 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 di dati. Vedere l'esempio per "Crea gestore di modifica del filtro" in Scripting Index.
- Funzione JSL "Python Ottieni grafica", in modo da poter recuperare la trama da python. Vedere l'esempio per "Python Get Graphics" in Scripting Index.
- Una casella di visualizzazione "Filtro di contesto del 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 attaccare i fronti all'inizio delle righe.
Ecco un paio di screenshot del prodotto.


Re: matplotlib sul generatore di grafici JMPIncredibile grande esempio!
Se usi questo esempio, preparati ad aspettare che Python venga caricato dopo il primo clic; la mia macchina lenta potrebbe impiegare 10-30 secondi. Una volta caricato, è abbastanza veloce nei clic successivi.
Re: matplotlib sul generatore di grafici JMPQuesto esempio deve essere aggiunto al JMP Cookbook