2013-01-07 43 views
0

我想生成圖表看這個 enter image description hereasp.net柱形圖不與自定義標籤對準,並沒有顯示的列

我幾乎沒有之間的間隔,但有幾個問題我無法解決。 這些列在顯示時沒有空格分隔!最底層的自定義標籤也不會與每列對齊!

這是我得到了我的現有代碼

enter image description here

所以 1)我需要跨x軸 2蔓延列)對齊的自定義標籤,以每列的輸出!

我明白這個問題

任何幫助或反饋,這是產生當前圖像的代碼。請記住我的數據集 「DS」 有這樣的

新興28.45646456 登特14.1456465 音頻27.456456 化妝品43.44564456 獸醫35.15465646645

公共無效GenerateChart(){

//ds is generated and has values 

    Chart2.Series.Clear(); 
    Chart2.Legends.Clear(); 
    Chart2.Titles.Clear(); 


    //if (ConfigurationManager.AppSettings["RunOnLocalhost"] == "True") { 
    if(HttpContext.Current.Request.Url.Host.ToLower() == "localhost"){ 
     Chart2.ImageStorageMode = ImageStorageMode.UseImageLocation; 
    } 


    Chart2.Width = 1000; 
    Chart2.Height = 700; 
    Chart2.BorderlineDashStyle = ChartDashStyle.Solid; 
    Chart2.Titles.Add("Usage Impact By Industry"); 
    Chart2.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.LightGray; 
    Chart2.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.LightGray; 
    Chart2.ChartAreas[0].AxisX.Interval = 1; 
    Chart2.ChartAreas[0].AxisY.Interval = 5; 
    Chart2.ChartAreas[0].AxisX.LabelStyle.Angle = -45; 
    Chart2.ChartAreas[0].AxisY.Title = "(%) Usage Lift"; 
    Chart2.ChartAreas[0].AxisX.TitleFont = new Font("Arial", 16, FontStyle.Bold); 
    Chart2.ChartAreas[0].AxisY.Minimum = -5; 


    string tmp = ""; 
    string sName = ""; 
    double percentage = 0; 
    int i = 1; 
    int x = 1; 
    double index = 0.1; 
    foreach (DataRow Row in ds.Tables[0].Rows) { 

     if (tmp != Row["Industry"].ToString()) { 

      sName = Row["Industry"].ToString(); 
      Chart2.Series.Add(sName); 
      Chart2.Legends.Add(sName).DockedToChartArea = "ChartArea1"; 

      i++; 
     } 

     if (Convert.ToDouble(Row["B4"]) > 0) { 
      percentage = (Convert.ToDouble(Row["After4"]) - Convert.ToDouble(Row["B4"]))/Convert.ToDouble(Row["B4"]) * 100; 
      percentage = Math.Round(percentage, 0); 
     } 
     else { 

      percentage = 0; 
     } 


     Chart2.Series[sName].Points.AddXY(Row["Industry"].ToString(), percentage); 
     Chart2.Series[sName].ChartType = SeriesChartType.Column; 
     Chart2.Series[sName]["PointWidth"] = ".5"; 
     Chart2.Series[sName].IsValueShownAsLabel = true; 
     Chart2.Series[sName].LabelFormat = percentage + "%"; 

     CustomLabel label = new CustomLabel(); 

     label.FromPosition = 0 + index; 
     label.ToPosition = .01 + index; 
     label.Text = Row["Industry"].ToString(); 
     label.RowIndex = 0; 

     Chart2.ChartAreas[0].AxisX.CustomLabels.Add(label); 


     x++; 
     index += 0.2; 
     tmp = Row["Industry"].ToString(); 
    } 



} 
+0

任何幫助傢伙。我會很感激 – Jaylen

回答

0

I值認爲你爲X軸採取了不同的系列。以您的圖表中的單個系列爲例,

<asp:Chart ID="Chart1" runat="server"> 
<Series> 
     <asp:Series Name="Series1" XValueType="Auto" YValueType="Int32"> 
     </asp:Series> 
</Series> 
<ChartAreas> 
     <asp:ChartArea Name="ChartArea1">         
     </asp:ChartArea> 
</ChartAreas> 
</asp:Chart> 

這裏我在圖表中採用了「Series1」。

現在用 「系列1」

Chart2.Series[sName].Points.AddXY(Row["Industry"].ToString(), percentage); 

取代你的 「SNAME」 到

Chart2.Series["Series1"].Points.AddXY(Row["Industry"].ToString(), percentage); 

我覺得問題應該得到解決。

相關問題