2011-07-08 77 views
6

tengo estos valores XY:cómo establecer los valores en el eje x MSChart usando C#

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

pero necesito para mostrar los valores de X en el gráfico de la siguiente manera:

X = "9-10 "

X =" 10-11"

X = "11-12"

¿Cómo puedo lograr eso?


Hasta el momento esto es lo que he encontrado:

Chart

y aquí está el código:

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"; 

como se puede ver que trabajo con números, y un conjunto textos para las etiquetas del eje X, pero puedo hacerlo solo para los valores de DataPoints, lo necesito para todo el rango de valores.

¿Alguna idea por favor?

Respuesta

7

Aquí está la respuesta gracias a SIPLA:

que trabajan con etiquetas personalizadas y el evento Personalizar:

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

curiosidad de por qué la matriz de rango estaba tumbado por el estilo. Hubiera sido más limpio poner tu matriz entre corchetes tal como se definió y también se inicializó. p.ej.

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 
*/ 
Cuestiones relacionadas