matplotlib en el generador de gráficos JMPHola, estoy tratando de combinar matplotlib y el generador de gráficos JMP, pero no sé si es posible. Quiero trazar un gráfico en particular que solo pude trazar en matplotlib; pero quiero aprovechar las ventajas de la interfaz del generador de gráficos JMP, como el filtrado de datos. ¿Es posible mostrar un diagrama de matplotlib sobre la interfaz del generador de gráficos JMP? Gracias por adelantado
GráficosScriptingRe: matplotlib en el generador de gráficos JMPUna secuencia de comandos podría manejar el uso de un filtro de datos, que activa el código matplotlib y recrea el gráfico en función de los datos filtrados.Pero no conozco de todos modos para integrar Graph Builder con matplotlib.
Re: matplotlib en el generador de gráficos JMPPodría malinterpretar el resultado deseado, pero parece que solo necesita un filtro de datos y un gráfico, no la interactividad de arrastrar y soltar en Graph Builder (GB) y el diseño de gráfico complejo dentro de GB.
Si es así, creo que al menos necesitas los siguientes ingredientes:
- Función JSL "Make Filter Change Handler", para que pueda obtener subconjuntos de datos según el estado del filtro de datos. Consulte el ejemplo de "Hacer controlador de cambios de filtro" en Índice de secuencias de comandos.
- Función JSL "Python Get Graphics", para que pueda recuperar la trama de Python. Vea el ejemplo de "Python Get Graphics" en Scripting Index.
- Un cuadro de visualización "Cuadro de contexto de filtro de datos" para contener tanto el filtro como su gráfico, y posiblemente otros análisis juntos.
Aquí hay un pequeño ejemplo que une los elementos.
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 );
Preste atención a la regla de sangría de Python. Por ejemplo, todas las cadenas en Python Submit deben pegar sus frontales al comienzo de las líneas.
Aquí hay un par de capturas de pantalla del producto.


Re: matplotlib en el generador de gráficos JMP¡Increíble gran ejemplo!
Si usa este ejemplo, esté preparado para esperar a que se cargue Python después del primer clic; mi máquina lenta puede tardar entre 10 y 30 segundos. Una vez cargado, es lo suficientemente rápido en los siguientes clics.
Re: matplotlib en el generador de gráficos JMPEste ejemplo debe agregarse al libro de recetas de JMP