Mostrando entradas con la etiqueta Gráficos Excel. Mostrar todas las entradas
Mostrando entradas con la etiqueta Gráficos Excel. Mostrar todas las entradas

2015-06-03

Ejes con escalas proporcionales en gráficos de Excel

Problema

Cuando creamos un gráfico, Excel no respeta el mismo ratio para el eje de abscisas y de ordenadas. Por ello si dibujamos las líneas de división se genera una cuadrículas rectangular.

Solución

Para crear una cuadrícula y que conserve el mismo ratio empleamos el siguiente código escrito por Jon Peltier.

  1. Copiamos el siguiente código en un módulo
  2. Option Explicit
    
    Sub MakePlotGridSquareOfActiveChart()
        MakePlotGridSquare ActiveChart
    End Sub
    
    Sub MakePlotGridSquareOfAllCharts()
        Dim myChartObject As ChartObject
        For Each myChartObject In ActiveSheet.ChartObjects
            MakePlotGridSquare myChartObject.Chart
        Next
    End Sub
    
    Sub MakePlotGridSquare(myChart As Chart, Optional bEquiTic As Boolean = False)
        
        Dim plotInHt As Integer, plotInWd As Integer
        Dim Ymax As Double, Ymin As Double, Ydel As Double
        Dim Xmax As Double, Xmin As Double, Xdel As Double
        Dim Ypix As Double, Xpix As Double
    
        With myChart
            ' get plot size
            With .PlotArea
                plotInHt = .InsideHeight
                plotInWd = .InsideWidth
            End With
            
            Do
                ' Get axis scale parameters and lock scales
                With .Axes(xlValue)
                    Ymax = .MaximumScale
                    Ymin = .MinimumScale
                    Ydel = .MajorUnit
                    .MaximumScaleIsAuto = False
                    .MinimumScaleIsAuto = False
                    .MajorUnitIsAuto = False
                End With
                With .Axes(xlCategory)
                    Xmax = .MaximumScale
                    Xmin = .MinimumScale
                    Xdel = .MajorUnit
                    .MaximumScaleIsAuto = False
                    .MinimumScaleIsAuto = False
                    .MajorUnitIsAuto = False
                End With
                If bEquiTic Then
                    ' Set tick spacings to same value
                    Xdel = WorksheetFunction.Max(Xdel, Ydel)
                    Ydel = Xdel
                    .Axes(xlCategory).MajorUnit = Xdel
                    .Axes(xlValue).MajorUnit = Ydel
                End If
            
                ' Pixels per grid
                Ypix = plotInHt * Ydel / (Ymax - Ymin)
                Xpix = plotInWd * Xdel / (Xmax - Xmin)
                
                ' Keep plot size as is, adjust max scales
                If Xpix > Ypix Then
                    .Axes(xlCategory).MaximumScale = plotInWd * Xdel / Ypix + Xmin
                Else
                    .Axes(xlValue).MaximumScale = plotInHt * Ydel / Xpix + Ymin
                End If
                
                ' Repeat if "something" else changed to distort chart axes
                ' Don't repeat if we're within 1%
            Loop While Abs(Log(Xpix / Ypix)) > 0.01
            
        End With
    
    End Sub
    
    

  3. Presionamos ALt+F8 y nos aparecerán dos opciones:
  4. MakePlotGridSquareOfActiveChart: Modificará el gráfico activo.
    MakePlotGridSquareOfAllCharts: Modificará todos los gráficos de la hoja.

Referencias

2015-06-01

Gráfico de líneas verticales en Excel

Title

Problema

En Excel, deseamos crear el siguiente gráfico de líneas verticales:

Solución

Como Excel solamente permite la orientación horizontal de este tipo de gráficos, lo giramos 90º con la Cámara.

  1. Creamos el gráfico de línea horizontal
  2. Alineamos el texto de los dos ejes 270º.
  3. Seleccionamos el rango de celdas que comprende el gráfico
  4. Clic en el icono de la Cámara
  5. Clic en el área de la hoja donde deseamos insertar el gráfico y lo giramos 90º.
Nube de datos