6.MSChart の標準の機能でできる一般設定以外の部分のワンポイント設定集 |
下記プログラムコードに関する補足・注意事項 動作確認: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 倍にして表示しました。 |
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.上記実行結果 |
3.MSChart の折れ線グラフで値が 0 の時に線を描画しないように設定 |
MSChart の折れ線グラフで値が 0 の時に線を描画しないように設定 VB6.0 のヘルプには詳しく書いていなくて当時の質問にはできませんと答えていたのですが、後になって、SetData メソッド の第4引数が True の場合、データポイントは NULL 値になりチャート上では省略されるという事で試したものです。 適当にテスト用にデータを 0 に設定 With MSChart1 .Column = 3 '英語 .Row = 3 '加藤 .data = 0 End With 図3.折れ線グラフで値が 0 の時の表示方法(標準の状態) 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 の時の表示方法(非表示にした場合) |
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.上記実行結果 |
5.MSChart の指定の系列を非表示及び排除する |
'系列 2 を非表示にする MSChart1.Plot.SeriesCollection(2).Position.Hidden = True '系列 3 を排除する MSChart1.Plot.SeriesCollection(2).Position.Excluded = True 図6.上記実行結果 |
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.統計線の表示結果 |
7.MSChart のデータの行と列を入れ替えてグラフを表示する |
MSChart1.ShowLegend = True '凡例を表示(変更が解りやすいように表示) MSChart1.Plot.DataSeriesInRow = False '系列を列方向に定義 MSChart1.Plot.DataSeriesInRow = True '系列を行方向に定義 図8.データの行列入れ替え結果 |
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 コントロール チャートコントロール グラフ |