【问题标题】:C# MSChart: Draw axis line at 0 even with negative valuesC# MSChart:即使使用负值也可以在 0 处绘制轴线
【发布时间】:2013-02-22 13:13:19
【问题描述】:

使用 XML 文件中的数据(数据可能并不总是相同,请记住这一点)绘制损益图,并使用 MSChart 库,我目前获得了两个条形图,一个用于正值另一个用于负值。将这两个系列组合在一个 ChartArea 中,我目前获得的图表如下所示:

http://i.imgur.com/K3BHXnS.png

但是,这仍然不是我想要的。我希望 Y 轴的“中”线(图中 5.4 的位置)为“0”。但是,我检查过的每种方法都只能在没有负值的情况下执行此操作,这就是为什么它在我的情况下不起作用的原因。使用“Crossing”属性也是不正确的,因为它在我希望我的标签使用“0”作为“基础”的地方画了一条额外的线,如果你愿意的话。换句话说,我希望我的图表看起来像这样:

http://i.imgur.com/k2WVGck.png

一旦我知道如何显示 0 线,我将能够处理标签的不规则值,这就是为什么知道这一点对我来说很重要。我将非常感谢您能给我的任何帮助,因为我自己的研究到目前为止还没有结果。

【问题讨论】:

  • 我希望我的图表看起来像这样的示例来源:datameer.com/documentation/display/DAS21/…
  • mschart 堆叠列的默认行为是完全按照您的意愿行事。所以问题就变成了,你是如何改变它以获得非零 Y 原点的?发布一些代码将有助于找到问题的根源。

标签: c# charts mschart bar-chart


【解决方案1】:

确保让控件决定 Y 轴的最佳 Min 和 Max。 所以不要这样做:

chart1.ChartAreas[0].AxisY.Maximum = mymax;
chart1.ChartAreas[0].AxisY.Minimum = mymin;

而是确保将auto 模式设置为:

chart1.ChartAreas[0].AxisY.Maximum = double.NaN;
chart1.ChartAreas[0].AxisY.Minimum = double.NaN;

【讨论】:

  • 此解决方案完美运行。问题是我对需要显示的其他图表使用了不同的解决方案,但显然将这种解决方案应用于这种类型的图表并不是要走的路。这已得到纠正,轴现在按预期运行。非常感谢您的帮助,非常感谢。
【解决方案2】:

另一种方法是为您的 Y 轴设置一个间隔。

chart1.ChartAreas["ChartArea1"].AxisY.Interval = 25;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多