【发布时间】:2016-02-02 08:48:49
【问题描述】:
【问题讨论】:
【问题讨论】:
我认为这样做的唯一方法是使用自定义标签。这意味着接管从控件添加标签的工作并自己手动完成,这可能适合也可能不适合您的情况。
"Labeling Axes Using Custom Labels" section of the MSDN documentation 对此进行了更详细的描述:
使用自定义标签为轴提供自定义文本。自定义标签是 使用 CustomLabels 集合属性实现。如果你使用 自定义标签,图表区域不显示来自数据的轴标签 点。
使用 CustomLabel 对象时,您必须设置 ToPosition 和 每个 CustomLabel 对象的 FromPosition 属性,以及这些 属性必须指定标签文本区域的宽度。不要 为这两个属性分配相同的值,因为它们 代表一个范围。将自定义标签直接放置在数据下方 点及其关联的刻度线,将 FromPosition 属性设置为 该数据点轴的值减去刻度线的一半 间隔,并将 ToPosition 属性设置为该数据的值 点的轴加上刻度线间隔的一半。例如,如果一个 轴的间隔为 1 (1, 2, 3,…),并且您想使用自定义 X=2 处的标签,然后将 ToPosition 和 FromPosition 属性设置为 分别为 1.5 和 2.5。
RowIndex 属性指定自定义标签在哪一行 显示。如果在第一个标签行中使用自定义标签,则图表 区域不显示轴刻度的任何标签。唯一的标签 第二行及以后允许的是自定义标签。
在您的情况下,您不希望标签直接位于刻度线下方,因此在上面引用文本的示例中,您将位置 ToPosition 设置为 2,将 FromPosition 设置为 3。
查看您的特定图表,如果 x 轴值为 DateTimes,您需要检查 To/From Positions 是否适用于 DateTimes。如果没有,您可能需要将这些值转换为序列号(您可以使用例如DateTime.ToOADate() 来执行此操作),然后再将它们用于 x 轴。这不会影响显示的内容,因为无论如何您都将用自己的标签替换这些标签,然后您可以根据需要对其进行格式化。
【讨论】:
常规标签将始终与数据点一起显示。但是您可以显示它们之间的刻度线。
根据数据类型和Interval,您可以设置MajorTickMark.IntervalOffset:
chart1.ChartAreas[0].AxisX.MajorTickMark.IntervalOffset =
chart1.ChartAreas[0].AxisX.Interval / 2f;
注意:为此,您需要设置Interval。默认设置为0.0,因此您需要将其设置为其他值! 1 的大部分值都可以。
更难的选择是使用CustomLabels 来实现这一点。同样的结果需要做更多的工作。不是很推荐。可以看一个例子here
【讨论】:
CustomLabels..