2013-12-18 20 views
6

Đây là mã để tạo 3 biểu đồ. Tôi muốn gắn chú giải vào bên trong khu vực của mỗi biểu đồ nhưng tôi nhận được truyền thuyết ở dưới cùng. Tôi đã sử dụng DockedToChartArea nhưng đó là không sử dụng. Tôi muốn có một huyền thoại bên trong mỗi khu vực biểu đồ.Gắn truyền thuyết trong khu vực biểu đồ trong C#

enter image description here

for (int t = 0; t < ARF.Rows.Count; t += 1) 
{ 
    dv.RowFilter = FilterString1.ToString(); 

    Chart1.Series.Add("Series1" + t.ToString()); 
    Chart1.ChartAreas.Add("ChartArea1" + t.ToString()); 
    Chart1.Series[t].ChartArea = "ChartArea1" + t.ToString(); 

    if (dtReportDetails.Rows[0].ItemArray[7].ToString() == "Bar") 
    { 
     Chart1.Series[t].ChartType = SeriesChartType.Column; 
     Chart1.Series[t].BorderWidth = 2; 
     Chart1.Series[t].ToolTip = "(#VALX,#VALY)"; 
     Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisX.Title = "Learning Domains"; 
     Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisY.Title = "Covered"; 
     Chart1.Legends.Add("Legend1" + t.ToString()); 
     Chart1.Legends["Legend1" + t.ToString()].Enabled = false; 
     // Chart1.Legends["Legend1" + t.ToString()].Docking = Docking.Bottom; 
     Chart1.Legends["Legend1" + t.ToString()].Alignment = System.Drawing.StringAlignment.Center; 
     Chart1.Legends["Legend1" + t.ToString()].DockedToChartArea = "ChartArea1" + t.ToString(); 
     // Chart1.Legends["Legend1" + t.ToString()].IsDockedInsideChartArea = false; 
     Random random = new Random(); 
     foreach (var item in Graph.Series[0].Points) 
     { 
      System.Drawing.Color c = System.Drawing.Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); 
      item.Color = c; 

     } 

     Chart1.Series[t]["PointWidth"] = "0.2"; 
     Chart1.Series[t]["BarLabelStyle"] = "Center"; 
     Chart1.Series[t]["PixelPointDepth"] = "99"; 
     Chart1.Series[t]["DrawingStyle"] = "Cylinder"; 
    } 
    else if (dtReportDetails.Rows[0].ItemArray[7].ToString() == "Pie") 
    { 
     Chart1.Series[t].ChartType = SeriesChartType.Pie; 
     Chart1.Legends.Add("Legend1" + t.ToString()); 
     Chart1.Legends["Legend1" + t.ToString()].Enabled = true; 
     Chart1.Legends["Legend1" + t.ToString()].Docking = Docking.Bottom; 
     Title t2 = new Title(); 
     t2.Name = "ChartArea1" + t.ToString(); 
     // Chart1.Legends[t].DockedToChartArea = t2.Name; 
     //Chart1.Legends[t].IsDockedInsideChartArea = true; 
     //Chart1.Legends["Legend1" + t.ToString()].Alignment = System.Drawing.StringAlignment.Center; 
     Chart1.Legends[t].Enabled = true; 
     // Chart1.Legends[t].Docking = Docking.Bottom; 
     //Chart1.Legends[t].IsDockedInsideChartArea = true; 
     Chart1.Legends[t].Alignment = System.Drawing.StringAlignment.Center; 
     Chart1.Series[t].Label = "#PERCENT{P2}"; 
     Chart1.Series[t].LegendText = "#VALX"; 
     } 
     else if (dtReportDetails.Rows[0].ItemArray[7].ToString() == "Line") 
     { 
     Chart1.Series[t].ChartType = SeriesChartType.Line; 
     Chart1.Series[0].MarkerStyle = MarkerStyle.Circle; 
     Chart1.Legends.Add("Legend1" + t.ToString()); 
     Chart1.Legends["Legend1" + t.ToString()].Enabled = false; 
     //Chart1.Legends["Legend1" + t.ToString()].Docking = Docking.Bottom; 
     Chart1.Legends["Legend1" + t.ToString()].Alignment = System.Drawing.StringAlignment.Center; 
     Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisX.LabelStyle.Format = "dd-MMM-yyy"; 
     Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisX.Title = "Date"; 
     Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisY.Title = "Average Score (%) "; 
     Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisY.Minimum = 0; 
     Chart1.ChartAreas["ChartArea1" + t.ToString()].AxisY.Maximum = 100; 
     // Chart1.ChartAreas["ChartArea1"].AxisY.Interval = 10; 
     Chart1.Series[t].ToolTip = "Date :#VALX Avg Score(%) :#VALY"; 
     Chart1.Legends["Legend1" + t.ToString()].IsDockedInsideChartArea = false; 
     } 
     else 
     { 
      /// 
     } 
     Title tt = new Title(); 
     tt.Name = "ChartArea1" + t.ToString(); 
     Title l1 = new Title(); 
     l1.Name = "Legend1" + t.ToString(); 
     // tt.Text = "Performance Warehouses"; 
     Chart1.Titles.Add(tt); 
     Chart1.Titles[tt.Name].Text = char.ToUpper(UserName[0]) + UserName.Substring(1);//char.ToUpper(s[0]) + s.Substring(1) 
     Chart1.Titles[tt.Name].DockedToChartArea = tt.Name; 
     //Chart1.Legends[l1].DockedToChartArea = tt.Name; 
     Chart1.Titles[tt.Name].IsDockedInsideChartArea = false; 
     Chart1.Titles[tt.Name].Font = new System.Drawing.Font("Arial", 13); 
     Chart1.Titles[tt.Name].ForeColor = System.Drawing.Color.Black; 
     Chart1.Series[("Series1" + t).ToString()].Points.DataBindXY(dv, dtReportDetails.Rows[0].ItemArray[4].ToString(), dv, dtReportDetails.Rows[0].ItemArray[5].ToString()); 
}  
+0

