pérdida de colormap despues de activar y desactivar eje Y secundario en appdesigner

2 views (last 30 days)
Holas,
Tengo un problema con los colores de las lineas de un plot de varias funciones después de activar y posteriormente desactivar el eje secundario "yyaxis(app.UIAxes,"right");". Todas las lineas que se grafican son negras, incluso si se grafican varias variables al mismo tiempo. => ¿Cómo podría hacer para que las líneas se sigan mostrando con diferente colores, de tal manera que se puedan diferenciar? Una opcion seria que el tipo de linea se diferencie (esto se podria hacer), pero lo que estoy buscando es que todas las líneas sean continuas y que tengan distintos colores. Adjunto una de App de ejemplo donde se puede apreciar el problema.
CONTEXTO: Se trata de una app que he creado para el analisis en conjunto de datos de varios sistemas de medicion que trabajan al mismo tiempo. Esta app no solamente puede leer la data de estos sistemas (más de 60 variables), sino que tambien puede graficar estas variables en funcion del tiempo o incluso en funcion de otras variables como para determinar correlacion de las mismas. No obstante como las variables no siempre se encuentran en el mismo rango, he creado una funcion que al activarla me da la opcion de usar un eje secundario "Y2" con la variable cuyo nombre es escrito en un campo de texto.
EJEMPLO: Adjunto un ejemplo que muestra mas o menos la funcion de la app que he descrito y el problema en cuestion. Con el botón "LoadData" se cargan 4 Variables: x, Var1, Var2, Var3. En este ejemplo, en el "ListBox" llamado x, solamente x se puede seleccionar. En el "listBox" llamado y se pueden seleccionar las 4 variables individualmente o también al mismo tiempo. Como se puede ver, el rango de Var1 es muy distinto al rango de las otras 3 variables.
Si se seleccionan las 4 variables al mismo tiempo, las 4 líneas poseen un color distinto (deseado).
Cuando las 4 variables están presente al mismo tiempo en el Plot, es dificil distinguir las variables Vas2, Var3 & x. Dado que Var1 posee valores muchos mas grandes. Es por ello que se introduce un eje secundario para la variable Var1, que es la de mayores valores . Para ello se escribe "Var1" en el campo identificado con "Y2", y posteriormente se activa el botón "Y2". Todas las variables se muestran ahora de una manera óptima y se sigue teniendo un color para cada linea.
Ahora, continuando con el análisis de datos, es común que se seleccione otra variable en el list box de y, por ejemplo Var2, aqui se desactiva automáticamente el toggle boton que activa el eje secundario Y2 (lo mismo si se desactiva manualmente), sin embargo, el plot que se forma es unicamente con líneas negras, y si se seleccionan varias variables todas usaran una línea negra, dificultando la identificacion de las lineas.
¿Cómo podría hacer para reestablecer los colores de las líneas de los plots? ¿alguna msugerencia/idea?
De antemano muy agradecido!

Accepted Answer

Voss
Voss on 4 Mar 2024
From the "Tips" section of the yyaxis documentation:
"To clear the active side, use cla. To clear both sides of the axes and remove the right y-axis, use cla reset."
So when Y2 is being deactivated, you need to cla(app.UIAxes,"reset").
In fact, since every time you update what's in the axes, you clear the axes and plot all the lines again, you can use cla(app.UIAxes,"reset") everywhere.
cla(app.UIAxes,"reset") has the side-effect of resetting the axes 'ColorOrder', which is set to a single color when yyaxis is used, so that's why this should fix the all-black-line problem.
I'm attaching a modified version of your app with the change to using cla(_,"reset"). See if it works like you intended.

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!