У меня на руках следующая таблица:
Я хотел бы, чтобы он заменил те значения по осям X и Y, которые он в настоящее время имеет, на 10 в степени записи целых чисел. Я не хочу научных (экспоненциальных) обозначений. Заранее спасибо.
У меня на руках следующая таблица:
Я хотел бы, чтобы он заменил те значения по осям X и Y, которые он в настоящее время имеет, на 10 в степени записи целых чисел. Я не хочу научных (экспоненциальных) обозначений. Заранее спасибо.
Вам нужно будет сделать немало ручного форматирования, так как в Excel нет нужного вам числового формата.
Вы можете заставить график выглядеть так с небольшой работой:
1 - Пользовательский формат номера
Щелкните правой кнопкой мыши по номерам осей, выберите "форматировать ось", перейдите в раздел "число" и введите следующий пользовательский формат:
"10^"#
Заставьте свои оси использовать этот пользовательский формат.
Это добавит текст «10 ^» в начало любого отображаемого числа.
2 - Зарегистрируйте ваши данные
Пользовательский формат из 1) предполагает, что ваши данные уже зарегистрированы. Таким образом, мы должны записать ваши данные и отобразить их на графике. Найдите журнал каждой точки данных:
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
Сделайте свой график графика правильными двумя столбцами.
3 - исправить строки журнала
Графики журнала Excel предполагают, что основные строки журнала должны быть в 1, 10, 100, 1000 и т.д. Но вы хотите, чтобы ваши основные строки были в 1, 2, 3, потому что вы уже записали свои данные.
Поэтому нам нужно создать свои собственные линии и отформатировать их, чтобы они были тонкими серыми линиями.
Во-первых, удалите линии сетки из графика, так как мы создаем свои собственные.
Затем добавьте пары точек данных, определяющих начало и конец каждой строки каждые 10, 100, 1000 и т.д., А затем зарегистрируйте данные. Поместите пробелы между каждой парой точек, чтобы разбить линии, а также чтобы было легче увидеть, что происходит. Вы должны получить таблицу как:
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
Добавьте столбцы Log(x) и Log(y) в виде ряда данных на график, затем отформатируйте ряд данных, чтобы на нем не было точек, а были тонкие серые линии.
4 - метки оси
Добавьте любые метки данных, легенды и т.д., И все готово.
Таким образом, подход заключается в добавлении фиктивных рядов вдоль каждой оси в местах, где вы хотите метку оси. Скройте эти точки и добавьте метки данных, вставьте 101, 102 и т.д. (Для 10 ^ 1, 10 ^ 2 и т.д.) И отформатируйте показатель степени для надстрочного индекса. И это трудно сделать вручную, потому что трудно выбрать показатели и применить форматирование, среди других сложных вещей.
Поэтому я написал небольшую рутину. Выберите график регистрации журнала с осями на его левом и нижнем краях и запустите код ниже.
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
Примечание: код можно скопировать отсюда и вставить в обычный модуль кода. Посмотрите, Как: Использовать Макрос Чьего-то Остального в моем блоге, если вы еще этого не сделали.
Ниже представлены две диаграммы, оригинальная и та, что имеет красивые экспоненциальные метки.