Construiremos hoy un gráfico de dispersión sobre dos series de datos (Renta per capita y Consumo energético) sobre una lista de paises, con la peculiaridad de que, mediante una sencilla macro, agregaremos a cada punto del gráfico la etiqueta del nombre del país correspondiente. En respuesta a la cuestión planteada por un lector:
Empezaremos viendo los datos de que partimos (datos aleatorios, no reales!):
El primer paso es construir el gráfico de dispersión (gráfico XY) sobre los rangos D2:D12 y G2:G12:
que tras insertar este tipo de gráfico obtenemos:
Por mucho que intentemos agregar etiquetas, desde Herramientas de gráficos > Presentación > grupo Etiquetas > botón Etiqueta de datos nunca conseguiríamos incorporar los nombres de los países correspondientes. Esto sólo sería posible mediante una sencilla macro como la siguiente.
Para ello, insertamos el siguiente código VBA en un módulo del Explorador de proyectos VBA:
El resultado tras ejecutar la macro de Excel 'AgregarEtiqueta' sería:
Por supuesto, podemos seguir dando el formato deseado a nuestro gráfico...
...realizar un grafico en el que se correlacione la evolución del consumo de energía (eje de ordenadas Y) con la evolución de la renta per cápita (eje de abscisas X), añadiendo las etiquetas de cada País en el punto correspondiente... |
Empezaremos viendo los datos de que partimos (datos aleatorios, no reales!):
El primer paso es construir el gráfico de dispersión (gráfico XY) sobre los rangos D2:D12 y G2:G12:
que tras insertar este tipo de gráfico obtenemos:
Por mucho que intentemos agregar etiquetas, desde Herramientas de gráficos > Presentación > grupo Etiquetas > botón Etiqueta de datos nunca conseguiríamos incorporar los nombres de los países correspondientes. Esto sólo sería posible mediante una sencilla macro como la siguiente.
Para ello, insertamos el siguiente código VBA en un módulo del Explorador de proyectos VBA:
Sub AgregarEtiqueta() Dim texto As String 'Activamos nuestro gráfico, sobre el que añadiremos las etiquetas personalizadas ActiveSheet.ChartObjects("1 Gráfico").Activate 'contamos el número de puntos existentes en la serie de dispersión XY puntos = ActiveChart.SeriesCollection(1).Points.Count Application.ScreenUpdating = False 'agregamos etiquetaas de datos ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowLabel 'pasamos por todos los puntos de la serie con el bucle FOR...NEXT For i = 1 To puntos texto = Cells(i + 2, 1) 'definimos el texto y valor a incluir en la etiqueta ActiveChart.SeriesCollection(1).Points(i).DataLabel.Text = texto Next i Application.ScreenUpdating = True End Sub
El resultado tras ejecutar la macro de Excel 'AgregarEtiqueta' sería:
Por supuesto, podemos seguir dando el formato deseado a nuestro gráfico...
No compila esta línea:
ResponderEliminarActiveSheet.ChartObjects("1 Gráfico").Activate
No sé si el nombre por defecto de mi gráfico sea otro.
Hola que tal, un placer saludarte...
EliminarEs muy probable que el fallo sea el que comentas, el nombre del gráfico.
Puedes Renombrar el objeto desde la hoja de calculo, y luego emplear ese nombre en el código.
Saludos
Hola! Cómo estás? Te escribo para consultarte si tenés algún código que permita hacer lo mismo que hace esta pero agregar más de una serie.
ResponderEliminarNecesito graficar dos variables, las etiquetas son los años, pero necesito comparar esto por región geográfica- Y de macros yo no se nada.
Muchas gracias. Saludos,
Hola,
Eliminarquizá no te haga falta programación, y algo más simple como generar un gráfico dinámico te sirva...
Crea tu TD llevando los años al área de filas y las dos variables al área de valores...
Espero haberte entendido bien
Slds
Graciaaaaaaas, siempre quise hacerlo y no sabía cómo
ResponderEliminar;-)
EliminarHola buenas tardes, yo quisiera poner una linea de división (Imagen) entre dos rangos, al modificar la gráfica a través de la segmentación de datos, el gráfico cambia de tamaño y la imagen deja de coincidir con el valor del eje, se puede hacer que el valor del eje coincida con la imagen?
ResponderEliminarHola
Eliminardiscúlpame, pero no entiendo el contexto de la pregunta¿¿??
¿la imagen (linea de división) está fuera del gráfico?
Quedo atento