在Y轴上显示Y值而不进行舍入

时间:2014-11-27 15:05:24

标签: c# charts

如何在图表中删除舍入轴OY?

我传递格式为1,3546的值,图表显示为1,35。

1 个答案:

答案 0 :(得分:0)

对于给定的Axis,您可以设置LabelStyle.Format

例如,你可以使用它:

  chart1.ChartAreas["area1"].AxisX.LabelStyle.Format = "000.000\\%";     

或者这个:

  chart1.ChartAreas[0].AxisY.LabelStyle.Format = "###,##0.00000";

注意:这会格式化轴网格Label,因此您认为舍入。事实上,GridLines DataPoints 不是的值!

要显示DataPoints的Y值,您有三个我知道的选项,我会告诉您每个:

  1. 您可以使用每个点在图表中显示它们

  2. 当鼠标悬停在某个点上时,您可以将它们显示为工具提示

  3. 或者您可以沿着Y轴在CustomLabels中显示它们,这可能就是您想要的。请注意,如果

    ,这只是一个有用的选项
    • 数据点数量非常有限
    • 这些点相距甚远。
  4. 如果不满足一个或两个条件,CustomLabels将重叠。

    设置CustomLabels有点棘手。这是一段代码,每个数据点设置一个。如上所述,您可能需要插入检查以防止重叠..

    // propare a few short names
    ChartArea CA = chart1.ChartAreas[0];
    Series S1 = chart1.Series[0];
    
    // this would be option one:
    S1.IsValueShownAsLabel = true;
    
    // we clear any previous CustomLabels
    CA.AxisY.CustomLabels.Clear();
    // we create a version of our points collection which sorted  by Y-Values:
    List<DataPoint> ptS = S1.Points.OrderBy(x => x.YValues[0]).ToList();
    
    // now, for option three we add the custom labels:
    for (int p = 0; p < ptS.Count; p++)
    {
        CustomLabel L = new CustomLabel(ptS[p].YValues[0] - 0.5, 
                                        ptS[p].YValues[0] + 0.5,  
                                        ptS[p].YValues[0].ToString("##0.0000"), 
                                        0, LabelMarkStyle.None);
        CA.AxisY.CustomLabels.Add(L);
    
        // this is option two: tooltips for each point
        ptS[p].ToolTip = ptS[p].YValues[0].ToString("##0.0000");
    }
    

    CustomLabel的前两个参数是关于Y位置或实际上它们应该标记的Y值范围。接下来的值,格式化为显示您想要的小数位数。最后是第一行标签,没有标记。

    这是一个屏幕截图,显示了所有三个选项:

    CustomLabels