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 関係で当サイト内に掲載しているサンプルの紹介


6.MSChart の標準の機能でできる一般設定以外の部分のワンポイント設定集
1.MSChart のグラフデータの表示単位を変更する
2.MSChart のグラフ内のクリックした位置のデータを取得表示する
3.MSChart の折れ線グラフで値が 0 の時に線を描画しないように設定
4.MSChart のクリックした系列のグラフの色を任意の色に変更する
5.MSChart の指定の系列を非表示及び排除する
6.MSChart の折れ線グラフで平均線・標準偏差等の統計線を表示
7.MSChart のデータの行と列を入れ替えてグラフを表示する
8.MSChart でグラフの系列が重なって見づらい時にクリックした系列を最前面に表示する
9. 


 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:追加なし
使用 API:
なし
その他 :条件は、1.MSChart での基本的な設定(表示データの設定・グラフの種類の設定)の表示環境で。
    :下記、コードは、sChartViewSet プロシージャ内に追加記入願います。
このページのトップへ移動します。 1.MSChart のグラフデータの表示単位を変更する

  With MSChart1
    Call setUnit(1000)  '単位を千に設定
  End With


'別途、下記プロシージャを追加して下さい。
Private Sub setUnit(ByVal unit As Long)
'表示するデータの桁合せ
  Dim i As Long, j As Long
  With MSChart1
    For i = 0 To .ColumnCount - 1
      .Column = i + 1
      For j = 0 To .RowCount - 1
        .Row = j + 1
        '.Data = .Data * 1000 '参考図は、便宜上こちらを使用しました。
        .Data = .Data / unit
      Next j
    Next i
  End With
End Sub

  図1.便宜上データを逆に、1000 倍にして表示しました。
 mschart06_01.gif

このページのトップへ移動します。 2.MSChart のグラフ内のクリックした位置のデータを取得表示する
下記のイベントプロシージャを追加して下さい。
但し、一旦クリックしてアクティブにしてからクリックしないとうまく反応しないし、個別データに対してどうこうする事はできませんので、取得のみという事で。

Private Sub MSChart1_PointSelected(Series As Integer, _
      DataPoint As Integer, MouseFlags As Integer, Cancel As Integer)
'クリックした系列の個別のデータの値を取得表示する
  Dim kamoku As String
  Dim seito As String
  Dim data  As Variant
  With MSChart1
    kamoku = .ChartData(0, Series)           '科目名
    seito = .ChartData(DataPoint, 0)          '生徒名
    data = .ChartData(DataPoint, Series)        '配列内のデータを取得
    kamoku = .Plot.SeriesCollection(Series).LegendText '科目名(こちらでも可)
  End With
  MsgBox seito & "さんの" & kamoku & "の点数は" & data & "です。"
End Sub

  図2.上記実行結果
 mschart06_02.gif

このページのトップへ移動します。 3.MSChart の折れ線グラフで値が 0 の時に線を描画しないように設定
MSChart の折れ線グラフで値が 0 の時に線を描画しないように設定
VB6.0 のヘルプには詳しく書いていなくて当時の質問にはできませんと答えていたのですが、後になって、SetData メソッド の第4引数が True の場合、データポイントは NULL 値になりチャート上では省略されるという事で試したものです。

  適当にテスト用にデータを 0 に設定
  With MSChart1
    .Column = 3 '英語
    .Row = 3   '加藤
    .data = 0
  End With

  図3.折れ線グラフで値が 0 の時の表示方法(標準の状態)
 mschart06_03.gif

  MSChart1.chartType = VtChChartType2dLine
  Dim i As Long
  Dim j As Long
  With MSChart1
    For i = 0 To .ColumnCount - 1
      For j = 0 To .RowCount - 1
        .Row = j + 1
        .Column = i + 1
        If Val(.data) = 0 Then
          .DataGrid.SetData j + 1, i + 1, .data, True
        End If
      Next j
    Next i
  End With

  図4.折れ線グラフで値が 0 の時の表示方法(非表示にした場合)
 mschart06_04.gif