bạn đang sử dụng 'dotnethighcharts' hoặc' highcharts'? – SPandya

+0

Tôi đang sử dụng thuộc tính biểu đồ dạng chấm/ – user2783430

+0

Bạn đang sử dụng 'dotnethighcharts' hoặc' highcharts'? – SPandya

Trả lời

2

Cảm ơn bạn.

if (t == ARF.Rows.Count) 
{ 
    for (int s = 0; s < ARF.Rows.Count; s++) 
    { 
     Chart1.Legends.Add(new Legend("Legends1" + s.ToString())); 
     Chart1.Series["Series1" + s.ToString()].Legend = "Legends1" + s.ToString(); 
     Chart1.Legends["Legends1" + s.ToString()].DockedToChartArea = "ChartArea1" + s.ToString(); 
    } 
} 
2

Bạn có thể tự điều chỉnh vị trí trò chuyện huyền thoại bởi

Chart1.Legends["Legend1"].Position.Auto = false; 
Chart1.Legends["Legend1"].Position = new ElementPosition(x, y, width, hight); 

Bạn cần phải xác định vị trí các phần tử bằng ElementPosition với tất cả các thông số cần thiết.

Hoặc bạn cũng có thể kiểm tra Example tại đây giải thích cách điều chỉnh chú thích bên trong khu vực biểu đồ.

+0

Có hữu ích cho bạn không? – SPandya

+0

Trên thực tế tôi đang thêm biểu đồ là động, vì vậy tôi nghĩ rằng không thể tìm thấy vị trí chính xác.Một điều nữa là chi tiết lenged nên đến bên trong chartarea của mỗi biểu đồ. – user2783430

+0

http://i.stack.imgur.com/bWBiU.jpg bạn có thể thấy kết quả đầu ra – user2783430

0

Cảm ơn đề xuất. Tôi đã có vấn đề trong VB.NET nhận được truyền thuyết để thêm vào mỗi chartarea, cho đến khi tôi sử dụng như sau:

For k = 1 To NumChartAreas 
     chart1.ChartAreas.Add(k - 1) 
     chart1.ChartAreas(k - 1).Name = k - 1 

     'Add new legend to each chartarea 
     chart1.Legends.Add(New Legend("Legends" + k.ToString())) 
     chart1.Legends("Legends" + k.ToString()).DockedToChartArea = chart1.ChartAreas(k - 1).Name 
     chart1.Legends("Legends" + k.ToString()).Docking = Docking.Right 

     'Populate series data for this chartarea 
     Cnt = -1 
     For j = 1 To NumSeries 'Number of series in this chartarea 
      Cnt += 1 
      chart1.Series.Add(Cnt) 
      For i = 1 To NumDataPoints ' Number of datapoints in this series 
       chart1.Series(Cnt).Points.AddXY(i, Rnd()) 
      Next 
      chart1.Series(Cnt).Legend = "Legends" + k.ToString 
     Next j 
    Next k 
Các vấn đề liên quan