Как установить значения по оси X MSChart с помощью C # - PullRequest
6 голосов
/ 08 июля 2011

У меня есть эти значения XY:

Series S1 = new Series()
S1.Points.AddXY(9, 25);
S1.Points.AddXY(10, 35);
S1.Points.AddXY(11, 15);
chart1.Series.Add(S1);

, но мне нужно показать значения X на графике следующим образом:

X = "9-10"

X = "10-11"

X = "11-12"

Как мне этого добиться?


Пока это то, что янайдено:

Chart

и вот код:

private void Form1_Shown(object sender, EventArgs e)
    {
        chart1.ChartAreas[0].AxisX.Minimum = 7;
        chart1.ChartAreas[0].AxisX.Maximum = 15;

        Series S1 = new Series();
        S1.Points.AddXY(9, 25);
        S1.Points.AddXY(10, 35);
        S1.Points.AddXY(11, 15);
        chart1.Series.Add(S1);

        chart1.Series[0].Points[0].AxisLabel = "9-10";
        chart1.Series[0].Points[1].AxisLabel = "10-11";
        chart1.Series[0].Points[2].AxisLabel = "11-12";

, как вы видите, я работаю с числами и устанавливаю тексты для меток оси X,но я могу сделать это только для значений DataPoints, мне это нужно для всего диапазона значений.

Любые идеи, пожалуйста?

Ответы [ 2 ]

7 голосов
/ 13 июля 2011

Вот ответ благодаря sipla:

работа с пользовательскими метками и событием Customize:

string[] range = new string[10];

    private void Form1_Shown(object sender, EventArgs e)
    {
        chart1.ChartAreas[0].AxisX.Minimum = 7;
        chart1.ChartAreas[0].AxisX.Maximum = 16;

        range[0] = "";
        range[1] = "7-8";
        range[2] = "8-9";
        range[3] = "9-10";
        range[4] = "10-11";
        range[5] = "11-12";
        range[6] = "12-1";
        range[7] = "1-2";
        range[8] = "2-3";
        range[9] = "";

        Series S1 = new Series();            
        S1.Points.AddXY(9, 25);
        S1.Points.AddXY(10, 35);
        S1.Points.AddXY(11, 15);
        chart1.Series.Add(S1);            

    }

    int count;
    private void chart1_Customize(object sender, EventArgs e)
    {
        count = 0;
        foreach (CustomLabel lbl in chart1.ChartAreas[0].AxisX.CustomLabels)
        {
            lbl.Text = range[count];
            count++;
        }                        
    }

Graph

1 голос
/ 16 марта 2017

Интересно, почему ваш массив диапазонов так растянулся? Было бы чище поместить ваш массив в скобки, как он был определен и также инициализирован. например

string[] range = new string[10] {"","7-8","8-9","9-10","10-11","11-12","12-1","1-2","2-3",""};
/*
  The tenth element is also likely unnecessary 
  as it simply repeats the first     
  element of the array
*/
...