Contenido principal

Control de interactividad de gráficas

Puede explorar y editar de forma interactiva datos representados gráficamente para mejorar la visualización de los datos o revelar información adicional acerca de los mismos. Las interacciones disponibles dependen del contenido de los ejes, pero incluyen normalmente acercar y alejar, desplazarse por los ejes, rotar los ejes, información de datos, resaltado de datos y restauración de la vista original.

Algunos tipos de interacciones están disponibles en la barra de herramientas de los ejes. La barra de herramientas está ubicada en la esquina superior derecha de los ejes y se expande cuando hace clic en el botón Expandir la barra de herramientas de los ejes .

Otros tipos de interacciones se encuentran integradas en los ejes y están disponibles mediante gestos, como arrastrar para desplazar o alejar o acercar con la rueda del ratón. Estas interacciones se controlan de forma independiente desde la barra de herramientas de los ejes.

Al crear una gráfica, podrá controlar el conjunto de interacciones disponibles de varias formas:

Expandir, contraer o eliminar la barra de herramientas de los ejes

Para expandir o contraer la barra de herramientas de los ejes, establezca la propiedad Expanded del objeto AxesToolbar en "on" u "off", respectivamente. (desde R2026a) Para eliminar la barra de herramientas, establezca el objeto AxesToolbar en []. Por ejemplo, expanda y, luego, elimine una barra de herramientas de los ejes.

f = figure;
ax = axes(f);
ax.Toolbar.Expanded = "on";
ax.Toolbar = [];

Personalizar la barra de herramientas de los ejes

Puede personalizar las opciones disponibles de la barra de herramientas de los ejes mediante las funciones axtoolbar y axtoolbarbtn.

Por ejemplo, puede añadir un botón de estado personalizado a la barra de herramientas de los ejes que active y desactive la visibilidad de las líneas de la cuadrícula de los ejes.

Cree primero un archivo de programa llamado mycustomstatebutton.m. En el archivo de programa:

  • Represente datos aleatorios.

  • Cree una barra de herramientas para los ejes con opciones para acercar y alejar, y restablecer la vista utilizando la función axtoolbar.

  • Añada un botón de estado vacío a la barra de tareas mediante la función axtoolbarbtn. Devuelva el objeto ToolbarStateButton.

  • Especifique el icono, el recuadro de información y la función de callback para el botón de estado estableciendo las propiedades Icon, Tooltip y ValueChangedFcn. Este ejemplo utiliza el icono , que debe guardar primero como un archivo de imagen llamado mygridicon.svg en la ruta.

Ejecute el archivo de programa y haga clic en el icono para activar y desactivar la visibilidad de las líneas de la cuadrícula.

function mycustomstatebutton

plot(rand(5))
ax = gca;
tb = axtoolbar(ax,{"zoom","restoreview"});

btn = axtoolbarbtn(tb,"state");
btn.Icon = "mygridicon.svg";
btn.Tooltip = "Grid Lines";
btn.ValueChangedFcn = @customcallback;

    function customcallback(src,event)
        switch src.Value
            case "off"
                event.Axes.XGrid = "off";
                event.Axes.YGrid = "off";
            case "on"
                event.Axes.XGrid = "on";
                event.Axes.YGrid = "on";
        end
    end

end

2-D plot with grid-state, zoom, and restore view buttons in the axes toolbar

Activar o desactivar interacciones integradas

Para controlar si un conjunto de interacciones integradas se encuentra activado en una gráfica, emplee las funciones disableDefaultInteractivity y enableDefaultInteractivity. En algunas ocasiones, MATLAB® desactiva automáticamente las interacciones integradas. Por ejemplo, es posible que estén desactivados para gráficas con características especiales o cuando implementa determinados callbacks como WindowScrollWheelFcn.

Personalizar las interacciones integradas

La mayoría de tipos de ejes incluye un conjunto predeterminado de interacciones integradas que se corresponden con gestos específicos. Las interacciones disponibles dependen del contenido de los ejes. La mayoría de los ejes incluyen interacciones para acercar y alejar con la rueda del ratón, colocar el cursor encima o hacer clic para mostrar información de datos, y arrastrar para desplazar (en una vista 2D) o rotar (en una vista 3D). Puede sustituir el conjunto especificado con un nuevo conjunto de interacciones pero no puede acceder o modificar ninguna de las interacciones del conjunto predeterminado.

