MSChart自定义x轴标签

4

我有一个看起来像下面这样的 MSChart。

http://11.a.hostable.me/images/june2007.JPG

我想做的是调整x轴标签:
  • 我想给每个列都打上标签,而不是每隔5个
  • 我想指定每个标签是什么。
当我将它放在“所有年份”视图下时(如下图所示),我不明白的是,我使用以下代码作为XValue的数字:

oDataPoint_PV.SetValueXY(Year, Views)

我设置的第一个值是13,但在“月”视图下它却从1开始。

oDataPoint_PV.SetValueXY(Day, Views)

在2007年6月的图表中,它应该从13开始,到7月12日结束。

http://11.a.hostable.me/images/years.JPG

2个回答

20
回答你的第一个问题:“我想给每一列都打标签,而不是每5列打一次标签。”
您可以使用interval属性来指定显示标签的频率。
chart1.ChartAreas[0].AxisX.Interval = [desired interval];
或者仅为标签设置间隔,使用以下内容:
chart1.ChartAreas[0].AxisX.LabelStyle.Interval = [desired interval];

如果我理解你问题的结尾正确,你不想让你的图表从零开始,你可以使用标签偏移量。

chart1.ChartAreas[0].AxisX.LabelStyle.Offset = 1;
这将跳过你提到的第一个标签,即零。 第二个目标“我想指定每个标签是什么”可以通过几种方式解决。 一种方法是在(x或y)轴上显示(x或y)值,我相信这是你根据问题中提供的信息使用的方法。 另一种方法是为每个数据点手动设置轴标签。
chart1.Series[0].Points[0].AxisLabel = "your label"

当您添加数据点时,还可以添加标签信息。

chart1.Series[0].Points.Add(new DataPoint(4, 4) { AxisLabel = "your label" });

最后,你可以使用自定义标签来微观管理标签,但这可能更加复杂,根据你输入的内容,你可能不需要使用它们,所以我不会进入这个话题。

另外,你是在使用字符串还是DateTime对象来设置你的xvalue?类似这样:

Chart1.Series[0].XValueType = ChartValueType.DateTime;
System.DateTime x = new System.DateTime(2008, 11, 21);
Chart1.Series[0].Points.AddXY(x.ToOADate(), 34);
如果是这样的话,在使用日期时间标签时,Microsoft图表对象有额外的功能可以设置来操纵它的显示。以下是一些您可能会发现有用的附加信息。 http://msdn.microsoft.com/en-us/library/dd456614.aspx 然后,您可以利用这些属性(还有更多,但我不经常使用日期)
chart1.ChartAreas[0].AxisX.LabelStyle.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Days;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days;

如果由于误解我没有正确回答您的问题,请让我知道并修改您的问题,以引导我朝正确的方向前进。

(提供使用实际数据生成图表的代码示例、生成的图像及其应该展示的内容会非常有帮助——您已经提供了部分信息,但这还不够完整)

祝你好运!


0
我发现,如果您不将日期转换为标签的字符串,间隔偏移可能会成为一个问题:
使用 String("MM-dd") 而不是 DateTime
chart.ChartAreas[0].AxisX.Interval = 1;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接