【问题标题】:Charts candle width changes when adding another series添加另一个系列时图表蜡烛宽度变化
【发布时间】:2018-02-22 22:50:18
【问题描述】:

我有一个烛台图,显示价格,两个系列分别代表价格和数量。这一切正常,显示如下。

这些蜡烛的点宽使用_stockSeries["PointWidth"] = "0.6";设置

然后,我将新系列添加到同一图表区域,指示图表上的点,蜡烛宽度变为非常细。然后我必须将 PointWidth 设置为 ~15000 以使蜡烛具有合理的宽度。据我所知,这个数字似乎与图表上的任何内容都没有关系,并且比原来的 0.6 大很多。谁能解释这里发生了什么?

用于添加点的代码是

        var genericPoints = new Series(name);

        if (style != MarkerStyle.None)
            genericPoints.MarkerStyle = style;

        genericPoints.ChartType = SeriesChartType.FastPoint;
        foreach (var price in points)
            genericPoints.Points.AddXY(price.TimeStamp, price.Value);

        _chart.Series.Add(genericPoints);

【问题讨论】:

  • 听起来很奇怪。 PointWidth 从 0f 到 2f,所以你的数字没有意义。您是否使用 fastpoint 以外的其他类型进行了测试?你有多少分?
  • @TaW 是的,似乎所有图表类型都会发生这种情况。我也尝试过 Point、Line 和 FastLine。我要补充大约 20 点。如果我添加没有点的系列,那么它对蜡烛没有影响。如果我使用PixelPointWidth,那么添加另一个系列不会影响蜡烛。
  • 嗯,我无法复制。将 PointWidth 重置为合理的值,即低于1。您可能还想尝试使用PixelPointWidth cust.property,请参阅here。你的 x 值看起来,嗯有点大。确定他们是正确的?
  • @TaW PixelPointWidth 工作正常。 (我在上面提到过)。你知道我怎样才能得到图表区域的宽度吗?有ChartArea.Position,但我认为它的宽度为零,因为它设置为自动大小。我将尝试创建一个 SSCCE。 X 值是 ms 纪元时间 - 它们是正确的,只是还不够优雅。这是一项正在进行的工作。 :-)
  • 你可以通过调用 ToRectangleF 或者调用 sth 来获取它。就像之前的axisrescale一样。在匆忙的atm ..你可能想要Innerplotposition。请参阅here 了解我的几篇文章..

标签: c# winforms charts candlestick-chart


【解决方案1】:

遇到了类似的问题,解决了

    Private Sub chart_PrePaint(sender As Object, e As ChartPaintEventArgs) Handles chart.PrePaint
    Dim areasize As Double
    areasize = chart.Width * 0.6
    chart.Series("Candles")("PixelPointWidth") = areasize / (chart.Series("Candles").Points.Count)

    End Sub

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2021-12-23
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多