[英]Multiple Series in Line chart in Winform using C#
我是Winform Application
新手。 我正在尝试实现一个line chart
,该line chart
具有多个series
并具有一个checkedListbox
以选择particular series
。
码:
if (tbROI.SelectedTab == tbROI.TabPages["tbPageROIPoint"])
{
//If all ROI TAB
myIndex = GetMyChartIndex(mSeries, chartPointROI); // 4 for Point ROI tab
m_PointDataCounter++;
if (m_PointDataCounter > 15)
{
if (myIndex > 5)
{
chartPointROI.Series[mSeries].Points.RemoveAt(0);
m_PointDataCounter--;
}
}
if (cbListPOI.GetItemChecked(ROIIndex))
{
chartPointROI.Series[mSeries].Points.AddXY(timestring, mData);
chartPointROI.ResetAutoValues();
}
}
使用此代码,我将数据放在chart control
。 X-axis
代表时间, Y-axis
代表数据。
Initailly当我选择listbox
的任何项目时,系列从左侧开始,但是在某个时间之后,如果我再开始一个系列,它也将从左侧开始,但是我想从X轴上表示的当前时间开始。
当我在一段时间后停止任何series
时,如果我再次开始同一series
我希望在系列中留出一定的间隔,以便可以清楚地看到该系列已停止。
就我而言,系列总是从左侧开始。 如果我停止任何系列并重新开始,它将在停止的地方继续。
提前致谢
编辑:
这表明
这是一个有关如何删除一些DataPoints
以及如何还原它们的示例。
注意间隙中的平线。 如果要“去除”该线以最好的颜色,则最后一点透明; 我为此添加了注释代码。
List<DataPoint> marked = new List<DataPoint>();
int markedStartIndex = -1;
private void button1_Click(object sender, EventArgs e)
{
// I create a testperiod to remove
DateTime dt0 = DateTime.Now.AddMonths(2);
DateTime dt1 = dt0.AddHours(123);
DateTime dt2 = dt0.AddHours(173);
// convert to doubles:
double startPeriod = dt1.ToOADate();
double endPeriod = dt2.ToOADate();
// short reference
Series s = chart1.Series[0];
// select the points in the period. pick your border conditions!
marked = s.Points.Cast<DataPoint>()
.Where(x => x.XValue > startPeriod && x.XValue < endPeriod)
.ToList();
if (marked.Count < 1) return;
// remember where we started to remove
markedStartIndex = s.Points.IndexOf(marked.First());
foreach (DataPoint dp in marked) s.Points.Remove(dp);
// Optionally 'hide' the gap line
//if (markedStartIndex > 0) s.Points[markedStartIndex].Color = Color.Transparent;
}
使它们返回的代码将它们插入正确的位置,然后清除这些点。:
private void button2_Click(object sender, EventArgs e)
{
Series s = chart1.Series[0];
// optionally re-color the gap-line
//if (markedStartIndex > 0) s.Points[markedStartIndex].Color = s.Color;
foreach (DataPoint dp in marked) s.Points.Insert(markedStartIndex++, dp);
marked.Clear();
}
结果存在透明的差距:
您也可以将间隙用红色上色,并存储多个点。 为此,您必须存储起点,并确保重新插入时管理多个期间!
作为实际删除点的替代方法,您还可以选择简单地将它们着色为透明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.