2011-08-26 147 views
3

我有一个MSChart,看起来像下面。MSChart自定义xaxis标签

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

我想要做的就是调整x轴标签:

  • 我要标注每列,而不是每5
  • 我想指定每个标签是什么。

什么我不明白的是,当我有它的“所有年份”视图(如下图所示),这个数字我指定为使用

oDataPoint_PV.SetValueXY(年,视图的x值)

使它成为我指定显示为标签的年份,但由于某些原因,在Months视图中,它从1开始,而不是我设置的第一个值,在此示例中恰好为13。

oDataPoint_PV.SetValueXY(天,查看)

在图表2007年6月,它应该在13开始,到7月12日。

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

回答

17

要回答你的第一个问题:“我要标注每列,并不是每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); 

如果是这样,随着时间日期标签工作时,微软图表对象有可以设置来操作它是如何显示的附加功能。以下是一些您可能会发现有用的附加信息。

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 S为标签的间隔偏移量可能是一个问题:

String("MM-dd"),而不是DateTime

chart.ChartAreas[0].AxisX.Interval = 1;