MSChart使用 對圖形樣式的部分設置,一般對series設置


使用雷達圖樣式:System.Web.UI.DataVisualization.Charting.SeriesChartType.Radar

 

/// <summary>
    /// 綁定顯示數據webform
    /// </summary>
    /// <param name="chart">要綁定數據chart</param>
    /// <param name="dt">要綁定的數據表</param>
    /// <param name="XCol">圖標X軸的列名</param>
    /// <param name="YCols">圖表Y軸的列名集合,用|分隔</param>
    /// <param name="sTitle">圖表的標題</param>
    /// <param name="chartType">圖表的顯示類型</param>
    /// <param name="IsStaggered">是否錯位顯示列</param>
    public static void ShowBindForPointAndWebForm(System.Web.UI.DataVisualization.Charting.Chart chart, DataTable dt, string XCol, string YCols, string sTitle, System.Web.UI.DataVisualization.Charting.SeriesChartType chartType, bool IsStaggered)
    {
        if (dt == null)
        {
            return;
        }
        string[] col = YCols.Split('|');
        chart.Series.Clear();

        //刻度最大、最小、當前值
        double max = 0;
        double min = 0;
        double cut = 0;

        for (int i = 0; i < col.Length; i++)
        {//一個series代表一個數據列
            System.Web.UI.DataVisualization.Charting.Series series = new System.Web.UI.DataVisualization.Charting.Series();

            series.BorderWidth = 3;
            series.Name = col[i].ToString();
            series.ChartType = chartType;
            series.Points.Clear();

            for (int j = 0; j < dt.Rows.Count; j++)
            {
                cut = double.Parse(dt.Rows[j][col[i].ToString()].ToString());

                //計算刻度最大、最小、當前值
                if (i == 0 && j == 0)
                {
                    max = cut;
                    min = cut;
                }
                if (cut > max)
                {
                    max = cut;
                }
                if (cut < min)
                {
                    min = cut;
                }

                series.Points.AddXY(dt.Rows[j][XCol].ToString() +" "+ string.Format("{0:C0}", cut) +"(元)", cut);//設置的point的位置,不是實體數值
                series.Points[series.Points.Count - 1].IsVisibleInLegend = true;
               
                if (i==0)
                {//是否每個數據列都顯示數據值標簽
                    series.Points[series.Points.Count - 1].Label = cut.ToString();//date[i].ToString();
                }
                else
                {
                    series.Points[series.Points.Count - 1].Label = "";
                }

                series.Points[series.Points.Count - 1].LegendText = dt.Rows[j][XCol].ToString();

                series.Points[series.Points.Count - 1].ToolTip = dt.Rows[j][XCol].ToString() + "" + string.Format("{0:C0}", cut) + "(元)";
            }


            series.CustomProperties = "DrawingStyle=Cylinder";//柱圖為圓形,圖形的樣式
            series["RadarDrawingStyle"] = "Line";//雷達圖中的圖形樣式為折線圖(默認是區域圖)
            series.MarkerStyle = System.Web.UI.DataVisualization.Charting.MarkerStyle.Circle;//圖形中的各個數據點樣式顯示(默認是沒有的),可以修改設置為:方塊、三角等樣式

            chart.Series.Add(series);
        }
        chart.ChartAreas[0].AxisY.LabelStyle.Enabled = false;//Y軸刻度線數據值不顯示
        chart.ChartAreas[0].AxisY.MajorTickMark.Enabled = false;//Y軸刻度線不顯示
        if (max != 0)
        {//判定Y軸數據范圍
            int MaxLength = Convert.ToInt32(max).ToString().Length;
            double MaxChu = Math.Pow(10, MaxLength - 2);

            chart.ChartAreas[0].AxisY.Interval = Math.Ceiling(max / MaxChu) * (MaxChu / 10);
            chart.ChartAreas[0].AxisY.Maximum = Math.Ceiling(max / MaxChu) * MaxChu;
            chart.ChartAreas[0].AxisY.Minimum = 0;
        }

        chart.ChartAreas[0].AxisX.Maximum = dt.Rows.Count + 1;   //設置X軸最大坐標值
        chart.ChartAreas[0].AxisX.Minimum = 0;   //設置X軸最大坐標值

        if (chart.Titles.Count != 0)
        {//添加圖形標題
            chart.Titles[0].Text = sTitle;
        }
        else
        {
            chart.Titles.Add("title1");
            chart.Titles[0].Text = sTitle;
        }
        if (IsStaggered)
        {
            //解決X軸多長則不顯示的問題
            chart.ChartAreas[0].AxisX.Interval = 1;   //設置X軸坐標的間隔為1
            chart.ChartAreas[0].AxisX.IntervalOffset = 1;  //設置X軸坐標偏移為1
            chart.ChartAreas[0].AxisX.LabelStyle.IsStaggered = true;   //設置是否交錯顯示,比如數據多的時間分成兩行來顯示
        }
    }

 

結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM