MSChart自定义xaxis标签

时间:2011-08-26 17:24:33

标签: label mschart

我有一个MSChart,如下所示。

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

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

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

我不明白的是,当我在“全年”视图中看到它时(如下所示),我指定为XValue的数字

oDataPoint_PV.SetValueXY(年份,观点)

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

oDataPoint_PV.SetValueXY(日,观点)

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

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

2 个答案:

答案 0 :(得分: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);

如果是这样,当使用日期时间标签时,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;

如果由于误解我没有正确回答您的问题,请告诉我并修改您的问题以指导我朝着正确的方向前进

(用于生成绘图的实际数据的代码示例,生成的图像+您希望它执行的操作而不是图像中显示的内容是有帮助的 - 您有部分内容但它不完整)

祝你好运!

答案 1 :(得分:0)

我发现,如果您不将标签的日期转换为String s,则间隔偏差可能是一个问题:

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

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