2011-07-08 50 views
6

tôi có những giá trị XY:Làm thế nào để thiết lập giá trị trong trục x MSChart sử dụng C#

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

nhưng tôi cần phải hiển thị các giá trị X trong đồ thị như thế này:

X = "9-10 "

X =" 10-11"

X = "11-12"

Làm thế nào tôi có thể đạt được điều đó?


Cho đến nay đây là những gì tôi đã tìm thấy:

Chart

và đây là mã:

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

như bạn có thể nhìn thấy tôi làm việc với những con số, và thiết lập văn bản cho nhãn trục X, nhưng tôi có thể làm điều đó chỉ cho các giá trị DataPoints, tôi cần nó cho toàn bộ phạm vi giá trị.

Bạn có ý tưởng nào không?

Trả lời

7

Dưới đây là câu trả lời nhờ sipla:

làm việc với Nhãn tùy chỉnh và sự kiện 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

Tò mò là tại sao mảng phạm vi của bạn đang nằm ườn ra như thế. Nó sẽ được sạch hơn để đặt mảng của bạn trong ngoặc như nó đã được xác định và cũng khởi tạo. ví dụ.

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 
*/ 
Các vấn đề liên quan