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.縦棒と折れ線の複合グラフの表示例 |
2.MSChart コントロールの積み上げ棒グラフで合計点をデータポイントラベルに表示 |
図2.積み上げ棒グラフで合計点をデータポイントラベルに表示する場合の例 使用データは、縦棒と折線の複合グラフの表示と同じものを使用します。 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)の表示例 |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
MSChart コントロール チャートコントロール グラフ |