Tengo el siguiente cuadro en mis manos:
Me gustaría que sustituyera los valores de los ejes X e Y que tiene actualmente por la notación de 10 a la potencia de un número entero. No quiero la notación científica (exponencial). Gracias de antemano.
Tendrás que hacer un buen trabajo de formateo manual, ya que Excel no tiene el formato de número que quieres.
Puedes conseguir que el gráfico tenga este aspecto con un poco de trabajo:
1 - Formato de número personalizado
Haga clic con el botón derecho del ratón en los números del eje, seleccione "formatear eje", vaya a la sección "número" e introduzca el siguiente formato personalizado:
"10^"#
Haz que tus ejes utilicen este formato personalizado.
Esto añadirá el texto "10^" al frente de cualquier número mostrado.
2 - Registre sus datos
El formato personalizado de 1) supone que sus datos ya están registrados. Así que tenemos que registrar sus datos, y el gráfico que en su lugar. Encuentra 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
Haz el gráfico de las dos columnas de la derecha.
3 - Arreglar las líneas de registro
Los gráficos de registro de Excel asumen que las principales líneas de registro deben estar en 1, 10, 100, 1000, etc. Pero usted quiere sus líneas principales en 1, 2, 3 porque ya ha registrado sus datos.
Así que tenemos que crear nuestras propias líneas, y darles formato para que sean líneas grises finas.
En primer lugar, elimine las líneas de cuadrícula de la parcela, ya que estamos haciendo la nuestra.
A continuación, añade pares de puntos de datos especificando el inicio y el final de cada línea cada 10, 100, 1000, etc., y luego registra los datos. Pon espacios entre cada par de puntos para romper las líneas y también para que sea más fácil ver lo que está pasando. Deberías obtener 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
Añada 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 los ejes
Añade las etiquetas de los datos, la leyenda, etc., y ya está.
Así que el enfoque es añadir series ficticias a lo largo de cada eje, en los lugares en los que desea una etiqueta de eje. Ocultar estos puntos, y añadir etiquetas de datos, poner 101, 102, etc (para 10^1, 10^2, etc), y formatear el exponente para que esté en superíndice. Y esto es un dolor para hacer a mano, porque es difícil seleccionar los exponentes y aplicar el formato, entre otras cosas difíciles.
Así que escribí una pequeña rutina. Seleccione un gráfico log-log con ejes en sus bordes izquierdo e inferior, y ejecute el código siguiente.
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 puede copiarse desde aquí y pegarse en un módulo de código normal. Véase Cómo: utilizar la macro de otra persona en mi blog si no lo has hecho antes.
A continuación hay dos gráficos, el original y el que tiene las bonitas etiquetas exponenciales.
Respuesta bien expuesta, introducción, código, enlace al "Cómo" e imágenes de los resultados. El superíndice del exponente hace que esto parezca realmente profesional. Bueno todo redondo +1 habría sido +2, pero no es posible. Iv'e copiado el código en mi "Big Modules de macros (para mi propio uso solamente, pero mantengo un enlace de vuelta aquí de todos modos.)
Esta es una respuesta bastante buena. Hace series ficticias, las etiqueta y pone las etiquetas donde irían las etiquetas de los ejes. Se ve mejor que la respuesta aceptada, pero tiene algunos problemas con la edición del gráfico después, especialmente el cambio de la extensión del eje Y. Nada que no se pueda arreglar con un poco más de edición.
EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.