実現したいこと
VB.netのチャート機能にて積み上げ面グラフを描画する際に
データが0の系が最後に描画される際にグラフの境界線が
データが0の系の色で表示されてしまう。
境界線の色は最後にデータが>0であったデータの色としたい。
試したこと
各チャートの「BorderWidth」プロパティを0にしたが境界線は消えなかった。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
データが0の系が最後に描画される際にグラフの境界線が
データが0の系の色で表示されてしまう。
下図の赤矢印のところを言ってるんですよね?(緑矢印もうっすら黄色が混じってるようにも見えますがどうなんでしょうか?^^;
各チャートの「BorderWidth」プロパティを0にしたが境界線は消えなかった。
逆に白いBorderColor
にしたらいいんじゃないでしょうか。
cs
1using System.Data; 2using System.Drawing; 3using System.Windows.Forms; 4using System.Windows.Forms.DataVisualization.Charting; 5 6namespace Qpq8e05s3vhidml 7{ 8 public partial class Form1 : Form 9 { 10 public Form1() 11 { 12 InitializeComponent(); 13 14 var dt = new DataTable(); 15 dt.Columns.Add("x"); 16 dt.Columns.Add("y1"); 17 dt.Columns.Add("y2"); 18 dt.Columns.Add("y3"); 19 dt.Rows.Add(0, 2, 1, 1); 20 dt.Rows.Add(1, 2, 0, 1); 21 dt.Rows.Add(2, 2, 0, 1); 22 dt.Rows.Add(3, 1, 0, 0); 23 dt.Rows.Add(4, 1, 0, 0); 24 dt.Rows.Add(5, 0, 0, 0); 25 26 var chart = new Chart 27 { 28 DataSource = dt, 29 Dock = DockStyle.Fill, 30 Parent = this, 31 }; 32 chart.ChartAreas.Add(""); 33 chart.ChartAreas[0].AxisX.MajorGrid.Enabled = false; 34 chart.ChartAreas[0].AxisY.MajorGrid.Enabled = false; 35 36 chart.Series.Add(new Series 37 { 38 ChartType = SeriesChartType.StackedArea, 39 XValueMember = "x", 40 YValueMembers = "y1", 41 }); 42 chart.Series.Add(new Series 43 { 44 ChartType = SeriesChartType.StackedArea, 45 XValueMember = "x", 46 YValueMembers = "y2", 47 }); 48 chart.Series.Add(new Series 49 { 50 BorderWidth = 2, 51 BorderColor = Color.White, 52 53 ChartType = SeriesChartType.StackedArea, 54 XValueMember = "x", 55 YValueMembers = "y3", 56 }); 57 } 58 } 59}
点ごとに色を変えることもできるんでしたっけ。
C#でグラフを作成して、特定の箇所のみ色を変更したいです
登録(時に連続0を見て色を変える)作業が面倒ですが、見た目はいいですね!^^
cs
1using System.Drawing; 2using System.Windows.Forms; 3using System.Windows.Forms.DataVisualization.Charting; 4 5namespace Qpq8e05s3vhidml 6{ 7 public partial class Form1 : Form 8 { 9 public Form1() 10 { 11 InitializeComponent(); 12 13 var chart = new Chart 14 { 15 Dock = DockStyle.Fill, 16 Parent = this, 17 }; 18 chart.ChartAreas.Add(""); 19 20 chart.Series.Add(new Series 21 { 22 ChartType = SeriesChartType.StackedArea, 23 Points = { 24 new DataPoint(0, 2), 25 new DataPoint(1, 2), 26 new DataPoint(2, 2), 27 new DataPoint(3, 1), 28 new DataPoint(4, 1), 29 new DataPoint(5, 0), 30 }, 31 }); 32 chart.Series.Add(new Series 33 { 34 ChartType = SeriesChartType.StackedArea, 35 Points = { 36 new DataPoint(0, 1), 37 new DataPoint(1, 0), 38 new DataPoint(2, 0) { Color = Color.Transparent, }, 39 new DataPoint(3, 0) { Color = Color.Transparent, }, 40 new DataPoint(4, 0) { Color = Color.Transparent, }, 41 new DataPoint(5, 0) { Color = Color.Transparent, }, 42 }, 43 }); 44 chart.Series.Add(new Series 45 { 46 ChartType = SeriesChartType.StackedArea, 47 Points = { 48 new DataPoint(0, 1), 49 new DataPoint(1, 1), 50 new DataPoint(2, 1), 51 new DataPoint(3, 0), 52 new DataPoint(4, 0) { Color = Color.Transparent, }, 53 new DataPoint(5, 0) { Color = Color.Transparent, }, 54 }, 55 }); 56 } 57 } 58}
DataSource
で入れているなら、後から変えてもいいです。
cs
1using System.Data; 2using System.Drawing; 3using System.Windows.Forms; 4using System.Windows.Forms.DataVisualization.Charting; 5 6namespace Qpq8e05s3vhidml 7{ 8 public partial class Form1 : Form 9 { 10 public Form1() 11 { 12 InitializeComponent(); 13 14 var dt = new DataTable(); 15 dt.Columns.Add("x"); 16 dt.Columns.Add("y1"); 17 dt.Columns.Add("y2"); 18 dt.Columns.Add("y3"); 19 dt.Rows.Add(0, 2, 1, 1); 20 dt.Rows.Add(1, 2, 0, 1); 21 dt.Rows.Add(2, 2, 0, 1); 22 dt.Rows.Add(3, 1, 0, 0); 23 dt.Rows.Add(4, 1, 0, 0); 24 dt.Rows.Add(5, 0, 0, 0); 25 26 var chart = new Chart 27 { 28 DataSource = dt, 29 Dock = DockStyle.Fill, 30 Parent = this, 31 }; 32 chart.ChartAreas.Add(""); 33 34 chart.Series.Add(new Series 35 { 36 ChartType = SeriesChartType.StackedArea, 37 XValueMember = "x", 38 YValueMembers = "y1", 39 }); 40 chart.Series.Add(new Series 41 { 42 ChartType = SeriesChartType.StackedArea, 43 XValueMember = "x", 44 YValueMembers = "y2", 45 }); 46 chart.Series.Add(new Series 47 { 48 ChartType = SeriesChartType.StackedArea, 49 XValueMember = "x", 50 YValueMembers = "y3", 51 }); 52 53 chart.DataBind(); 54 foreach (var series in chart.Series) 55 { 56 var p = series.Points; 57 if (p.Count < 2) continue; 58 for (var i = 1; i < p.Count; i++) 59 { 60 if (p[i - 1].YValues[0] == 0 && p[i].YValues[0] == 0) 61 { 62 p[i].Color = Color.Transparent; 63 } 64 } 65 } 66 } 67 } 68}
投稿2025/02/19 14:06
編集2025/02/21 11:22総合スコア9937
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/02/20 03:00
2025/02/20 03:56 編集
2025/02/20 04:13 編集
2025/02/20 05:33
2025/02/20 05:37