【问题标题】:MSChart custom xaxis labelingMSChart 自定义 xaxis 标签
【发布时间】:2011-08-26 17:24:32
【问题描述】:

我有一个如下所示的 MSChart。

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

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

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

我不明白的是,当我在“所有年份”视图中看到它时(如下所示),我使用

分配为 XValue 的数字

oDataPoint_PV.SetValueXY(年,浏览量)

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

oDataPoint_PV.SetValueXY(Day, Views)

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

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

【问题讨论】:

    标签: label mschart


    【解决方案1】:

    回答您的第一个问题:“我想标记每一列,而不是每 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;
    

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

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

    祝你好运!

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 1970-01-01
        • 1970-01-01
        • 2023-02-13
        • 2020-04-24
        相关资源
        最近更新 更多