VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 MSChartコントロール関係のメニュー
1.MSChart での基本的な設定(表示データの設定・グラフの種類の設定)
2.MSChart の外観・凡例・タイトルに関する設定方法
3.MSChart のデータポイントラベルの設定及びマーカーの設定
4.MSChart の X 軸・Y 軸及びメモリ関係の設定
5.MSChart の系列の内部の色、パターン、パターンの色の設定
6.MSChart の標準の機能でできる上記以外の部分のワンポイント設定集
7.MSChart コントロールの主なグラフの表示方法(標準設定での)
8.MSChart のグラフをPictureBoxに転送表示及び各部の座標位置を取得
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、MSChart 関係で当サイト内に掲載しているサンプルの紹介


7.MSChart コントロールの主なグラフの表示方法
1.MSChart コントロールで縦棒と折線の複合グラフを表示
2.MSChart コントロールの積み上げ棒グラフで合計点をデータポイントラベルに表示
3.MSChart コントロールで3Dグラフを回転させながら表示する
4.MSChart コントロールで散布図(2 次元 XY 図)を表示する
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:追加なし
使用 API:
なし
その他 :条件は、1.MSChart での基本的な設定(表示データの設定・グラフの種類の設定)の表示環境で。
    :下記、コードは、sChartViewSet プロシージャ内に追加記入願います。
このページのトップへ移動します。 1.MSChart コントロールで縦棒と折線の複合グラフを表示
使用するデータに合計点のデータを追加しておいて下さい。
その合計点を折れ線で、第二Y軸で表示するようにしております。
以下の設定だけで表示できます。後の装飾部分はお好みで設定して下さい。

  With MSChart1
    'グラフの種類を 2次元組み合わせ を選択
    .chartType = VtChChartType2dCombination

    '合計の系列だけを折線で表示
    .Plot.SeriesCollection(4).SeriesType = VtChSeriesType2dLine

    '合計の系列だけを第2Y軸で表示
    .Plot.SeriesCollection(4).SecondaryAxis = True
  End With

  図1.縦棒と折れ線の複合グラフの表示例
 mschart07_01.gif

このページのトップへ移動します。 2.MSChart コントロールの積み上げ棒グラフで合計点をデータポイントラベルに表示
  図2.積み上げ棒グラフで合計点をデータポイントラベルに表示する場合の例
 mschart07_02.gif
使用データは、縦棒と折線の複合グラフの表示と同じものを使用します。

  MSChart1.chartType = VtChChartType2dCombination

  'すべての図表系列がスタック(系列の積上げ)されます
  MSChart1.Stacking = True

  '合計の系列だけ折線に設定
  MSChart1.Plot.SeriesCollection(4).SeriesType = VtChSeriesType2dLine
  '合計の凡例だけを非表示に出来るがデータラベルの表示位置が変る
  With MSChart1  '凡例の表示位置を設定
    .Legend.Location.LocationType = VtChLocationTypeRight
    .Plot.SeriesCollection(4).LegendText = " " '見えないようにスペース変える
    '合計の色を背景の色と同じにする事で、凡例に表示していないようにする
    .Plot.SeriesCollection(4).Pen.VtColor.Set 255, 240, 240
    .ShowLegend = True
  End With

  'データラベルをプロット表示
  Dim series As series
  For Each series In MSChart1.Plot.SeriesCollection
    With series.DataPoints.Item(-1).DataPointLabel
      If series = " " Then  'スペースに変えたので
        '合計の凡例を非表示にするとこの位置が変る
        .LocationType = VtChLabelLocationTypeBase
        '合計だけ指定の色で表示
        .VtFont.VtColor.Set 255, 0, 255
      Else
        .VtFont.VtColor.Set 0, 0, 0
        '合計以外は中心に表示
        .LocationType = VtChLabelLocationTypeCenter
      End If
      .Component = VtChLabelComponentValue
      .ValueFormat = "0"
    End With
  Next
  '目盛り線の設定 (点数の横線)
  With MSChart1.Plot.Axis(VtChAxisIdY)
    .ValueScale.Auto = False
    .ValueScale.Maximum = 300          '最大値
    .ValueScale.Minimum = 0           '最小値
    .ValueScale.MajorDivision = 6        '目盛り線の数
    .ValueScale.MinorDivision = 2        '補助目盛り線等分
    .AxisGrid.MajorPen.VtColor.Set 0, 255, 255 '目盛り線の色
    .AxisGrid.MinorPen.VtColor.Set 230, 230, 0 '補助目盛り線の色
  End With
  '合計の折れ線を非表示に設定
  MSChart1.Plot.SeriesCollection(4).ShowLine = False



