【问题标题】:Draw date on X axis and time on Y axis using ZedGraph and C#使用 ZedGraph 和 C# 在 X 轴上绘制日期和在 Y 轴上绘制时间
【发布时间】:2011-04-14 05:50:44
【问题描述】:

在 ZedGraph 中,如何在 Y 轴和日期(如 12-Apr-11、13-Apr-11、14)上绘制时间(如 00:00、02:00、04:00 等) -Apr-11 等)在 X 轴上? 栏设置已设置为BarType.Stack

示例代码会很有帮助。

【问题讨论】:

    标签: c# winforms zedgraph


    【解决方案1】:

    这是我构建的示例。我不确定您会使用时间格式沿 Y 轴绘制什么样的数据,除了累积的时间量(例如员工工作的小时数)。

    ZedGraph 沿坐标轴使用XDate 格式,这是从日期时间转换而来的双精度值。但是在堆积条形图中,我不确定 ZedGraph 是否可以正确聚合时间(我无法让它工作)。因此,在我的示例中,我为 Y 轴使用了线性类型并更改了格式,使其显示为小时和分钟。

    请注意,两个轴的刻度的最小值和最大值已设置。这在 X 轴上尤其重要,因为自动设置出错了。我指定的其他一些设置会清除小记号等。

    以下示例显示了三名员工每天工作小时数的堆积条形图:

    const int NumberOfBars = 5;
    
    GraphPane myPane = zedGraphControl1.GraphPane;
    myPane.Title.Text = "Employee Hours";
    myPane.BarSettings.Type = BarType.Stack;
    myPane.BarSettings.ClusterScaleWidth = 1D;
    
    // X AXIS SETTINGS
    myPane.XAxis.Title.Text = "Date";
    myPane.XAxis.Type = AxisType.Date;
    myPane.XAxis.Scale.Format = "dd-MMM-yy";
    myPane.XAxis.Scale.MajorUnit = DateUnit.Day;
    myPane.XAxis.Scale.MajorStep = 1;
    myPane.XAxis.Scale.Min = new XDate(DateTime.Now.AddDays(-NumberOfBars));
    myPane.XAxis.Scale.Max = new XDate(DateTime.Now);
    myPane.XAxis.MajorTic.IsBetweenLabels = true;
    myPane.XAxis.MinorTic.Size = 0;
    myPane.XAxis.MajorTic.IsInside = false;
    myPane.XAxis.MajorTic.IsOutside = true;
    
    // Y AXIS SETTINGS
    myPane.YAxis.Title.Text = "Hours Worked";
    myPane.YAxis.Type = AxisType.Linear;
    myPane.YAxis.Scale.Format = @"00:\0\0";
    myPane.YAxis.Scale.Min = 0;
    myPane.YAxis.Scale.Max = 24;
    myPane.YAxis.Scale.MajorStep = 1;
    myPane.YAxis.MinorTic.Size = 0;
    
    // Construct some sample data
    Random r = new Random();
    List<double> DatesX = new List<double>();
    double[] JohnHours = new double[NumberOfBars];
    double[] JoanHours = new double[NumberOfBars];
    double[] JaneHours = new double[NumberOfBars];
    
    for (int i = 0; i < NumberOfBars; i++)
    {
        DatesX.Add(new XDate(DateTime.Today.AddDays(-i)));
        JohnHours[i] = r.Next(1, 9);
        JoanHours[i] = r.Next(1, 9);
        JaneHours[i] = r.Next(1, 9);
    }
    myPane.AddBar("John", DatesX.ToArray(), JohnHours, Color.Red);
    myPane.AddBar("Joan", DatesX.ToArray(), JoanHours, Color.Blue);
    myPane.AddBar("Jane", DatesX.ToArray(), JaneHours, Color.Green);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      相关资源
      最近更新 更多