이계가 사용해도 그렇게 화가 나지 않는 그래프를 Excel에서 그 3

10908 단어 그래프ExcelVBA
(Excel For Mac 2011에서 확인 중입니다. 쓰기가 오래된 경우가 있습니다.)
이 기사는 「이계를 사용해도 그렇게 화가 나지 않는 그래프를 Excel에서 」의 제3탄입니다.
문장의 매크로는 모두 「산포도가 선택 상태인 것」을 전제로 쓰고 있습니다.
자세한 사용법은 첫 번째 기사를 참조하십시오.

전회는 축의 이름등의 파트의 설치, 폰트의 설정, 마커의 설정을 했습니다.
그런데 마지막 기사에서 나는 왜 글꼴을 더하여 Century로 만들었을 것이다. 좋은 아이는 흉내내지 마십시오.

그런데, 이번에는 스케일이나 특수한 축의 설정을 하고 싶습니다.

1 눈금 설정



전회까지의 프로그램에서는 특별히 설명하지 않고 눈금 없이 하고 있었습니다.

눈금은 외측(xlTickMarkOutside), 안쪽(xlTickMarkInside), 십자(xlTickMarkCross), 없음(xlTickMarkNone)의 4개를 선택할 수 있습니다.

.Axes(xlCategory).MajorTickMark = xlTickMarkOutside ' 横軸
.Axes(xlValue).MajorTickMark = xlTickMarkOutside ' 縦軸

두께와 색상
' 横軸 線の太さと色
.Axes(xlCategory).Format.Line.Weight = 2
.Axes(xlCategory).Format.Line.ForeColor.RGB = RGB(0, 0, 0)

' 縦軸 線の太さと色
.Axes(xlValue).Format.Line.Weight = 2
.Axes(xlValue).Format.Line.ForeColor.RGB = RGB(0, 0, 0)

축의 선 속성이 눈금에도 적용되는 것 같습니다.

2 내부 프레임 설정



테두리도 유무를 선택할 수 있습니다만, 가지고 있을 때는 축의 선과 같은 설정으로 해 두면 트러블이 적은 생각이 듭니다. 별도로 설정하면 테두리와 축이 겹칠 때 예기치 않은 디자인이 될 수 있습니다.
.PlotArea.Format.Line.Style = msoLineSingle
.PlotArea.Format.Line.Visible = True
.PlotArea.Format.Line.Weight = 2
.PlotArea.Format.Line.ForeColor.RGB = RGB(0, 0, 0)

여러가지 시도했지만, 1행째로 Style을 설정하고 나서, 2행째로 Visible의 진위를 쓰는 것이 좋은 것 같습니다. 왜냐하면, 이 1행째가 없으면, 테두리가 존재하지 않는 경우에 명령이 무시되기 때문입니다.

3 스케일 설치



스케일은 축을 따라(NextToAxis), 상부(High), 하부(Low), 없음(None)을 선택할 수 있습니다.
.Axes(xlCategory).TickLabelPosition = xlTickLabelPositionNextToAxis
.Axes(xlValue).TickLabelPosition = xlTickLabelPositionNextToAxis

상단은 이런 것입니다.


축을 따라 하단은 무엇이 다른가 하면 이런 때에 달라집니다.
・하부


・축을 따라


스케일과 축의 거리도 조절할 수 있습니다. 0~1000%를 설정할 수 있는 것 같습니다.
.Axes(xlCategory).TickLabels.Offset = 100 ' 横軸
.Axes(xlValue).TickLabels.Offset = 100 ' 縦軸

문자를 회전시킬 수도 있습니다. -90~90도를 설정할 수 있는 것 같습니다.
.Axes(xlCategory).TickLabels.Orientation = 0 ' 横軸
.Axes(xlValue).TickLabels.Orientation = 0 ' 縦軸

4 스케일 수치 설정



최대값, 최소값, 각도 폭을 변경할 수 있습니다.
' 横軸
.Axes(xlCategory).MinimumScale = 0 ' 最小値
.Axes(xlCategory).MaximumScale = 8.1 ' 最大値
.Axes(xlCategory).MajorUnit = 2  ' 刻み
' 縦軸
.Axes(xlValue).MinimumScale = 0 ' 最小値
.Axes(xlValue).MaximumScale = 51 ' 最大値
.Axes(xlValue).MajorUnit = 10  ' 刻み

소수점 이하의 표시 자리수를 지정할 수 있습니다.
    .Axes(xlCategory).TickLabels.NumberFormat = "0.0" ' 横軸
    .Axes(xlValue).TickLabels.NumberFormat = "0.00" ' 縦軸

5축 설정 변경



교차점을 지정할 수 있습니다.
.Axes(xlCategory).CrossesAt = 0 ' 横軸の交点
.Axes(xlValue).CrossesAt = 0 ' 縦軸の交点

