使用ZedGraph和C#在X轴上绘制日期,在Y轴上绘制时间

|| 在ZedGraph中,如何在Y轴和日期(例如11-Apr-11、11-Apr-11、14-Apr-)上绘制时间(例如00:00、02:00、04:00等) 11等)在X轴上? 条形设置已设置为
BarType.Stack
。 示例代码将非常有帮助。     
已邀请:
这是我构建的示例。我不确定您会使用时间格式沿Y轴绘制什么样的数据,除了诸如累计时间(例如员工工作的小时数)之类的东西。 ZedGraph沿轴的时间使用ѭ1格式,从日期时间转换为双精度。但是,在堆叠的栏中,我不确定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);
    

要回复问题请先登录注册