Hi,
I have data that I need to present in a linechart. Some values are actual, and some are estimated. I have a DataSource column in my table that is set to 'A' for actual or 'E' for estumated.
I would like to use different shapes for data points on my chart depending on the value of DataSource. Could you please explain how to do this.
Thanks,
Helen.
Helen,
Are you using a ScatterChart with ConnectWithLines set to "true"? Or are you actually using a LineChart?
Would it be possible for you to attach a screen shot of a chart with sample data in it showing exactly what you want to do?
Michael S.
Have you been able to resolve this issue? If you still require assistance please refer to my previouls reply asking for more details which would help me investigate this issue further.
The only way to do this is to handle FillSceneGraph event and overlay symbol icons on top of existing line points.
Private Sub UltraChart1_FillSceneGraph(ByVal sender As System.Object, ByVal e As Infragistics.UltraChart.Shared.Events.FillSceneGraphEventArgs) Handles UltraChart1.FillSceneGraph Dim shapeArray As New ArrayList Dim line As Polyline
shapeArray.Add("A") shapeArray.Add("E") shapeArray.Add("E") shapeArray.Add("A") shapeArray.Add("E")
For Each p As Primitive In e.SceneGraph If TypeOf p Is Polyline Then line = CType(p, Polyline) Next
If line Is Nothing Then Exit Sub
For i As Integer = 0 To line.points.Length - 1 Dim s As New Symbol If shapeArray(i) = "A" Then s.icon = SymbolIcon.Circle Else s.icon = SymbolIcon.Square End If
s.iconSize = SymbolIconSize.Large s.point = line.points(i).point e.SceneGraph.Add(s) Next End Sub
Thanks a lot Max. It works perfectly well. I posted a snap shot of the graph.
I have two more questions though.
How can I make data point labels to be drawn a bit above the actual data points so that my shapes do not obscure the values?
How can I tell the graph that the minimum interval is one day? Otherwise it makes intevals half a day which results in redundant x-axis labels.
Thanks in advance for your help.
The date interval can be adjusted this way, provided you are using actual dates and not strings:UltraChart1.Axis.X.TickmarkStyle = AxisTickStyle.DataIntervalUltraChart1.Axis.X.TickmarkInterval = 1UltraChart1.Axis.X.TickmarkIntervalType = AxisIntervalType.Days
If you need to extend the position of the label beyond what VerticalAlignment.Far on your ChartText items gives you (which isn't much), you can add this to your FillSceneGraph, inside the foreach loop:If TypeOf p Is Text And p.Path Is Nothing Then Dim label As Text = CType(p, Text) label.bounds.Y -= 10End If
Thanks Max,
The first one worked fine, but for the second one (position of the labels), I do not understand how to define "p" in your code sample. Besides, I can not find anything in LineChart.ChartText that has VerticalAlignment as an attribute.
Thank you for all your help.
If you backtrack to my original response, you will see the only for each loop. That's where p is defined and that's where you should put the new code in my last post.
How did you add the point labels in the first place? I was assuming that you've added a chart text item at some point, but I can't tell without seeing your code. In any case, using vertical alignment won't help much in this case, but in order to access that property you need to get into the ChartText collection first.UltraChart1.LineChart.ChartText(0).VerticalAlign = StringAlignment.Far
Yes, thank you Michael.
Is everything working for you now?
Thanks Max. Apparently I am using an outdated version. I will get the latest one, and implement your advise.
Thanks again for your timely responses.
Helen
each axis label will have a Path that is set to something like "Border.Title.Grid.X", so the condition would be false. Please make sure that you're using the latest build of NetAvantage, as I recall this being a problem in the past.
Mike, there is a slight problem with the solution below:
If TypeOf p Is Text And p.Path Is Nothing Then Dim label As Text = CType(p, Text) label.bounds.Y -= 10End If
All the labels move up, not just the labels of the graph. It includes the labels of the axis. The labels of the X axis end up in the middle of the axis line. I was unable to figure out how to tell the axis labels from the graph labels.
I would really appreciate your help in this.
Thanks