
### 前提・実現したいこと
VB2010 Windows7環境
Chartで折れ線と100%積上げグラフを表示したい。
発生している問題
積上げグラフが棒グラフにしかならない
該当のソースコード
CharTはForMに張り付けている
VB2010
1 2#Region "GRAPH 初期化" 3 4 Private Sub ChartClar(ByVal cht As Chart) 5 'Chart の設定を初期値に戻す(通常は必要ありません) 6 With cht 7 .Titles.Clear() 'タイトルの初期化 8 .BackGradientStyle = GradientStyle.None 9 .BackColor = Color.White '背景色を白色に 10 '外形をデフォルトに 11 .BorderSkin.SkinStyle = BorderSkinStyle.None 12 .Legends.Clear() '凡例の初期化 13 .Legends.Add("Legend1") 14 .Series.Clear() '系列(データ関係)の初期化 15 .ChartAreas.Clear() '軸メモリ・3D 表示関係の初期化 16 .ChartAreas.Add("ChartArea1") 17 .Annotations.Clear() 18 End With 19 End Sub 20 21#End Region 22 23#Region "GRAPH 印刷 (営業所別)" 24 25 Private Sub Chart_Display_EIGYO() 26 27 Chart1.DataSource = ds 'Chart に表示するデータソースを設定 28 colums = ds.Tables(0).Columns.Count - 1 'データの系列数を取得 29 30 Call ChartClar(Chart1) '設定を一旦初期値に戻す。(通常は必要ありません。) 31 32 With Chart1 33 'For i As Integer = 1 To colums 34 For i As Integer = 1 To 7 35 Dim columnName As String = ds.Tables(0).Columns(i).ColumnName.ToString() 36 .Series.Add(columnName) 37 .Series(columnName).ChartType = DataVisualization.Charting.SeriesChartType.Column 38 .Series(columnName).XValueMember = ds.Tables(0).Columns(0).ColumnName.ToString() 39 .Series(columnName).YValueMembers = columnName 40 Next 41```ここに言語を入力 StackedColumn100 42を追加 43 44 For i As Integer = 7 To 11 45 46 Dim columnName As String = ds.Tables(0).Columns(i).ColumnName.ToString() 47 .Series.Add(columnName) 48 .Series(columnName).ChartType = DataVisualization.Charting.SeriesChartType.StackedColumn100 49 .Series(columnName).XValueMember = ds.Tables(0).Columns(0).ColumnName.ToString() 50 .Series(columnName).YValueMembers = columnName 51 Next 52
'------------- ここまでは、基本的な表示設定と同じ -----------------------------------------
With Chart1
.Series(0).YAxisType = AxisType.Primary
'Series(0) のグラフを折れ線に設定
.Series(0).ChartType = SeriesChartType.Line
.Series(0).Color = Color.Black
.Series(0).BorderWidth = 2
.Series(0).MarkerStyle = MarkerStyle.Star5
.Series(0).MarkerSize = 8
.Series(0).MarkerColor = Color.Black
'■文字制限の為Series(1)~Series(5)を割愛
End With '■-----------------------------------------------------------------End----■ '■------------------------ Y軸 に関する設定 -------------------------Start--■ With Chart1.ChartAreas(0).AxisY .LabelStyle.Format = "#,##0" '桁区切りで表示の場合 .LabelAutoFitMaxFontSize = 11 End With '■-------------------------------------------------------------------End----■ '■------------------------- 第二Y軸関係の設定 ---------------------Start--■ With Chart1 '■ 'Series(5) をY軸で表示 .Series(6).YAxisType = AxisType.Secondary .Series(6)("DrawingStyle") = "Cylinder" .Series(6).Color = Color.Red .Series(6)("PointWidth") = "0.5" '第二Y軸の目盛り関係の設定 With .ChartAreas(0).AxisY2 '.Maximum = 8000 '点数の最大値 '.Minimum = 0 '点数の最小値 '.Interval = 1000 '点数のメモリ間隔 .LineDashStyle = DataVisualization.Charting.ChartDashStyle.Solid '.LabelAutoFitMaxFontSize = 10 '.LabelAutoFitMinFontSize = 8 .LabelStyle.ForeColor = Color.Red .LineColor = Color.Red ' Color.LightGreen .LineWidth = 2 .LabelStyle.Format = "#,###" '桁区切りで表示の場合 .MajorGrid.LineColor = Color.Red .MajorGrid.LineDashStyle = DataVisualization.Charting.ChartDashStyle.Dash End With End With '■-----------------------------------------------------------------End----■ GoTo AA Dim series() As Series = New Series(6) {} series(0) = Chart1.Series(0) series(1) = Chart1.Series(1) series(2) = Chart1.Series(2) series(3) = Chart1.Series(3) series(4) = Chart1.Series(4) series(5) = Chart1.Series(5) Chart1.Series.Clear() Chart1.Series.Add(series(5)) Chart1.Series.Add(series(0)) Chart1.Series.Add(series(1)) Chart1.Series.Add(series(2)) Chart1.Series.Add(series(3)) Chart1.Series.Add(series(4))
AA:
'■------------------------ X軸 に関する設定 -------------------------Start--■
With Chart1.ChartAreas(0).AxisX
.IsLabelAutoFit = True '下記設定は、(True 既定値)に設定しておかないと有効とならない。 .LabelAutoFitStyle = LabelAutoFitStyles.DecreaseFont Or LabelAutoFitStyles.IncreaseFont .LabelAutoFitMaxFontSize = 15 .LabelAutoFitMinFontSize = 5 '5 以下の設定はできない .MajorGrid.Interval = 0 ' 1 に変更して試して見てください。 .MajorGrid.IntervalOffset = 0.5 '列と列の間に表示される .LabelStyle.Interval = 1 '1データ毎に表示(すべて表示) .LineColor = Color.Red .LineWidth = 2 End With '■-------------------------------------------------------------------End----■ '■------------------- データポイントラベルの設定・表示 ----------------Start--■ For i As Integer = 0 To .Series.Count - 1 With .Series(i) 'データラベルにデータポイントの Y 値を表示 .Label = "#VALY{#,##0}" 'マクロ(キーワード)で指定 注① 参照 If i = 0 Then .LabelForeColor = Color.DarkViolet '** If i = 1 Then .LabelForeColor = Color.Black '** If i = 2 Then .LabelForeColor = Color.Green '** If i = 3 Then .LabelForeColor = Color.Brown '** If i = 4 Then .LabelForeColor = Color.Blue '** If i = 5 Then .LabelForeColor = Color.Red '** .Font = New Font("", 11) '.Font = New Font("MS P明朝", 10, FontStyle.Bold) End With Next '■---------------------------------------------------------------------End----■ '☆★☆★☆★☆★☆★☆★☆★☆★ ここからは、グラフの装飾の部分です ☆★☆★☆★☆★☆★☆★☆★☆★ '■------------------- 凡例の設定 ----------------Start--■ 'If btnTAN.Checked = True Then '.Series(0).LegendText = "当月粗利" '独自の凡例を設定する 'Else .Series(0).LegendText = "合計" '独自の凡例を設定する .Series(1).LegendText = "本 社" '独自の凡例を設定する .Series(2).LegendText = "北海道" '独自の凡例を設定する .Series(3).LegendText = "東 北" '独自の凡例を設定する .Series(4).LegendText = "関 東" '独自の凡例を設定する .Series(5).LegendText = "九 州" '独自の凡例を設定する .Legends(0).Alignment = StringAlignment.Center '凡例の縦方向の表示位置 .Legends(0).BorderColor = Color.Red '凡例の枠の線の色 .Legends(0).BackColor = Color.Yellow '凡例のバックカラー .Legends(0).Docking = Docking.Bottom '凡例の横方向の表示位置 .Legends(0).ShadowOffset = 4 '枠に影を付けて立体的に表示 '■-------------------------------------------------End----■ '■------------------- 棒のカラーを指定の色に設定 ----------------Start--■ '■------------------- タイトルを設定 ----------------Start--■ Chart1.Titles.Add("") With Chart1.Titles(0) .Alignment = Drawing.ContentAlignment.TopCenter .ForeColor = Color.Red .Font = New Font("", 12) .Text = Page_Title End With Chart1.Titles.Add("") With Chart1.Titles(1) .Alignment = Drawing.ContentAlignment.MiddleLeft '.Font = New Font("MS P明朝", 10) .Font = New Font("", 12) End With '■----------------------------------------------------End----■ End With End Sub
#End Region