このページのトップへ移動します。 4.MSChart のクリックした系列のグラフの色を任意の色に変更する
CommonDialog1 をフォームに貼り付けておいて下さい。
下記のイベントプロシージャを追加して下さい。

Private Sub MSChart1_SeriesSelected(Series As Integer, _
                MouseFlags As Integer, Cancel As Integer)
'クリックした系列のグラフの色を任意の色に変更する
  Dim r As Integer
  Dim g As Integer
  Dim b As Integer
  'CommonDialog より指定の色を取得
  On Error Resume Next
  With CommonDialog1
    .CancelError = True
    .ShowColor
    If Err.Number <> 0 Then
      Err.Clear
      Exit Sub
    End If
    r = .Color And vbRed
    g = (.Color And vbGreen) \ &H100
    b = (.Color And vbBlue) \ &H10000
  End With

  With MSChart1
    '2D および 3D の折れ線グラフはPen オブジェクトを使用
    If .chartType = VtChChartType2dLine Or .chartType = VtChChartType3dLine Then
      .Plot.SeriesCollection(Series).Pen.VtColor.Set r, g, b
    Else
      .Plot.SeriesCollection(Series).DataPoints(-1).Brush.FillColor.Set r, g, b
    End If
  End With
End Sub

  図5.上記実行結果
 mschart06_05.gif
このページのトップへ移動します。 5.MSChart の指定の系列を非表示及び排除する

  '系列 2 を非表示にする
  MSChart1.Plot.SeriesCollection(2).Position.Hidden = True

  '系列 3 を排除する
  MSChart1.Plot.SeriesCollection(2).Position.Excluded = True

  図6.上記実行結果
 mschart06_06.gif

このページのトップへ移動します。 6.MSChart の折れ線グラフで平均線・標準偏差等の統計線を表示

  '  折れ線グラフでないと表示できないので。
  MSChart1.chartType = VtChChartType2dLine
  With MSChart1.Plot.SeriesCollection.Item(1).StatLine
    '統計線を設定します。
    '下記の Flag の設定は、1系列に対して1種類しか表示出来ません。
    '(下記の定数の中から1つ選択して下さい)

    .Flag = VtChStatsMaximum  '系列の最大値を表示します。
    .Flag = VtChStatsMinimum  '系列の最小値を表示します。
    .Flag = VtChStatsMean    '系列中の値の数学的平均を表示します。
    .Flag = VtChStatsStddev   '系列中の値の標準偏差を表示します。
    .Flag = VtChStatsRegression '系列の値が示すトレンド線を表示します。

    '線の種類を決めます。
    .Style(VtChStatsMaximum) = VtPenStyleDashDitDit
    '線の色の自動設定を解除します。
    .VtColor.Automatic = False
    '色を設定します。
    .VtColor.Set 0, 0, 255
    '線の幅を設定します。
    .Width = 50
  End With

  図7.統計線の表示結果
 mschart06_07.gif

このページのトップへ移動します。 7.MSChart のデータの行と列を入れ替えてグラフを表示する

  MSChart1.ShowLegend = True       '凡例を表示(変更が解りやすいように表示)

  MSChart1.Plot.DataSeriesInRow = False '系列を列方向に定義
  MSChart1.Plot.DataSeriesInRow = True  '系列を行方向に定義

  図8.データの行列入れ替え結果
 mschart06_08.gif

このページのトップへ移動します。 8.MSChart でグラフの系列が重なって見づらい時にクリックした系列を最前面に表示する

Private Sub MSChart1_SeriesSelected(Series As Integer, _
                MouseFlags As Integer, Cancel As Integer)
'クリックした系列のグラフが最前面に表示される
  MSChart1.Plot.SeriesCollection(Series).Position.Order = -1
End Sub

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


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




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