【问题标题】:ASP.NET Chart: How to plot series points using for loopASP.NET 图表:如何使用 for 循环绘制系列点
【发布时间】:2014-07-23 16:23:24
【问题描述】:

我已经以编程方式构建了一个图表,但我现在要做的是格式化 X 轴,以便每个点代表一天中的一个时间,采用 24 小时格式。

我想从“04:00:00”开始计时,一直到“16:00:00”,间隔 15 分钟 - 我需要在 X 轴上绘制 40 个点。不要担心 Y 轴值。我知道我想做什么来使用数据库填充这些值。

这是我到目前为止已经开始的(如下所示),但我还无法想象如何使用 for 循环来使这项工作成为可能。

有人能告诉我如何实现这个目标吗?

//for (int i = 0; i < 41; i++)
    //{
    Chart1.Series[0].Points.AddXY("04:00:00", 5);
    Chart1.Series[0].Points.AddXY("04:15:00", 10);
    Chart1.Series[0].Points.AddXY("04:30:00", 15);
    Chart1.Series[0].Points.AddXY("04:45:00", 25);
    ...
    ...
    ...
    Chart1.Series[0].Points.AddXY("16:00:00", 25);
//}

这是我的完整代码:仅供参考。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.DataVisualization.Charting;

namespace DishMES
{
   public partial class WebForm1 : System.Web.UI.Page
   {
    protected void Page_Load(object sender, EventArgs e)
    {
        buildRepairedChart();
    }

    public void buildRepairedChart()
    {
        //CREATE CHART
        Chart1.Height = Unit.Pixel(200);
        Chart1.Width = Unit.Pixel(900);

        //DEFINE CHART AREA
        ChartArea chartArea = new ChartArea();
        Chart1.ChartAreas.Add(chartArea);

        ChartArea3DStyle areaStyle = new ChartArea3DStyle(chartArea);
        areaStyle.Rotation = 0;
        Axis yAxis = new Axis(chartArea, AxisName.Y);
        Axis xAxis = new Axis(chartArea, AxisName.X);
        var ca = Chart1.ChartAreas[0];
        ca.AxisX.LabelStyle.Format = "hh:mm:ss";
        ca.AxisX.Minimum = 0;
        ca.AxisX.Interval = 1;


        // BUILD CHART SERIES
        Series series = new Series("Default");
        Chart1.Series.Add(series);
        var s = Chart1.Series[0];
        s.ToolTip = "#VALX{t}";
        s.XValueType = ChartValueType.Time;

        //TIME STUFF


        // BIND DATA TO CHART
        //for (int i = 0; i < 41; i++)
        //{
        Chart1.Series[0].Points.AddXY("04:00:00", 5);
        Chart1.Series[0].Points.AddXY("04:15:00", 10);
        Chart1.Series[0].Points.AddXY("04:30:00", 15);
        Chart1.Series[0].Points.AddXY("04:45:00", 25);
        //}
        Chart1.DataBind();
    }
}

}

【问题讨论】:

    标签: c# asp.net for-loop charts


    【解决方案1】:

    假设您的数据来自source,例如列表或数据集,

    Series s = new Series();
    int i=0;
    foreach(var d in source)
    {
        s.Points.AddXY(d.Date, d.Point); //or d.Key,d.Value, or d["Date"],d["Point"]
    }
    
    Chart1.Series.Add(s);
    

    我真心希望您不必手动绘制日期。

    var list = new Dictionary<DateTime,object>();
    DateTime start = DateTime.ParseExact(
            "3:45:00 AM", 
            "h:mm:ss tt", 
            CultureInfo.InvariantCulture);
    for(int i=0;i<48;i++)
    {
        start=start.AddMinutes(15);
        list.add(start,source[i]);
    }
    

    然后按照上面的操作。

    【讨论】:

      【解决方案2】:

      答案如下:

              // BIND DATA TO CHART
              for (int i = 0; i < 43; i++)
              {
                  //TIME STUFF FOR SQL
                  int startBin = 14400;
                  int endBin = 15300;
                  TimeSpan stime = TimeSpan.FromSeconds(startBin + (i * 900));
                  TimeSpan etime = TimeSpan.FromSeconds(endBin + (i * 900));
                  string xAxisStart = string.Format("{0:D2}:{1:D2}:{2:D2}", stime.Hours, stime.Minutes, stime.Seconds);
                  string xAxisStop = string.Format("{0:D2}:{1:D2}:{2:D2}", etime.Hours, etime.Minutes, etime.Seconds);
      
                  //TARGET SERIES 
                  RepairedChart.Series["REPAIRED"].Points.AddXY(xAxisStart, getRepaired2(xAxisStart, xAxisStop));
                  RepairedChart.Series["TARGET"].Points.AddXY(xAxisStart, getScheduleRepairTarget(xAxisStart, xAxisStop));
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-06
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 2016-07-14
        • 1970-01-01
        相关资源
        最近更新 更多