如何添加尖峰排队WinForm的图表?(How to add spikes to line on W

2019-10-22 20:36发布

我画线图形上从一个文本文件中读取数字。 有在其上对应于X坐标,而Y坐标是它是在该行上文件的每一行的数。

现在的需求发生了变化,包括“特殊事件”,其中如果后跟字就行了一些特殊的尖峰会出现像下面的图片:

目前我能找到的唯一方法是使用每穗行,但有可能是一个大的这些特殊事件的,因此必须是模块化的。 这似乎是一个有效的和坏的方式来编程。

是否有可能尖峰添加到同一张图上线? 或者是有可能只使用一个额外的线,并打破它(不可见),并只显示其中尖峰意味着待观察?

我已经看过用柱状图但由于在图表上我不能等物品。

Answer 1:

DataPoints一的Line Chart 连接 ,所以它不是possble真正打破它拆开。 然而每段导致DataPoint都可以有自己的色彩和包含Color.Transparent它适合于一个简单的技巧..

无需添加额外的SeriesAnnotations ,您的两个问题是可以解决这样的:

  • 只需添加的“尖峰”你告诉我们,在第2图中,所有你需要做的是插入2个适合数据点,第二个是等同于尖峰连接点。

  • 通过添加一个额外的点与透明色添加你需要“跳”到它的开始未连接线。

这里有两个例子方法:

void addSpike(Series s, int index, double spikeWidth)
{
    DataPoint dp = s.Points[index];
    DataPoint dp1 = new DataPoint(dp.XValue + spikeWidth, dp.YValues[0]);

    s.Points.Insert(index+1, dp1);
    s.Points.Insert(index+2, dp);
}


void addLine(Series s, int index, double spikeDist, double spikeWidth)
{
    DataPoint dp = s.Points[index];
    DataPoint dp1 = new DataPoint(dp.XValue + spikeDist, dp.YValues[0]);
    DataPoint dp2 = new DataPoint(dp.XValue + spikeWidth, dp.YValues[0]);
    DataPoint dp0 = dp.Clone();

    dp1.Color = Color.Transparent;
    dp2.Color = dp.Color;
    dp2.BorderWidth = 2;             // optional
    dp0.Color = Color.Transparent;

    s.Points.Insert(index + 1, dp1);
    s.Points.Insert(index + 2, dp2);
    s.Points.Insert(index + 3, dp0);
}

你可以称他们是这样的:

addSpike(chart1.Series[0], 3, 50d);
addLine(chart1.Series[0], 6, 30d,  80d);

需要注意的是他们增加2首或3个数据点的点集合!

当然,你可以设置颜色和多余的线条宽度(又名边框宽度)如你所愿,也包括他们在PARAMS列表..

如果你想保持点集合不变你也可以简单地创建一个“尖峰系列”,并添加峰值点在那里。 关键是要“跳”到新的点用透明线!



文章来源: How to add spikes to line on Winform chart?