matthew.frazier Posted February 17, 2011 Report Posted February 17, 2011 I'm looking for just a simple XYZ scatter example. I see plenty of examples for contour but I'm looking for just a simple xyz scatter. When I attemp to create one myself I get an error stating that "The current chart gallery settings is inconsistent with the number of series in your data. Some gallery types require a specific number of series." ScatterXYZ x = new ScatterXYZ(); chart1.View3D.IsEnabled = true; chart1.AllSeries.GalleryAttributes = x; //if i remove everything below then i get exactly what i want with the default data. //i just want to send my own xyz values and get a simple xyz scatter plot chart1.Series.Clear(); chart1.Series.Add(new SeriesAttributes()); chart1.Series[0].ItemsSource = GetData(); Quote
JuanC Posted February 17, 2011 Report Posted February 17, 2011 ScatterXYZ needs 2 series. The first series should have X and Y values while the second series Y data will be used as the Z values, e.g. List<XYZData> xyzData = new List<XYZData>(); xyzData.Add(new XYZData(1,1,2)); ... chart1.Series.Clear(); chart1.Series.Add(new SeriesAttributes() { BindingPath = "Y", BindingPathX = "X" }); chart1.Series.Add(new SeriesAttributes() { BindingPath = "Z" }); chart1.ItemsSource = xyzData; Note that we are assigning the data on a per-chart basis as you will probably have your XYZ information in a single list. In the sample I am assuming the XYZData class has 3 numeric properties called X, Y and Z. Although you could pass the data on a per series basis you will still need to "combine" X and Y in a single list so it is not possible to pass 3 double arrays. If you need multiple sets of XYZ scatters, i.e. you have 2 lists of XYZ data you need to pass then you would do something like this chart1.Series.Clear(); chart1.Series.Add(new SeriesAttributes() { BindingPath = "Y", BindingPathX = "X", ItemsSource=xyzData1 }); chart1.Series.Add(new SeriesAttributes() { BindingPath = "Z", ItemsSource=xyzData1 }); chart1.Series.Add(new SeriesAttributes() { BindingPath = "Y", BindingPathX = "X", ItemsSource=xyzData2 }); chart1.Series.Add(new SeriesAttributes() { BindingPath = "Z", ItemsSource=xyzData2 }); JuanC Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.