【发布时间】:2011-06-27 18:51:26
【问题描述】:
谁能告诉我如何用代码制作堆积柱形图?我没有要绑定的数据集,只是在堆积柱形图中显示的普通值。 我在 .NET Framework 40 中使用 Visual Studio 2010 提供的普通 .NET Chart 控件。所以请不要谈论 WebCharts 或任何其他付费图表,如 Dundas 图表或 dotnetCharting 等。
【问题讨论】:
谁能告诉我如何用代码制作堆积柱形图?我没有要绑定的数据集,只是在堆积柱形图中显示的普通值。 我在 .NET Framework 40 中使用 Visual Studio 2010 提供的普通 .NET Chart 控件。所以请不要谈论 WebCharts 或任何其他付费图表,如 Dundas 图表或 dotnetCharting 等。
【问题讨论】:
将SeriesChartType 设置为 StackedColumn 应该会为您提供堆栈区域图(如果这是您所要求的)。下面的代码示例来自here
//Populate series data
Random random = new Random();
for(int pointIndex = 0; pointIndex < 10; pointIndex++)
{
Chart1.Series["Series1"].Points.AddY(Math.Round((double)random.Next(45, 95),0));
Chart1.Series["Series2"].Points.AddY(Math.Round((double)random.Next(5, 75),0));
Chart1.Series["Series3"].Points.AddY(Math.Round((double)random.Next(5, 95),0));
Chart1.Series["Series4"].Points.AddY(Math.Round((double)random.Next(35, 95),0));
}
Chart1.Series["Series1"].ChartType = SeriesChartType.StackedColumn;
Chart1.Series["Series2"].ChartType = SeriesChartType.StackedColumn;
Chart1.Series["Series3"].ChartType = SeriesChartType.StackedColumn;
Chart1.Series["Series4"].ChartType = SeriesChartType.StackedColumn;
【讨论】:
要移除背景中的图表,请在 ChartArea 对象上设置以下内容:
ChartAreas[0].AxisX.Enabled = AxisEnabled.False
ChartAreas[0].AxisY.Enabled = AxisEnabled.False
这将禁用两个轴。
如果您想保留 XAxis 及其标签,请移除网格线和 YAxis - 您可以使用以下代码:
Chart1.ChartAreas[0].AxisX.LineDashStyle = ChartDashStyle.NotSet;
Chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
Chart1.ChartAreas[0].AxisX.MajorTickMark.Enabled = false;
Chart1.ChartAreas[0].AxisX.MinorGrid.Enabled = false;
Chart1.ChartAreas[0].AxisX.MinorTickMark.Enabled = false;
Chart1.ChartAreas[0].AxisY.Enabled = AxisEnabled.False;
【讨论】:
在 .net 中使用 ASP 图表对堆积条形图进行长时间搜索后,我得到了更好的解决方案。
MobileSalesChart.Series["Apple"].Points.Add(new DataPoint(i, ds.Tables[0].Rows[i]["Apple"].ToString().Trim()));
MobileSalesChart.Series["Nokia"].Points.Add(new DataPoint(i, ds.Tables[0].Rows[i]["Nokia"].ToString().Trim()));
MobileSalesChart.Series["Samsung"].Points.Add(new DataPoint(i, ds.Tables[0].Rows[i]["Samsung"].ToString().Trim()));
MobileSalesChart.Series["Sony"].Points.Add(new DataPoint(i, ds.Tables[0].Rows[i]["Sony"].ToString().Trim()));
MobileSalesChart.Series["Motorola"].Points.Add(new DataPoint(i, ds.Tables[0].Rows[i]["Motorola"].ToString().Trim()));
MobileSalesChart.Series[0].Points[i].AxisLabel = ds.Tables[0].Rows[i]["Year"].ToString().Trim();
【讨论】: