绘制日期X轴和时间使用ZedGraph和C#Y轴 [英] Draw date on X axis and time on Y axis using ZedGraph and C#

查看:1026
本文介绍了绘制日期X轴和时间使用ZedGraph和C#Y轴的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在ZedGraph,我怎么画一个时间(比如00:00,02:00,04:00,等等),Y轴和日期(如12-APR-11,13-APR-11,14 -Apr-11等),在X轴上?
酒吧设置已设置为 BarType.Stack

In ZedGraph, how do I draw a time (like 00:00, 02:00, 04:00, etc.) on the Y axis and date (like 12-Apr-11, 13-Apr-11, 14-Apr-11, etc.) on the X axis? The bar settings has been set to BarType.Stack.

示例代码将是非常有益的。

Sample code will be very helpful.

推荐答案

下面是我构建了一个样本。我不知道什么样的数据,你会沿Y轴使用时间格式,除了类似的时间累计量(如时间雇员人数的工作)。

Here is a sample that I constructed. I was not sure what sort of data you would plot along the Y Axis using a time format except for something like an accrued amount of time (such as number of hours employees worked).

ZedGraph使用了 XDate 格式沿轴,这是从日期时间转换双打的时间。然而,在堆叠吧,我不知道,如果ZedGraph正确汇集时间(我无法得到它的工作)。因此,在我的例子中,我使用了直线型的Y轴和改变,这样它显示为小时和分钟的格式。

ZedGraph uses an XDate format for time along the axes, which are doubles converted from datetimes. However in a stacked bar, I am not sure if ZedGraph can aggregate the times properly (I couldn't get it to work). Thus, in my example I used a Linear type for the Y Axis and changed the format so that it displays as hours and minutes.

请注意,这两个的最小值和最大值轴'秤已设置完毕。这是沿X轴尤其重要,因为自动设置得到它是错误的。一些我指定清理轻微抽动标识等其他设置。

Note that the min and max of both axes' scales have been set. This is especially important along the X axis, as the auto setting gets it wrong. Some of the other settings I specify clean up the minor tic marks, etc.

下面,显示的是期间每一天的三名雇员工作小时数的堆积柱形图的例子

Here's an example showing a stacked bar graph for number of hours worked by three employees during each day:

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);



堆积小时条形图

这篇关于绘制日期X轴和时间使用ZedGraph和C#Y轴的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