반전 축. 숫자가 내림차순입니다.
.Axes(xlCategory).ReversePlotOrder = True ' 横軸
.Axes(xlValue).ReversePlotOrder = True ' 縦軸

로그 그래프일 수 있습니다.
.Axes(xlCategory).ScaleType = xlScaleLogarithmic ' 横軸
.Axes(xlCategory).LogBase = 10 ' 対数の底 横軸
.Axes(xlValue).ScaleType = xlScaleLogarithmic ' 縦軸
.Axes(xlValue).LogBase = 10 ' 対数の底 縦軸

선형 그래프로 되돌릴 때
.Axes(xlCategory).ScaleType = xlScaleLinear ' 横軸
.Axes(xlValue).ScaleType = xlScaleLinear ' 縦軸

기본값은 선형 축이므로 명시적으로 작성하는 것은 적을 수 있습니다.

6 완료



여러가지 정리한 매크로가 이쪽. 소개한 기능 이외에도, 자연스럽게 마이너 체인지했습니다.
Sub SimpleGraph3()
' 散布図を作成し、選択した状態で実行してください。
' 動作確認環境:Excel fo Mac 2011 散布図>散布図(オプションなし)

With ActiveChart

    ' 外枠と内枠の位置です
    .ChartArea.Height = 480
    .ChartArea.Width = 480
    .PlotArea.Height = 380
    .PlotArea.Width = 380
    .PlotArea.Top = 50
    .PlotArea.Left = 50

    ' 背景色です
    .ChartArea.Format.Fill.ForeColor.RGB = RGB(255, 255, 255)
    .PlotArea.Format.Fill.ForeColor.RGB = RGB(255, 255, 255)

    ' 枠線
    .PlotArea.Format.Line.Style = msoLineSingle
    .PlotArea.Format.Line.Visible = True' Falseで線なしになります
    .PlotArea.Format.Line.Weight = 2
    .PlotArea.Format.Line.ForeColor.RGB = RGB(0, 0, 0)

    ' 目盛線(グリッド)
    .Axes(xlCategory).HasMajorGridlines = False
    .Axes(xlValue).HasMajorGridlines = False

    ' 目盛り xlTickMark*** : 末尾はInside, Outside, Cross, None
    .Axes(xlCategory).MajorTickMark = xlTickMarkOutside ' 横軸
    .Axes(xlValue).MajorTickMark = xlTickMarkOutside ' 縦軸

    ' 横軸 線の太さと色
    .Axes(xlCategory).Format.Line.Weight = 2
    .Axes(xlCategory).Format.Line.ForeColor.RGB = RGB(0, 0, 0)

    ' 縦軸 線の太さと色
    .Axes(xlValue).Format.Line.Weight = 2
    .Axes(xlValue).Format.Line.ForeColor.RGB = RGB(0, 0, 0)

' ----- 横軸のスケール -----'
    ' 種類 xlTickLabelPosition*** : 末尾はNextToAxis, High, Low, None
    .Axes(xlCategory).TickLabelPosition = xlTickLabelPositionLow

    .Axes(xlCategory).TickLabels.Offset = 100 ' 軸からの距離 0~1000 [%]
    .Axes(xlCategory).TickLabels.Orientation = 0 ' スケールの向き -90~90 [degree]

    .Axes(xlCategory).MinimumScale = 0 ' 最小値
    .Axes(xlCategory).MaximumScale = 8.1 ' 最大値
    .Axes(xlCategory).MajorUnit = 2  ' 刻み
    .Axes(xlCategory).TickLabels.NumberFormat = "0" ' 数値の表示形式  少数点以下の桁数を指定できます。

' ----- 縦軸のスケール -----'
    ' 種類 xlTickLabelPosition*** : 末尾はNextToAxis, High, Low, None
    .Axes(xlValue).TickLabelPosition = xlTickLabelPositionLow

    .Axes(xlValue).TickLabels.Offset = 100 ' 軸からの距離 0~1000 [%]
    .Axes(xlValue).TickLabels.Orientation = 0 ' スケールの向き -90~90 [degree]

    .Axes(xlValue).MinimumScale = 0 ' 最小値
    .Axes(xlValue).MaximumScale = 51 ' 最大値
    .Axes(xlValue).MajorUnit = 10  ' 刻み
    .Axes(xlValue).TickLabels.NumberFormat = "0" ' 数値の表示形式 少数点以下の桁数を指定できます。

' ----- 軸の交点 ----- '
    .Axes(xlCategory).CrossesAt = 0 ' 横軸の交点
    .Axes(xlValue).CrossesAt = 0 ' 縦軸の交点

' ----- 軸の反転 ----- '
    .Axes(xlCategory).ReversePlotOrder = False ' 横軸
    .Axes(xlValue).ReversePlotOrder = False ' 縦軸

