Saltar al contenido

Representar los valores de los ejes como 10 elevado a la potencia de 1, 2, 3, etc … en Microsoft Excel

Este dilema se puede resolver de diferentes formas, pero nosotros te compartimos la resolución más completa para nosotros.

Solución:

Tendrá que hacer un poco de trabajo de formateo manual, ya que Excel no tiene el formato numérico que desea.

Puede hacer que el gráfico se vea así con un poco de trabajo:
diagrama de registro

1 – Formato de número personalizado

Haga clic con el botón derecho en los números de eje, seleccione “formato de eje”, vaya a la sección “número” e ingrese el siguiente formato personalizado:

"10^"#

Haga que sus ejes utilicen este formato personalizado.

Esto agregará el texto “10 ^” al frente de cualquier número mostrado.

2 – Registra tus datos

El formato personalizado de 1) asume que sus datos ya están registrados. Así que necesitamos registrar sus datos y graficarlos en su lugar. Encuentre el registro de cada punto de datos:

Data            
X   Y   Log10(X)    Log10(Y)
30  300 1.477121255 2.477121255
28  300 1.447158031 2.477121255
26  300 1.414973348 2.477121255
300 200 2.477121255 2.301029996
280 200 2.447158031 2.301029996
260 200 2.414973348 2.301029996

Haga que su gráfico de parcela tenga las dos columnas de la derecha.

3 – Arregle las líneas de registro

Los gráficos de registro de Excel asumen que las líneas de registro principales deben estar en 1, 10, 100, 1000, etc. Pero desea que sus líneas principales sean 1, 2, 3 porque ya ha registrado sus datos.

Así que necesitamos hacer nuestras propias líneas y formatearlas para que sean líneas grises delgadas.

Primero, elimine las líneas de cuadrícula del gráfico, ya que estamos haciendo las nuestras.

Luego agregue pares de puntos de datos que especifiquen el inicio y el final de cada línea cada 10, 100, 1000, etc., y luego registre los datos. Coloque espacios entre cada par de puntos para romper las líneas y también facilitar la visualización de lo que está sucediendo. Deberías conseguir una tabla como:

Lines           
X   Y   Log(X)  Log(Y)
10     10   1.0 1.0
10  100000  1.0 5.0

20     10   1.3 1.0
20  100000  1.3 5.0

30     10   1.5 1.0
30  100000  1.5 5.0

40     10   1.6 1.0
40  100000  1.6 5.0

50     10   1.7 1.0
50  100000  1.7 5.0

60     10   1.8 1.0
60  100000  1.8 5.0

70     10   1.8 1.0
70  100000  1.8 5.0

80     10   1.9 1.0
80  100000  1.9 5.0

90     10   2.0 1.0
90  100000  2.0 5.0

100    10   2.0 1.0
100 100000  2.0 5.0

200    10   2.3 1.0
200 100000  2.3 5.0

300    10   2.5 1.0
300 100000  2.5 5.0

400    10   2.6 1.0
400 100000  2.6 5.0

500    10   2.7 1.0
500 100000  2.7 5.0

600    10   2.8 1.0
600 100000  2.8 5.0

700    10   2.8 1.0
700 100000  2.8 5.0

800    10   2.9 1.0
800 100000  2.9 5.0

900    10   3.0 1.0
900 100000  3.0 5.0

1000       10   3.0 1.0
1000    100000  3.0 5.0

   10     100   1.0 2.0
10000     100   4.0 2.0

   10     200   1.0 2.3
10000     200   4.0 2.3

   10     300   1.0 2.5
10000     300   4.0 2.5

   10     400   1.0 2.6
10000     400   4.0 2.6

   10     500   1.0 2.7
10000     500   4.0 2.7

   10     600   1.0 2.8
10000     600   4.0 2.8

   10     700   1.0 2.8
10000     700   4.0 2.8

   10     800   1.0 2.9
10000     800   4.0 2.9

   10     900   1.0 3.0
10000     900   4.0 3.0

   10    1000   1.0 3.0
10000    1000   4.0 3.0

   10    2000   1.0 3.3
10000    2000   4.0 3.3

   10    3000   1.0 3.5
10000    3000   4.0 3.5

   10    4000   1.0 3.6
10000    4000   4.0 3.6

   10    5000   1.0 3.7
10000    5000   4.0 3.7

   10    6000   1.0 3.8
10000    6000   4.0 3.8

   10    7000   1.0 3.8
10000    7000   4.0 3.8

   10    8000   1.0 3.9
10000    8000   4.0 3.9

   10    9000   1.0 4.0
10000    9000   4.0 4.0

   10   10000   1.0 4.0
10000   10000   4.0 4.0

Agregue las columnas Log (x) y Log (y) como una serie de datos al gráfico, luego formatee la serie de datos para que no muestre puntos, sino líneas grises delgadas.

