You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Chart控件创建StackedColumn100百分比堆叠柱形图效果异常求助

问题根因

你代码里存在两个核心错误导致渲染结果不符合预期:

  1. 给DataPoint传Y值时错误将数值转为字符串,Chart控件会将字符串识别为轴标签而非Y轴数值,所有系列的Y值被默认置为1,因此每个堆叠块高度完全一致。
  2. 遍历数据源时误用了BarChart.Tables[0],Chart控件本身没有Tables属性,应该使用你从SQL查询得到的dataSet.Tables[0]。
  3. 同时设置DataSource又手动添加数据点属于重复绑定,无意义可直接移除。

修复后代码

BarChart.Series.Clear();

// 按需设置X轴两个分组的显示标签,对应X值1和2的位置
BarChart.ChartAreas[0].AxisX.CustomLabels.Add(0.5, 1.5, "你的第一个X分组名");
BarChart.ChartAreas[0].AxisX.CustomLabels.Add(1.5, 2.5, "你的第二个X分组名");

foreach (DataRow row in dataSet.Tables[0].Rows)
{
    string seriesName = row[0].ToString();
    Series curSeries = new Series(seriesName);
    curSeries.ChartType = SeriesChartType.StackedColumn100;

    // 核心修复:将Y值转为数值类型传入,不要转字符串
    double yValue1 = Convert.ToDouble(row[2]);
    double yValue2 = Convert.ToDouble(row[1]);
    curSeries.Points.AddXY(1, yValue1);
    curSeries.Points.AddXY(2, yValue2);

    BarChart.Series.Add(curSeries);
}

可选配置(显示百分比标签)

如果需要在堆叠块上显示占比,可以在上述代码后追加:

foreach (Series s in BarChart.Series)
{
    s.IsValueShownAsLabel = true;
    s.LabelFormat = "#0%";
}

内容的提问来源于stack exchange,提问作者Gavin Beard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 10:24:00