Microsoft Excel에서 축 값을 1, 2, 3 등의 거듭 제곱에 10으로 표시


3

내 손에 다음 차트가 있습니다.

차트

현재 가지고있는 X 및 Y 축 값을 정수 표기법의 10으로 대체하고 싶습니다. 나는 과학적 (지수) 표기법을 원하지 않습니다. 미리 감사드립니다.

답변:


5

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-축 레이블

  • 우리는 이미 모든 것을 기록 했으므로 축을 변경하여 데이터를 기록하지 마십시오. 두 번 기록 할 필요는 없습니다.
  • 로그주기마다 레이블을 얻으려면 주 단위를 1로 변경하십시오.
  • 잘못된 위치에있을 수 있으므로 Major 및 minor tick mark를 제거하십시오.

데이터 레이블, 범례 등을 추가하면 완료됩니다.


감사합니다. 나는 결국 모든 것을 포기하고 MATLAB을 사용했습니다. Excel은 화려하고 멋진 그래프를 만들 수 있지만 때로는 약간의 간단한 조정이 어려울 수 있습니다.
Omar Metwally

2

따라서 접근 방법은 축 레이블을 원하는 위치에 각 축을 따라 더미 시리즈를 추가하는 것입니다. 이 점들을 숨기고 데이터 레이블을 추가하고 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

참고 : 여기에서 코드를 복사하여 일반 코드 모듈에 붙여 넣을 수 있습니다. 이 작업을 수행하지 않은 경우 방법 : 내 블로그에서 다른 사람의 매크로 사용을 참조하십시오 .

아래는 두 개의 차트, 원본과 멋진 지수 레이블이있는 차트입니다.

멋진 지수 축 레이블

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.