Multiple Charts in one View - best approach


#1

Hi,
I am currently desiginig an View which uses 3 charts. Every signle one of them uses the same datasource - just formats other fields wih respect to user choice. Two of the charts are tightly related - touching one point on of them should mark the corespoding point on the other. 

  1. What is the best approach for the data? Multiple data sources with different formatting that create new DataPoints?
  2. Is there a function I can use to interpolate a point which has been touched between two points (aproximate a value) or do I have to do it on my own.

There is a lot of data beeing processed. Any suggestios appreciated. Thank you in advance.


#2

Hey,

  1. If your charts all display the same data then it would make sense for them to all share the same data-source. I think you are going down the right route here.

  2. As for synchronised point selection between two charts, I wouldn’t worry about the exact locations that are being touched - I would rely on the charts’ delegates. When a point is selected, the relevant delegate method will be called. This will give you an opportunity to programatically select/deselect the point at the same index on the other chart.

I hope the above points you in the right direction!

Jan


#3

Hi Jan,

Thank you for your anwser. Unfortunatelly i have couple of views witch will use an object that has a couple of values  and one view is like y to x second is z1 to z2 and so on. I think i’ll have to do 


#4

Sorry Okipol, I don’t think I understood your last post. Do you think that method 2 might not work in your chart set up? Did either of my two suggestions help you at all?


#5

One way it will work. E.g. speed to distance - cars in some road. I touch one series at one known distance  ut i have to interpolate the speeds for the other series as there is a posibility that the series hasn’t got a vale at that specific distance . Also i have another view in which its position is marked (map). If I will mark a point on the map for a specifiec series - ok I have the index for the speed to distance but only for one series - i have to then find aproximate the position and only then i have the indexes for all series to display in the speed to distance.


#6

I think one of the easiest solutions for what you are trying to do is to reload your chart with an extra point where you need it in the other chart, and then selecting it.

It is quite hard to understand what you are trying to achieve without seeing any images or an example project. Please feel free to send any of those to info@shinobicontrols.com and we will try to give you a bit more advice. Please include as much information about your problem as possible with this email.


#7

I would like to UP this subject. OK, I will try to send a photo when possible. Little explanation. Imagine a race with laps and some sensor measurements.
We have sensor measurements for each lap. Data like distance, GPS position, speed, fuel consumption etc.
There are two charts visible in one moment MAX.

One is some data (speed, fuel consumption etc) on Y axis and distance in lap in X axis.
Second can be a chart with a map of the track with the positions for a given measurement or another (lets keep it simple).

The user can select the laps he wants to have displayed - different laps are different series with diferent colors.
The user can also select a point of interest on one of the two series so it can be targeted and then some additional info can be displayed.
Mainly when a user selects a point from chart A we want to select a point on chart B.

Currently there a couple of problems with this.

  1. The user selects a couple of laps, deselects etc - the data is loaded froma a database -> how to synchronize this loading? 
    The main problem is that a point can be already selected for LAP1, then for each other of the laps another point is calculated with respect to the user selected point. If he loads another lap the point should be added for that loadel lap -> or removed if a lap is deselected.
    Finally the lap containing the selected point will be removed from the grid and an index always has to be rememberd (SChartDataPoint has only a public readonly index -> i had to subclass it and add my own customIndex so i can set it from my function is there a better way?).
    Sometimes when user is anxious the datasource and current selection/Annpotation adding gest out of sync and array out bounds is thrown. 
  2. How to synchronize these views -> lap loading and annotation adding? Is there a good pattern for this? Wait for chart rendering before adding annotations? or how this should be done? Can this be done asyncchronusely? We want the user to have the best Expierience of responsive fast and smooth Charts.

Thank you in advance, i Wil lbe gratefull for any help on this topic.