5

我有一个描述人数的条形图。当只有几个人时,Y 轴显示值:0.5、1、1.5 等……看起来有点傻。

  • 我可以将间隔覆盖为 1 ( AxisY.LabelStyle.Interval = 1),但如果有 100 人,它就不起作用
  • 我可以设置 AxisY.Maximum = 10,但这不适用于 100 人
  • 我可以设置 AxisY.LabelStyle.Format = {#},但是显示 [1,1,2,2] 因为它会围绕每个标签

我意识到我可以根据内容动态地使用前两个选项中的任何一个,但想知道是否有一种自动方法可以使标签“仅整数”?

4

2 回答 2

0

遵循自定义事件可以解决问题。我基本上使用正则表达式来检测不是整数的标签,然后将它们删除。但是将间隔设置为 1 可能会给您带来麻烦,除非您稍后将其恢复为自动。

由于必须更改轴间隔属性,此代码无法解决我的问题。请建议是否有人有其他建议。

    private void Chart_Customize(object sender, EventArgs e)
    {
        List<CustomLabel> list = new List<CustomLabel>();
        System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("^\\d+$");

        foreach (CustomLabel l in chart.ChartAreas[0].AxisY.CustomLabels)
        {
            if(!r.IsMatch(l.Text))
            {
                list.Add(l);
            } 
        }

        if (list.Count > 0)
        {
            foreach (CustomLabel l in list)
                chart.ChartAreas[0].AxisY.CustomLabels.Remove(l);
            chart.ChartAreas[0].AxisY.Interval = 1;

        }
    }
于 2013-10-30T13:01:06.033 回答
0

您可以使用 scale break 在同一轴上显示小数和大数:

// Enable scale breaks
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.Enabled = true;
// Set the scale break type
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.BreakLineStyle = BreakLineStyle.Wave;
// Set the spacing gap between the lines of the scale break (as a percentage of y-axis)
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.Spacing = 2;
// Set the line width of the scale break
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.LineWidth = 2;
// Set the color of the scale break
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.LineColor = Color.Red;
// Show scale break if more than 25% of the chart is empty space
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.CollapsibleSpaceThreshold = 25;
// If all data points are significantly far from zero, 
// the Chart will calculate the scale minimum value
chart1.ChartAreas["Default"].AxisY.ScaleBreakStyle.IsStartedFromZero = AutoBool.Auto;

此代码示例直接从mschart 示例中提取,如果您使用图表控件,则必须下载这些示例。

于 2013-10-14T11:06:43.287 回答