C# 柱形图的y轴百分比值Microsoft图表控件

C# 柱形图的y轴百分比值Microsoft图表控件,c#,microsoft-chart-controls,C#,Microsoft Chart Controls,我正在尝试获取柱状图,其中我需要在y轴上有百分比值,并且应该重新计算和缩放 我看到了一些关于分配最小值和最大值的建议(chart.ChartAreas[0].AxisY.minimum=0),但它没有根据百分比调整列高度。任何帮助都将不胜感激 以下是我迄今为止所做的工作 foreach (var value in labels) { chart.Legends[value].Alignment = StringAlignment.Center; chart.Lege

我正在尝试获取柱状图,其中我需要在y轴上有百分比值,并且应该重新计算和缩放

我看到了一些关于分配最小值和最大值的建议(
chart.ChartAreas[0].AxisY.minimum=0
),但它没有根据百分比调整列高度。任何帮助都将不胜感激

以下是我迄今为止所做的工作

 foreach (var value in labels)
   {

     chart.Legends[value].Alignment = StringAlignment.Center;
     chart.Legends[value].Docking = Docking.Bottom;
     chart.Series[value].ChartType = SeriesChartType.Column;
     chart.Series[value].IsValueShownAsLabel = true;
     chart.Series[value].Label = "#PERCENT{P0}";

     chart.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
     chart.ChartAreas[0].AxisY.MajorGrid.Enabled =false;
     chart.ChartAreas[0].AxisY.Minimum=0;
      // chart.ChartAreas[0].RecalculateAxesScale();

      chart.BringToFront();

      if (count == 0 && comp.Value != null)
        chart.Series[value].Points.Add(comp.Value[0]);
      else if (count >= 1 && comp.Value != null && comp.Value.Count() > count)
        chart.Series[value].Points.Add(comp.Value[count]);
      else
        chart.Series[value].Points.Add(0);

          count++;
}

Y轴应显示百分比,列高度应调整为Y轴百分比值

下面的示例显示了有关图表中数据的各种信息:

  • 工具提示中的X&Y值
  • 列中的值占总数的百分比
  • 与Y轴上的最大值相比的百分比

系列S=chart1.系列[0];
ChartArea CA=chart1.ChartAreas[0];
轴AY=约轴Y;
S.Points.AddXY(1,10);S.Points.AddXY(2,40);
S.Points.AddXY(3,50);S.Points.AddXY(4100);
S.Points.AddXY(5111);
S.IsValueShownAsLabel=true;
S.Label=“#百分比{P0}”;
S.ToolTip=“#VALX{#.###}”+”:“+”#VALY1{#.#}”;
double max=S.Points.max(x=>x.y值[0]);
对于(int i=0;i

当然,你可以随意改变它。

你能包括一张显示你想要的图片吗?@TaW添加了图片。请检查并让e知道您是否有解决方案!
Series S = chart1.Series[0];
ChartArea CA = chart1.ChartAreas[0];
Axis AY = CA.AxisY;

S.Points.AddXY(1, 10);      S.Points.AddXY(2, 40);
S.Points.AddXY(3, 50);      S.Points.AddXY(4, 100);
S.Points.AddXY(5, 111);  

S.IsValueShownAsLabel = true;
S.Label = "#PERCENT{P0}";

S.ToolTip = "#VALX{#.##}" + " : " + "#VALY1{#.##}";

double max = S.Points.Max(x => x.YValues[0]);

for (int i = 0; i < S.Points.Count; i++)
{
    DataPoint dp =  S.Points[i];
    double y0 = S.Points[i].YValues[0];
    AY.CustomLabels.Add(y0, y0 + 1, (y0 / max * 100f).ToString("0.0") + "%");
}