' ----- 対数軸 ----- '
' 対数にするときは以下4行を使ってください
'    .Axes(xlCategory).ScaleType = xlScaleLogarithmic ' 横軸
'    .Axes(xlValue).ScaleType = xlScaleLogarithmic ' 縦軸
'    .Axes(xlCategory).LogBase = 10 ' 対数の底 横軸
'    .Axes(xlValue).LogBase = 10 ' 対数の底 縦軸
' 線形に戻したいときは以下2行を使ってください
'    .Axes(xlCategory).ScaleType = xlScaleLinear ' 横軸
'    .Axes(xlValue).ScaleType = xlScaleLinear ' 縦軸
' ----- ----- ----- ----- '


' ----- タイトル ----- '
    .HasTitle = True
    .ChartTitle.Text = "Title"
    .ChartTitle.Top = 450
    .ChartTitle.Left = 270

' ----- 横軸の名前 -----'
    .Axes(xlCategory).HasTitle = True
    .Axes(xlCategory).AxisTitle.Text = "yokojiku [mm]"
    .Axes(xlCategory).AxisTitle.Top = 430
    .Axes(xlCategory).AxisTitle.Left = 200

' ----- 縦軸の名前 -----'
    .Axes(xlValue).HasTitle = True
    .Axes(xlValue).AxisTitle.Text = "tatejiku [mm^2]"
    .Axes(xlValue).AxisTitle.Top = 160
    .Axes(xlValue).AxisTitle.Left = 20

' ----- 凡例 ----- '
    .HasLegend = True
    .SeriesCollection(1).Name = "Sub.1"  ' 系列が複数あるときはコピペして(2), (3), (4)...を作ってください
    .Legend.Top = 150
    .Legend.Left = 450

' ----- フォントとフォントサイズ ----- '
    .ChartTitle.Font.Name = "Century Schoolbook" ' タイトルのフォント
    .ChartTitle.Font.Size = 15 ' タイトルのフォントサイズ
    .Axes(xlCategory).AxisTitle.Font.Name = "Century Schoolbook" ' 横軸名のフォント
    .Axes(xlCategory).AxisTitle.Font.Size = 15 ' 横軸名のフォントサイズ
    .Axes(xlValue).AxisTitle.Font.Name = "Century Schoolbook" ' 縦軸名のフォント
    .Axes(xlValue).AxisTitle.Font.Size = 15 ' 縦軸名のフォントサイズ
    .Axes(xlCategory).TickLabels.Font.Name = "Times New Roman" ' 横軸スケールのフォント
    .Axes(xlCategory).TickLabels.Font.Size = 18 ' 横軸スケールのフォントサイズ
    .Axes(xlValue).TickLabels.Font.Name = "Times New Roman" ' 縦軸スケールのフォント
    .Axes(xlValue).TickLabels.Font.Size = 18 ' 縦軸スケールのフォントサイズ|
    .Legend.Font.Name = "Century Schoolbook" ' 凡例のフォント
    .Legend.Font.Size = 15 ' 凡例のフォントサイズ

    ' 太字が気になる場合はFalseにしてください。
    .Axes(xlCategory).AxisTitle.Font.Bold = True
    .Axes(xlValue).AxisTitle.Font.Bold = True


' ----- マーカー ----- '
    .SeriesCollection(1).MarkerSize = 5 ' サイズ 2~72
    .SeriesCollection(1).MarkerStyle = xlMarkerStyleCircle ' 形状
    ' --------------------------------------------------------------- '
    ' ----- .SeriesCollection(1).MarkerStyle = xlMarkerStyle*** ----------------- '
    ' ----- 末尾の***はCircle, Dash, Diamond, Dot, Plus, Square, Star, Triangle, X --- '
    ' ----- ただし、Dotはサイズを大きくできないかもしれません。---------------- '
    ' --------------------------------------------------------------- '
    .SeriesCollection(1).MarkerForegroundColor = RGB(0, 0, 0) ' マーカーの色
    .SeriesCollection(1).MarkerBackgroundColor = RGB(0, 0, 0) ' マーカーの内側の色
    .SeriesCollection(1).Format.Shadow.Style = msoShadowStyleInnerShadow '影を隠す
    .SeriesCollection(1).Format.Shadow.Visible = False '影を消す

    .HasTitle = False ' タイトルなしにできます。
'    .Axes(xlCategory).HasTitle = False ' 横軸名なしにできます。
'    .Axes(xlValue).HasTitle = False ' 縦軸名なしにできます。
    .HasLegend = False ' 凡例無しにできます。



End With

End Sub

실행 전


실행 후


이번은 전해지는 디자인씨의 「논문에 사용하는 것과 같은 진지한 그래프」를 참고로 설정해 보았습니다. 「최대치」를 키리의 좋은 수보다 조금만 크게 하면 왠지 상쾌하게 됩니다.

7 향후 전망



· 근사 곡선 추가
· 에러 바 추가
· 플롯의 값 표시
· 함수 곡선 추가
등입니다.

앞은 길다.

좋은 웹페이지 즐겨찾기