이계가 사용해도 그렇게 화가 나지 않는 그래프를 Excel에서 그 3
이 기사는 「이계를 사용해도 그렇게 화가 나지 않는 그래프를 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 향후 전망
· 근사 곡선 추가
· 에러 바 추가
· 플롯의 값 표시
· 함수 곡선 추가
등입니다.
앞은 길다.
Reference
이 문제에 관하여(이계가 사용해도 그렇게 화가 나지 않는 그래프를 Excel에서 그 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mori_toma/items/8281596a2537fdc8cd56텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)