Trying that again (Google Chrome and Forum are not friends)
Hi all, I am having a hard time figuring out how to setup and populate a scatterlinechart. I am working within a chartfactory that currently produces BarCharts and areacharts by passing a DataRow object to the UpdateChart method. I have many XY points on each 'line' and expect to plot 2 lines. Any help greatly appreciated. thx
InitializeChart() case Shared.EChartType.Scatter: this.Chart.ChartType = Infragistics.UltraChart.Shared.Styles.ChartType.ScatterLineChart; this.dataSetMonitorSailMap.Tables.Clear(); this.dataSetMonitorSailMap.Tables.Add(); this.dataSetMonitorSailMap.Tables[0].Clear(); { this.dataSetMonitorSailMap.Tables[0].Columns.Add("ColumnX", typeof(double)); this.dataSetMonitorSailMap.Tables[0].Columns.Add("ColumnY", typeof(double)); ...
InitializeRowData() case Shared.EChartType.Scatter: //rowData is an empty ArrayList[2] object // Add Row(s) to DataSet Table rowData[0] = new ArrayList(); rowData[1] = new ArrayList();
for (int i = 0; i < sensorCount; i++) { rowData[0].Add((double)i); rowData[1].Add((double)i); }
row = this.dataSetMonitorSailMap.Tables[0].NewRow(); row.ItemArray = rowData[0].ToArray(); this.dataSetMonitorSailMap.Tables[0].Rows.Add(row); row = this.dataSetMonitorSailMap.Tables[0].NewRow(); row.ItemArray = rowData[1].ToArray(); this.dataSetMonitorSailMap.Tables[0].Rows.Add(row);...
UpdateChart(){????}
possibly you should try using a ScatterChart with ScatterChart.ConnectWithLines set to True ... instead of a ScatterLineChart.
i'm not sure what you're asking here, though. have you tried creating a chart from this data? if so, does it render OK, do you get an error, or just unexpected results?
Hi, you are right, what I thought was obvious last night is not clear at all this morning...
The problem I seem to be having is setting up the chart.
I have DataTable and DataRow objects, I create columns on the DataTable which I understand are required for this chart type. When I try to initialize the row using dummy data I get an error. I've tried using XYSereis, XYDataPoint objects but I need to use the DataRow object ultimatelty inorder to be consistent with the framework I am working in.
What I need clarification on is: given I have a number of data 'series' each with a multitude of points, how should I define, setup and populate the chart?
Hope that actually turns this into a question..
thx
perhaps this document will clear things up... http://help.infragistics.com/Help/NetAdvantage/NET/2008.3/CLR2.0/html/Chart_Working_with_Scatter_Chart_Data.html
not sure what error message you're getting, but i am guessing it's related to invalid data. make sure you meet the requirements in the above topic, and double-check the DataType property of your DataColumns to ensure they have a numeric type.
Hi, yup - I've poured over that page and it really doesnt help me.
the structure that I've indicated above works fine for a AreaGraph (where there is just one set of data, the 'X' coordinate is effectively the ordinal of the data row)
My understanding is that a 'row' of data represents a point on the graph. As I have many points, I have a loop that defines each of these. But I have only two (in this case) lines. How do I define the table/row/graph to be able to represent this data correctly.
Thanks in advance if these are silly questions but I'm new to this.
if you have multiple lines, the best way to define the table is like this:
GroupByColumn (string) ; ColumnX (double) ; ColumnY (double)
Line A ; 1 ; 1
Line A ; 1 ; 2
Line A ; 1 ; 3
Line B ; 1 ; 1
Line B ; 2 ; 1
Line B ; 3 ; 1
then set ScatterChart.UseGroupByColumn = true, ScatterChart.GroupByColumn = 0, ScatterChart.ColumnX = 1, ScatterChart.ColumnY = 2, ScatterChart.ConnectWithLines = true
pass in false instead of true for the 4th argument in the XYDataPoint constructor.
Hi, thanks for picking this thread up. I have used your suggestions and got a bit further. Now it compiles and runs successfully, however the graph is empty. I am not sure if I have got the bounds wrong or colors are white or if I'm still having trouble actually adding data.
I have paraphrased my code below. Three lines each with multiple points. Can anyone see my mistake(s)?
tia.
Defining the chart:
this.Chart.ChartType = Infragistics.UltraChart.Shared.Styles.ChartType.ScatterChart; XYSeries mySeries = new XYSeries(); for (int i = 0; i < 3; i++) {this.Chart.Series.Add(mySeries); }this.Chart.Axis.X.RangeMax = (double)1; this.Chart.Axis.X.RangeMin = (double) 0;this.Chart.Axis.Y.RangeMax = 50; this.Chart.Axis.Y.RangeMin = 0;this.Chart.ScatterChart.UseGroupByColumn = true; this.Chart.ScatterChart.GroupByColumn = 3;this.Chart.ScatterChart.ColumnX = 0; this.Chart.ScatterChart.ColumnY = 1; this.Chart.ScatterChart.ConnectWithLines = true;
this.Chart.ChartType = Infragistics.UltraChart.Shared.Styles.ChartType.ScatterChart;
{
}
this.Chart.Axis.X.RangeMin = (double) 0;
this.Chart.Axis.Y.RangeMin = 0;
this.Chart.ScatterChart.GroupByColumn = 3;
this.Chart.ScatterChart.ConnectWithLines = true;
rowData = new ArrayList[3]; xys = new XYSeries[3];for (int i = 0; i < 3; i++) {xys[i] = new XYSeries(this.Chart); for (int j = 0; j < 4; j++) {xys[i].Points.Add(new XYDataPoint(0, 0, "BM"+i, true)); }this.Chart.Series[i] = xys[i]; }
xys = new XYSeries[3];
Refresh Data ...(called within an while loop)
xys[BM_id].Points.Clear();
for (int i = 0; i < 4; i++) {x = Convert.ToDouble(i / 4); y = Convert.ToDouble(i*i*rnd.Next(0,10));xys[BM_id].Points.Add(new XYDataPoint(x, y, "BM" + BM_id.ToString(), true)); } this.Chart.Series[BM_id] = xys[BM_id]; this.Chart.DataBind();
y = Convert.ToDouble(i*i*rnd.Next(0,10));
this.Chart.Series[BM_id] = xys[BM_id];
this.Chart.DataBind();
this.Chart.ScatterChart.ColumnY = 1;
for (int j = 0; j < 4; j++)