複合グラフを作成し、各科目の点数は積み上げ棒グラフで表示し、合計点数は折れ線で表示します。
その、折れ線を非表示にし、データポイントラベルだけ表示する事で実現しています。
下部の '合計の折れ線を非表示に設定 部分をコメント化すれば通常の棒グラフと折れ線グラフの複合グラフが作成出来ます。 但し、積み上げ棒グラフと折れ線の複合ですと折れ線も積上げられますので一工夫必要となります。
又、合計点の凡例が表示されるといやだと言う場合は、合計点の凡例だけ非表示にするとデータポイントラベルの表示位置が目盛りの位置になりますので、上記のように表示はしているのですが、見えないように設定しています。
上記の設定値をコメントするなりして変更して試して見て下さい。
このように工夫する事によって一味違ったグラフを表示する事ができます。

このページのトップへ移動します。 3.MSChart コントロールで3Dグラフを回転させながら表示する

MSChart1.chartType = VtChChartType3dBar
Timer1.Interval = 1000
Timer1.Enabled = True


Private Sub Timer1_Timer()
'3Dグラフを回転表示
  'VB5.0 ではエラーが発生
  lngRotation = lngRotation + 10     '回転角度
  lngElevation = lngElevation + 5     '上昇角度
  MSChart1.Plot.View3d.Set lngRotation, lngElevation
  If lngElevation >= 90 Then lngElevation = -30
  If lngRotation >= 360 Then lngRotation = 0
End Sub



3Dグラフならグラフ上で[Ctrl] キーを押しながらマウスでグラフをドラッグする事によって、視点を変えて表示させる事ができます。(VB5.0 VB6.0 共)

プログラムで回転表示させるにはMSChart1.Plot.View3d.Rotation に角度を設定してやれば、できますがVB5.0 では90度以上の角度設定するとエラーとなります。
VB6.0 では大丈夫のようです。上昇角度0度は真横からで90度は真上になります。

尚、回転表示時に画面がチラツクようなら、下記を参考に、PictureBox に転送表示するようにしてみて下さい。
 グラフ(画面)がチカチカ(チラツク)する(
 3D棒グラフを回転角、上昇角を指定して回転表示

このページのトップへ移動します。 4.MSChart コントロールで散布図(2 次元 XY 図)を表示する
使用データ(test1.csv)は、次よりダウンロードして使って下さい。  ChartDat2.zip

'--------------------------------------------------------------------------------
  '共通部分
  Dim series As Object
  With MSChart1.Plot.Axis(VtChAxisIdY).ValueScale
    .Auto = False                '自動設定を解除
    .Maximum = 100               '最大値
    .Minimum = 0                '最小値
    .MajorDivision = 5             '目盛り線の数(等分)10点毎
  End With

  With MSChart1.Plot.Axis(VtChAxisIdX).ValueScale
    .Auto = False                '自動設定を解除
    .Maximum = 100               '最大値
    .Minimum = 0                '最小値
    .MajorDivision = 5             '目盛り線の数(等分)10点毎
  End With
  MSChart1.Plot.DataSeriesInRow = True      '系列を行方向に定義

'--------------------------------------------------------------------------------

  '散布図(プロット)
   With MSChart1
     'グラフタイプを散布図に設定
     .Plot.UniformAxis = False 'グラフを横長に
     .chartType = VtChChartType2dXY
     .ShowLegend = False
  End With

  'すべての系列についてマーカーを表示し、線を表示解除します。
  For Each series In MSChart1.Plot.SeriesCollection
    series.SeriesMarker.Show = True
    series.SeriesMarker.Auto = False
    'マーカーの形状を指定
    series.DataPoints.Item(-1).Marker.Style = VtMarkerStyleUpTriangle
    '線を表示解除します。
    series.ShowLine = False
  Next

'--------------------------------------------------------------------------------
  '散布図(ライン)
  With MSChart1
    'グラフタイプを散布図に設定
    .chartType = VtChChartType2dXY
    .Plot.UniformAxis = False  'グラフを横長に True で縦長
    .ShowLegend = False
  End With
  'すべての系列についてマーカーを非表示し、線を表示します。
  For Each series In MSChart1.Plot.SeriesCollection
    series.SeriesMarker.Show = False
    series.ShowLine = True
  Next

  図3.散布図(2 次元 XY)の表示例
 mschart07_03.gif

このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
MSChart コントロール チャートコントロール グラフ




このページのトップへ移動します。