Para sustituir las interacciones especificadas, establezca la propiedad Interactions de los ejes a un arreglo de objetos de interacción. Seleccione una combinación de objetos de interacción compatible de la siguiente tabla. Para eliminar todas las interacciones de los ejes, establezca la propiedad en un arreglo vacío ([]).

Objeto de interacciónDescripciónInteracciones compatibles
panInteractionDesplazarse en una gráfica arrastrando.Todas salvo regionZoomInteraction y rotateInteraction
rulerPanInteractionDesplazar un eje arrastrándolo.Todas
zoomInteractionAcercar o alejar con la rueda del ratón o pellizcando.Todas
regionZoomInteractionAcercar o alejar una región rectangular arrastrando.
(Solo para gráficas 2D cartesianas)
Todas salvo panInteraction y rotateInteraction
rotateInteractionRotar una gráfica arrastrándola.Todas salvo panInteraction y regionZoomInteraction
dataTipInteractionMostrar información de datos al colocar el cursor encima, hacer clic o pulsar.Todas

Por ejemplo, crear una gráfica que contenga 1.000 puntos dispersos. Expanda la barra de herramientas de los ejes para ver las interacciones disponibles.

x = 1:500;
y = randn(1,500);
y2 = 5*randn(1,500) + 10;
plot(x,y,".",x,y2,".");
ax = gca;
ax.Toolbar.Expanded = "on";

Scatter plot displaying two sets of data using two colors. The axes toolbar is visible at the top-right corner of the plot.

De manera predeterminada, esta gráfica consta de un conjunto de interacciones que incluye arrastrar para desplazarse en la zona de la gráfica. Sin embargo, debido a que la gráfica tiene una recopilación de puntos densa, un conjunto más correcto de interacciones incluiría una que le permita acercar en regiones específicas de la gráfica. El objeto regionZoomInteraction permite esta función. Sustituya el conjunto de interacciones establecido para los ejes actuales con un arreglo que incluya el objeto regionZoomInteraction.

ax.Interactions = [zoomInteraction, regionZoomInteraction, rulerPanInteraction];

Ahora, al arrastrar en la zona de la gráfica se define una región de interés rectangular para acercar.

The same scatter plot with a rectangle surrounding some points

Personalizar el comportamiento de interacción

Puede personalizar el comportamiento de determinados aspectos de las interacciones de los ejes. Personalice interacciones de los ejes cambiando los valores de las propiedades del objeto CartesianAxesInteractionOptions asociado a la propiedad InteractionOptions de los ejes.

Por ejemplo, personalice las interacciones de los ejes en una figura. Modifique las interacciones admitidas para los ejes. Especifique la propiedad PanSupported como "off" para que los ejes no admitan la interacción de desplazamiento.

f = figure;
ax = axes(f);
plot(ax,magic(4))
ax.InteractionOptions.PanSupported = "off";
ax.Toolbar.Expanded = "on";

La barra de herramientas de los ejes ya no incluye el botón de desplazamiento, y hacer clic y arrastrar la gráfica no desplaza la vista de los ejes.

Plot with axes toolbar showing all the default buttons excluding the Pan button

Después, restrinja la interacción de zoom solo a la dimensión x.

ax.InteractionOptions.LimitsDimensions = "x";

Ahora, todas las interacciones de zoom asociadas a la propiedad LimitsDimensions están restringidas a la dimensión x. Por ejemplo, active el modo de zoom para los ejes.

zoom(ax,"on")
Después, arrastre, use la rueda del ratón o haga clic dentro de la gráfica para acercar y alejar. La propiedad LimitsDimensions de CartesianAxesInteractionOptions restringe el zoom a la dimensión x.

Selection range along x-axis for zooming

Después de acercar o alejar los ejes, establezca la vista de los ejes. Antes de restablecer la vista, consulte los límites predeterminados del eje x para restablecer la vista.

restoreX = ax.InteractionOptions.RestoredXLimits
restoreX =

     1     4

Personalice los límites de restauración del eje x.

ax.InteractionOptions.RestoredXLimits = [2 3];

Después, haga clic en el botón Restore View en la barra de herramientas de los ejes. Los límites del eje x son [2 3].

Plot with x-axis limits [2 3]

Consulte también

Funciones

Propiedades

Temas