4 – Etiquetas de eje

  • Ya hemos registrado todo, así que cambie los ejes para no registrar los datos; no es necesario que lo registre dos veces.
  • Cambie la unidad principal a 1 para obtener etiquetas en cada ciclo de registro.
  • Elimine las marcas de graduación mayores y menores, ya que estarán en los lugares incorrectos.

Agregue etiquetas de datos, leyendas, etc., y listo.

Entonces, el enfoque es agregar series ficticias a lo largo de cada eje, en los lugares donde desea una etiqueta de eje. Oculte estos puntos y agregue etiquetas de datos, coloque 101, 102, etc. (para 10 ^ 1, 10 ^ 2, etc.) y formatee el exponente para que sea superíndice. Y esto es complicado de hacer a mano, porque es difícil seleccionar los exponentes y aplicar el formato, entre otras cosas difíciles.

Entonces escribí una pequeña rutina. Seleccione una gráfica de registro-registro con ejes en sus bordes izquierdo e inferior, y ejecute el código a continuación.

Sub NiceExponentialAxisLabels()
  Dim cht As Chart
  Dim iPt As Long, iLog As Long, iMin As Long, iMax As Long
  Dim vXVals As Variant, vYVals As Variant
  Dim dFont As Double

  Set cht = ActiveChart

  ' HORIZONTAL AXIS ------------------------------------
  cht.Axes(xlCategory).TickLabels.NumberFormat = ";;;" ' hide tick labels

  ' build arrays of X and Y values
  iMin = WorksheetFunction.Log10(cht.Axes(xlCategory).MinimumScale)
  iMax = WorksheetFunction.Log10(cht.Axes(xlCategory).MaximumScale)
  ReDim vXVals(1 To 1)
  ReDim vYVals(1 To 1)
  iPt = 0
  For iLog = iMin To iMax
    iPt = iPt + 1
    ReDim Preserve vXVals(1 To iPt)
    ReDim Preserve vYVals(1 To iPt)
    vXVals(iPt) = 10 ^ iLog
    vYVals(iPt) = cht.Axes(xlValue).MinimumScale
  Next

  ' add series, hide points, add and format labels
  With cht.SeriesCollection.NewSeries
    .Name = "horizontal"
    .XValues = vXVals
    .Values = vYVals
    .Format.Line.Visible = False
    .MarkerStyle = xlMarkerStyleNone
    .HasDataLabels = True
    .DataLabels.Position = xlLabelPositionBelow
    For iPt = 1 To .Points.Count
      With .DataLabels(iPt)
        dFont = .Font.Size
        .Text = 10 & WorksheetFunction.Log10(vXVals(iPt))
        With .Characters(3, Len(.Text) - 2)
          .Font.Superscript = True
          .Font.Size = dFont + 2
        End With
        With .Characters(1, 2)
          .Font.Size = dFont
        End With
      End With
    Next
  End With

  ' VERTICAL AXIS ------------------------------------
  cht.Axes(xlValue).TickLabels.NumberFormat = "_0_0_0_0_0_0_0" ' hide but maintain margin

  ' build arrays of X and Y values
  iMin = WorksheetFunction.Log10(cht.Axes(xlValue).MinimumScale)
  iMax = WorksheetFunction.Log10(cht.Axes(xlValue).MaximumScale)
  ReDim vXVals(1 To 1)
  ReDim vYVals(1 To 1)
  iPt = 0
  For iLog = iMin To iMax
    iPt = iPt + 1
    ReDim Preserve vXVals(1 To iPt)
    ReDim Preserve vYVals(1 To iPt)
    vXVals(iPt) = cht.Axes(xlCategory).MinimumScale
    vYVals(iPt) = 10 ^ iLog
  Next

  ' add series, hide points, add and format labels
  With cht.SeriesCollection.NewSeries
    .Name = "vertical"
    .XValues = vXVals
    .Values = vYVals
    .Format.Line.Visible = False
    .MarkerStyle = xlMarkerStyleNone
    .HasDataLabels = True
    .DataLabels.Position = xlLabelPositionLeft
    For iPt = 1 To .Points.Count
      With .DataLabels(iPt)
        dFont = .Font.Size
        .Text = 10 & WorksheetFunction.Log10(vYVals(iPt))
        With .Characters(3, Len(.Text) - 2)
          .Font.Superscript = True
          .Font.Size = dFont + 2
        End With
        With .Characters(1, 2)
          .Font.Size = dFont
        End With
      End With
    Next
  End With
End Sub

Nota: el código se puede copiar desde aquí y pegar en un módulo de código normal. Vea cómo: usar la macro de otra persona en mi blog si no lo ha hecho antes.

A continuación se muestran dos gráficos, el original y el que tiene las bonitas etiquetas exponenciales.

Buenas etiquetas de eje exponencial

Si guardas algún reparo o disposición de arreglar nuestro post eres capaz de dejar una apostilla y con deseo lo ojearemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *