创建图表系列、添加数据和设置可见性
Create chart series, add data and set visibility
我正在尝试创建一组图表系列,将数据添加到系列中,然后通过使它们可见来显示系列中的一些。数据发生变化,用户可以 select 查看哪个系列。我认为这种方法比用 chart.Series.Clear();
清除所有系列然后用相同的方法重新创建系列要好。
例如拼车中具有随机里程的汽车列表,然后 select 显示哪些汽车。
下面的代码不起作用(我已在其中注释)。该系列不是 public,我认为它们需要像 SeriesCollection
一样添加到 public 集合中,但我不确定如何添加。
感谢您的帮助。
// create new chart series and add to a chartarea
ChartArea TestChartArea = new ChartArea();
public void CreateChartSeries()
{
List<string> lstCars = new List<string> { "Mazda", "Tesla", "Honda", "Jaguar", "Ford", "Toyota" };
foreach (string Car in lstCars)
{
// car series created correctly?
var Srs = new Series(Car);
Srs.ChartArea = TestChart.Name;
Srs.YAxisType = AxisType.Primary;
Srs.Color = Color.Red;
Srs.ChartType = SeriesChartType.Line;
TestChart.Series.Add(Srs);
}
}
// add data to chart series
public void SeriesData()
{
List<string> lstCars = new List<string> { "Mazda", "Tesla", "Honda", "Jaguar", "Ford", "Toyota" };
int[] Xseries = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] Milage = new int[10];
Random Random = new Random();
foreach (string Car in lstCars)
{
for (int M = 0; M < 10; M++)
Milage[M] = Random.Next(150, 15000);
// not sure how to call and add data to each series
Srs.Points.DataBindXY(Xseries, Milage);
}
}
// plot series - some visible
public void PlotCreatedSeries()
{
// not sure how to refer to each series
Mazda.Enabled = true;
Tesla.Enabled = false;
Honda.Enabled = true;
Jaguar.Enabled = false;
Ford.Enabled = true;
Toyota.Enabled = false;
}
您用来创建 Series
的名称 'Srs'
仅在范围内,即可在循环内使用。在循环结束时,您将新创建的 Series
添加到您的 Chart
:
TestChart.Series.Add(Srs);
Series
属性是一个publicSeriesCollection
。这有点令人困惑,因为 单数类型 名称和 复数 属性 名称在这种情况下是相同的,与,比如 Legend(s)
或 ChartArea(s)
..
从现在开始,您可以通过其索引访问它..
Series s = TestChart.Series[0] // the series you have added first
..或者,更具可读性和更稳定,通过其 Name
属性:
Series s = TestChart.Series["Mazda"] // the same series
TestChart.Series["Mazda"].Enabled = true;
注意'name'也是一个刁钻的词:
当你声明一个变量时,你给它一个'name'。 Series s = new Series();
但是很多对象还有一个叫做属性的Name
:s.Name = "Volvo";
前者必须是唯一的,而后者只是一个字符串;也要保持它的独特性,但系统不会保护你。
前者永远不会改变,但是,如您所见,可以超出范围;后者只是一个字符串,您可以更改它。
请注意,变量本身不会超出范围,只要它仍然在某处被引用,这里作为 SeriesiesCollection Series
..
的一个元素
是否要添加 DataPoints
绑定 或 直接由您决定。
前者有 many binding 个选项。
对于后者,您可以使用 Chart.Points
methods..:[=37=]
Add(DataPoint)
AddY(YValue)
AddXY(XValues, YValue(s))
请注意,有时,尤其是实时图表,使用 InsertXXX
方法之一 插入 一个 DataPoint
是有意义的!
一定要在 MSDN 中查找!中间版本仅在 x 值是非数字或没有实际意义(例如名称)时才有意义。 - 请注意,将有意义的 x 值添加为 numbers (或 DateTimes
)对于将它们用于进一步的目标至关重要,例如工具提示、缩放或显示范围等。
不这样做可能是新手最常犯的错误。 Chart
看起来还可以,但是里面的数据坏了,读丢了。
我正在尝试创建一组图表系列,将数据添加到系列中,然后通过使它们可见来显示系列中的一些。数据发生变化,用户可以 select 查看哪个系列。我认为这种方法比用 chart.Series.Clear();
清除所有系列然后用相同的方法重新创建系列要好。
例如拼车中具有随机里程的汽车列表,然后 select 显示哪些汽车。
下面的代码不起作用(我已在其中注释)。该系列不是 public,我认为它们需要像 SeriesCollection
一样添加到 public 集合中,但我不确定如何添加。
感谢您的帮助。
// create new chart series and add to a chartarea
ChartArea TestChartArea = new ChartArea();
public void CreateChartSeries()
{
List<string> lstCars = new List<string> { "Mazda", "Tesla", "Honda", "Jaguar", "Ford", "Toyota" };
foreach (string Car in lstCars)
{
// car series created correctly?
var Srs = new Series(Car);
Srs.ChartArea = TestChart.Name;
Srs.YAxisType = AxisType.Primary;
Srs.Color = Color.Red;
Srs.ChartType = SeriesChartType.Line;
TestChart.Series.Add(Srs);
}
}
// add data to chart series
public void SeriesData()
{
List<string> lstCars = new List<string> { "Mazda", "Tesla", "Honda", "Jaguar", "Ford", "Toyota" };
int[] Xseries = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] Milage = new int[10];
Random Random = new Random();
foreach (string Car in lstCars)
{
for (int M = 0; M < 10; M++)
Milage[M] = Random.Next(150, 15000);
// not sure how to call and add data to each series
Srs.Points.DataBindXY(Xseries, Milage);
}
}
// plot series - some visible
public void PlotCreatedSeries()
{
// not sure how to refer to each series
Mazda.Enabled = true;
Tesla.Enabled = false;
Honda.Enabled = true;
Jaguar.Enabled = false;
Ford.Enabled = true;
Toyota.Enabled = false;
}
您用来创建 Series
的名称 'Srs'
仅在范围内,即可在循环内使用。在循环结束时,您将新创建的 Series
添加到您的 Chart
:
TestChart.Series.Add(Srs);
Series
属性是一个publicSeriesCollection
。这有点令人困惑,因为 单数类型 名称和 复数 属性 名称在这种情况下是相同的,与,比如 Legend(s)
或 ChartArea(s)
..
从现在开始,您可以通过其索引访问它..
Series s = TestChart.Series[0] // the series you have added first
..或者,更具可读性和更稳定,通过其 Name
属性:
Series s = TestChart.Series["Mazda"] // the same series
TestChart.Series["Mazda"].Enabled = true;
注意'name'也是一个刁钻的词:
当你声明一个变量时,你给它一个'name'。 Series s = new Series();
但是很多对象还有一个叫做属性的Name
:s.Name = "Volvo";
前者必须是唯一的,而后者只是一个字符串;也要保持它的独特性,但系统不会保护你。
前者永远不会改变,但是,如您所见,可以超出范围;后者只是一个字符串,您可以更改它。
请注意,变量本身不会超出范围,只要它仍然在某处被引用,这里作为 SeriesiesCollection Series
..
是否要添加 DataPoints
绑定 或 直接由您决定。
前者有 many binding 个选项。
对于后者,您可以使用 Chart.Points
methods..:[=37=]
Add(DataPoint)
AddY(YValue)
AddXY(XValues, YValue(s))
请注意,有时,尤其是实时图表,使用 InsertXXX
方法之一 插入 一个 DataPoint
是有意义的!
一定要在 MSDN 中查找!中间版本仅在 x 值是非数字或没有实际意义(例如名称)时才有意义。 - 请注意,将有意义的 x 值添加为 numbers (或 DateTimes
)对于将它们用于进一步的目标至关重要,例如工具提示、缩放或显示范围等。
不这样做可能是新手最常犯的错误。 Chart
看起来还可以,但是里面的数据坏了,读丢了。