Este artículo mostrará lo fácil que es crear un gráfico de dispersión con su área de trazado dividida horizontal y verticalmente en cuatro regiones. Las regiones están separadas por los ejes de la carta, y estos ejes se pueden colocar donde sea necesario para demarcar los cuadrantes.
He escrito un tutorial que muestra cómo crear un gráfico de Excel Con Fondo de Cuadrante de Color, que era más complicado, ya que usaba áreas apiladas y ejes secundarios para obtener el fondo de color. Esto es mucho más sencillo de crear y mantener, y sirve para el mismo propósito.
Aquí están los datos de muestra X e Y, con promedios calculados, y el gráfico de dispersión XY inicial. Colocaremos los ejes en los promedios respectivos de los datos X e Y, aunque puede colocarlos donde sea que tenga sentido en su análisis.
Necesitamos reposicionar los ejes de este gráfico. Haga doble clic en el eje horizontal o seleccione el eje horizontal y presione Ctrl + 1 (número uno) para abrir el panel de tareas Formato de eje (que se muestra aquí, Excel 2013) o el diálogo Formato de eje (funciona de la misma manera en versiones anteriores de Excel). En Opciones de eje > Cruces de ejes verticales, seleccione la opción Valor del eje e ingrese el promedio de X en el cuadro, como se muestra.
El resultado se muestra a la izquierda. Repita para el eje vertical, abajo a la derecha.
Esas etiquetas de eje están totalmente en el camino, pero es fácil moverlas. Formatee cada eje (abra el panel de tareas o el cuadro de diálogo anterior) y, en Etiquetas > Posición de la etiqueta, seleccione Baja en el menú desplegable.
Ahora esas etiquetas están a lo largo de los bordes del gráfico, donde hacen más bien que mal (abajo a la izquierda). Puede hacer una pequeña cantidad de formato para que los cuadrantes sobresalgan un poco más claramente. En el gráfico de abajo a la derecha, he utilizado un tono de gris más claro para las líneas de cuadrícula, y he utilizado un color más oscuro, de hecho, el mismo color que los marcadores, para el color de la línea del eje.
Es fácil usar VBA para posicionar los ejes y las etiquetas de los ejes, utilizando una rutina simple como la que se muestra a continuación. Esta rutina posiciona las etiquetas y, a continuación, utiliza los promedios calculados en la hoja de trabajo para posicionar las líneas del eje.
Sub AxesAsQuadBoundaries1() With ActiveChart With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = ActiveSheet.Range("A17").Value2 End With With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = ActiveSheet.Range("B17").Value2 End With End WithEnd Sub
La siguiente rutina omite los cálculos de la hoja de trabajo, en lugar de tomar los promedios de los valores X e Y trazados en el gráfico para posicionar las líneas del eje.
Sub AxesAsQuadBoundaries2() Dim vData As Variant With ActiveChart vData = .SeriesCollection(1).XValues With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With vData = .SeriesCollection(1).Values With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With End WithEnd Sub
Incluso puede usar eventos de hoja de trabajo para reposicionar los ejes del gráfico. Mis valores X e Y se calcularon usando =RANDBETWEEN(2,14)
, por lo que cada vez que la hoja de trabajo calcula (por ejemplo, presionando la tecla de función F9), los valores cambian. Puedo aprovechar este evento de cálculo de la siguiente manera.
- Haga clic con el botón derecho en la pestaña de la hoja de trabajo y seleccione Ver código en el menú emergente. El Editor de VB se abre con un módulo de código correspondiente a la hoja de trabajo.
- Seleccione Hoja de trabajo en el menú desplegable de la izquierda en la parte superior del nuevo módulo de código.
- Selecciona Calcular en el menú desplegable de la derecha.
- Ingrese el código como se muestra.
Aquí está el código para que no tenga que escribirlo todo usted mismo. Simplemente copie y pegue en el módulo de código de la hoja de trabajo.
Private Sub Worksheet_Calculate() Dim vData As Variant With Me.ChartObjects(1).Chart vData = .SeriesCollection(1).XValues With .Axes(xlCategory) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With vData = .SeriesCollection(1).Values With .Axes(xlValue) .TickLabelPosition = xlTickLabelPositionLow .CrossesAt = WorksheetFunction.Average(vData) End With End WithEnd Sub
Dependiendo de los detalles de su modelo de hoja de trabajo, puede usar Worksheet_Calculate
, Worksheet_Change
, Worksheet_PivotTableUpdate
, u otros procedimientos de eventos para actualizar el gráfico.