5

人数を表す棒グラフがあります。数人しかいない場合、Y 軸は値を示します: 0.5、1、1.5 など ... ちょっとばかげているように見えます。

  • 間隔を 1 ( AxisY.LabelStyle.Interval = 1) にオーバーライドできますが、100 人がいる場合は機能しません
  • を設定できますが AxisY.Maximum = 10、100 人では機能しません。
  • を設定できます AxisY.LabelStyle.Format = {#}が、各ラベルを丸めると [1,1,2,2] と表示されます

コンテンツに応じて最初の 2 つのオプションのいずれかを動的に利用できることはわかっていますが、ラベルを「整数のみ」にする自動方法があるかどうか疑問に思いましたか?

4

2 に答える 2

0

次の Customize イベントはトリックを行います。私は基本的に正規表現を使用して、整数ではないラベルを検出し、それらを削除しています。ただし、間隔を 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 に答える