合計のデータポイントラベルを表示
                                                                                                        玄関へお回り下さい。
積み上げ棒グラフで合計のデータポイントラベルを表示     (135)
    
複合グラフを作成し、各科目の点数は積み上げ棒グラフで表示し、合計点数は折れ線で表示
します。
その、折れ線を非表示にし、データポイントラベルだけ表示する事で実現しています。
下部の '合計の折れ線を非表示に設定 部分をコメント化すれば通常の棒グラフと
折れ線グラフの複合グラフが作成出来ます。 但し、積み上げ棒グラフと折れ線の複合
ですと折れ線も積上げられますので一工夫必要となります。

Option Explicit   'SampleNo=135 WindowsXP VB6.0(SP5) 2002.04.23
Private sName(10)   As String     '生徒名
Private Kamoku(4)   As String     '科目名
Private intDat(10, 4) As Long      '点数のデータ


Private Sub sChartViewSet()

  '2 次元組み合わせグラフを表示
  MSChart1.chartType = VtChChartType2dCombination

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

  '合計の系列だけ折線に設定
  MSChart1.Plot.SeriesCollection(4).SeriesType = VtChSeriesType2dLine

  '合計の凡例だけを非表示に出来るがデータラベルの表示位置が変る
  With MSChart1  '凡例の表示位置を設定
    .Legend.Location.LocationType = VtChLocationTypeRight
    .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 _
          series.DataPoints(-1).Brush.FillColor.Red, _
          series.DataPoints(-1).Brush.FillColor.Green, _
          series.DataPoints(-1).Brush.FillColor.Blue
      Else
        .VtFont.VtColor.Set 0, 0, 0
        '合計以外は中心に表示
        .LocationType = VtChLabelLocationTypeCenter
      End If
      .Component = VtChLabelComponentValue
      .ValueFormat = "0"
      .Backdrop.Frame.Style = VtFrameStyleNull
    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
End Sub
 
     データ部分はこれまでのサンプルと同じものを使用し、合計の系列が使用できるように赤字
の部分だけ変更します。

Private Sub
sDataOpen()
  Dim CsvD(10)   As String
  Dim intDatN    As Integer
  Dim i       As Long
  Dim j       As Long
  Dim intFileNo   As Integer
  intFileNo = FreeFile
  Open "seiseki.csv" For Input As #intFileNo
  intDatN = -1
  Do Until EOF(intFileNo)
    intDatN = intDatN + 1
    Input #intFileNo, CsvD(0), CsvD(1), CsvD(2), CsvD(3), CsvD(4), _
         CsvD(5), CsvD(6), CsvD(7), CsvD(8), CsvD(9), CsvD(10)
    If intDatN = 0 Then
      For j = 1 To 10
        sName(j) = CsvD(j)
      Next j
    Else
      Kamoku(intDatN) = CsvD(0)
      For j = 1 To 10
        intDat(j, intDatN) = CInt(CsvD(j))
      Next j
    End If
  Loop
  Close #intFileNo
  With MSChart1
    .chartType = VtChChartType2dBar
    .ColumnCount = 4
    .RowCount = 10
    For i = 1 To .RowCount
      For j = 1 To .ColumnCount
        .Column = j
        .Row = i
        .Data = intDat(i, j)
      Next j
    Next i
    For i = 1 To 10
      .DataGrid.RowLabel(i, 1) = sName(i)
    Next i
    For i = 1 To 4
      .DataGrid.ColumnLabel(i, 1) = Kamoku(i)
      .Plot.SeriesCollection(i).LegendText = Kamoku(i)
    Next i
  End With
End Sub


Private Sub Form_Load()
  Form1.Move 0, 0, 10400, 7000
  MSChart1.Move 10, 10, Me.Width - 140, Me.Height - 400
  Call sDataOpen
  Call sChartViewSet
End Sub

 
  
   表示結果
  




2002/04/23