2015-03-13 63 views
0

我正在嘗試使用MS Chart來創建多系列折線圖。我已經成功創建了它。但問題是x軸標籤重複。下面是創建MS圖表:重複使用X-AXIS標籤

誰能告訴我,爲什麼幾個月重複?我怎麼能避免它? 更新: 以下是代碼:

DateTime[] xvals = {DateTime.Now.AddMonth(-1),DateTime.Now}; 
decimal[] gvals = {4.3,0}; 
decimal[] ypvals = {0,0}; 
decimal[] yvals = {3.5,0}; 

         // create the chart 
var chart = new Chart(); 
chart.Size = new Size(600, 250); 
chart.BorderSkin.SkinStyle = BorderSkinStyle.Emboss; 
chart.BorderlineColor = System.Drawing.Color.FromArgb(26, 59, 105); 
chart.BorderlineWidth = 3; 

var chartArea = new ChartArea(); 
chartArea.AxisX.MajorGrid.LineWidth = 0; 
//Remove Y-axis grid lines 
chartArea.AxisY.MajorGrid.LineWidth = 0; 
chartArea.AxisX.LabelStyle.Format = "MMM"; 
chartArea.AxisX.MajorGrid.LineColor = Color.LightGray; 
chartArea.AxisY.MajorGrid.LineColor = Color.LightGray; 
chartArea.AxisX.LabelStyle.Font = new Font("Consolas", 8); 
chartArea.AxisY.LabelStyle.Font = new Font("Consolas", 8); 
chart.ChartAreas.Add(chartArea); 

var series = new Series(); 
series.Name = "Y"; 
series.Legend = "Y"; 
series.ChartType = SeriesChartType.Line; 
series.XValueType = ChartValueType.DateTime; 
series.IsVisibleInLegend = true; 
series.Color = Color.Red; 
series.IsValueShownAsLabel = true; 
series.BorderWidth = 2; 
chart.Series.Add(series); 
// bind the datapoints 
chart.Series[0].Points.DataBindXY(xvals, yvals); 


         var series2 = new Series(); 
         series2.Name = "YP"; 
         series2.Legend = "YP"; 
         series2.ChartType = SeriesChartType.Line; 
         series2.XValueType = ChartValueType.DateTime; 
         series2.IsVisibleInLegend = true; 
         series2.Color = Color.Yellow; 
         series2.IsValueShownAsLabel = true; 
         series2.BorderWidth = 2; 
         chart.Series.Add(series2); 

         // bind the datapoints 
         chart.Series[1].Points.DataBindXY(xvals, ypvals); 


         var series3 = new Series(); 
         series3.Name = "G"; 
         series3.Legend = "GG"; 
         series3.ChartType = SeriesChartType.Line; 
         series3.XValueType = ChartValueType.DateTime; 
         series3.IsVisibleInLegend = true; 
         series3.Color = Color.Blue; 
         series3.IsValueShownAsLabel = true; 
         series3.BorderWidth = 2; 
         chart.Series.Add(series3); 

         // bind the datapoints 
         chart.Series[2].Points.DataBindXY(xvals, gvals); 



         // draw! 
         chart.Invalidate(); 

         // write out a file 
         chart.SaveImage("D:\\cha.png", ChartImageFormat.Png); 
+0

我已經更新了這個問題。添加了代碼@ gunr2171 – 2015-03-13 19:43:43

+0

你會期待什麼?你只有一個x值,你不會輸出超過一個月。嘗試添加更多的x值,如果這是合理的,並顯示日子! – TaW 2015-03-13 19:54:11

+0

有兩個x值。我也嘗試了四個值...仍然重複。 @TaW – 2015-03-14 05:45:58

回答

0

好吧,我已經得到了解決。

我剛纔已轉換的

​​

TO:

series1.XValueType = ChartValueType.String; 
series2.XValueType = ChartValueType.String; 
series3.XValueType = ChartValueType.String; 

而是採用在xAxisValues陣列幾個月的名字作爲字符串,日期和。

DateTime[] xvals = {DateTime.Now.AddMonth(-1),DateTime.Now}; 

TO:

string[] xvals = {DateTime.Now.AddMonth(-1).ToString("MMM"),DateTime.Now.ToString("MMM")}; 

希望這可以幫助其他人。