Is it possible to have independent multiple axes in WPF graphs? - wpf

Having independent multiple axes for each series in scientific graphs is very common condition.
The requirement is,
The graph can have more than one series. and each series is associated with separate Y axes and one X axis (Time).
E.g. Y1 axis shows temperature and Y2 axis shows pressure against Time on X axis.
Both axes may show different scales (range min - max) like temperature from 0 to 100 Degree kelvin & pressure from 300 to 900 kPa and accordingly the series will be plotted.
I am looking for open source control or freeware which can provide this feature.
I am trying to use WPF for plotting graphs and studying WPF Tookit & Dynamic Data Display for that.
Please look at FLOT example of multiple axes. I want this feature in WPF.
But I am not able to find feature of independent multiple axes in these controls.
Please help otherwise I have to drop the idea of using WPF.
Thanks in advance.

As far as Dynamic Data Display goes, I know that it is very possible to implement what you are looking for. You can always just make a new axis object and add it to the plotter's children. You can then interact and map each axis freely. The key to manipulation in D3 is the mapping, so if you have two different data sources, you can plot them on the same graph dependent on the axis that you map them to, and how you map them. Dynamic Data Display should fit your requirement.

Related

Calculations on Geodesic Grid & Plotting Data of Geodesic Grid - any C Librarys availible?

I have a couple of questions regarding computations in C on a geodesic grid.
I want to numerically solve equations for the time evolution of a scalar field on the surface of a sphere.
It seems that the geodesic grid is a convenient way to parametrize the surface of the sphere and to store it in the computers memory.
An explanation on one possible data structure is given here:
http://kiwi.atmos.colostate.edu/BUGS/geodesic/text.html
I would like to know:
Are there any C Libraries available which I can use to simplify my life, or should I create the data structure myself?
Having a data structure such as the one presented in the link above, are there any programs to visualize functions that are defined on the grid? (I want to plot some computed value for every grid point, but visualized on the sphere).
For this would it be best to write on code that assigns every grid point a set of angles (theta, phi) and then plot with e.g gnuplot?
Any help is appreciated.
Thank you.

Visiblox/WPF can't zoom with series on additional Y axis

I have a Visiblox chart with multiple Y-axes, different units on each axis.
The user can click any of several buttons to display data as line series on the appropriate axis.
If the user clicks on data that plots against the primary or secondary Y-axis, it's possible to zoom the plot. If they click on data that plots on an "additional" Y-axis and there is no existing data on the primary or secondary Y-axis, the plot will not zoom.
If there is existing data plotted against the primary or secondary Y-axis, the chart zooms fine.
I'm guessing this is expected behavior in Visiblox, but am I missing any way to enable zooming with data plotted only on an "additional" Y-axis?
I know I could keep track of which axes are active and change the units on them to make sure that data is always plotted first on one of the functioning axes, but the user can also remove data from any axis at will, and I'd have to replot the data any time they removed data from the both of the functioning axes, leaving only data on the "additional" axis. Possible, but messy.
Thanks in advance!
From correspondance on the Visiblox blog, this is a known issue that will be addressed in the upcoming 2.2 release of Visiblox. Thanks to the Visiblox team for responding there!
http://www.visiblox.com/blog/2010/11/zooming-panning-in-silverlight-using-visiblox-charts

Connect Silverlight Line Series Points Based On Dependent Value

Here's my current chart:
Is it possible to get the green and red series to connect points based on the dependent value (TVD) and not the independent value (Pressure)?
I'd like to connect the points based on the increase in TVD.
My series are bound to values found in a list of objects. The list of objects is sorted based on the increase in TVD, but when I bind my list to the series, the points connect based on increase in pressure.
I guess your Independent Axis (Pressure) is set to orientation X, and the Dependent Axis (TVD) is orientaton Y.
You should be able to get the results you want by setting the Independent Axis to the TVD value, and its orientation to Y. The pressure values would then go onto the Dependent Axis with orientation X.
I would hazard a guess that it isn't possible.
I was able to reproduce the chart sorting the points in X order. Indeed, it seems the LineSeries class (or rather its superclass, LineAreaSeriesBase, source), keeps the points in a collection ordered by independent value. So, the LineSeries will completely ignore the order in which you supply the points.
The next thing I tried was swapping the X and Y axes. I tried a few things that I thought would work but in the end all I got was an 'Assigned independent axis cannot be used' exception. Google turned up this post on the MSDN forums about a year ago, in which another user asks the same question and gets no helpful answers.
If you really want a chart plotting points in order of TVD, then I would have to recommend abandoning the Silverlight Toolkit chart and using a third-party control instead. Every time I've attempted to use the Silverlight Toolkit chart I've run up against an issue or an inflexibility with it. In my opinion it's just not good enough for production use. You're evidently working for the oil industry, so it's not like they can't afford a few hundred dollars for a licence for one of these libraries.

Silverlight toolkit chart too many labels on axis

I'm using the newest chart control from silverlight toolkit to plot some data. For small cases it works ok, but for bigger samples the X axis labels overlap. It would be no problem if the chart would simply omit some of the values or I could specify to just show every 10th of them ...
I couldn't find any properties providing this behavior. Any ideas?
Assuming this is a Linear axis then you can specify the interval to use via the the Interval property on the axis.
If the axis in question is Category Axis then dropping some labels may not be valuable to the user. One option is to use the LayoutTransfomer to rotate the labels to an angle reducing the width needed for each one. See this Delay Blog on the subject.

What is dataset Bounding Box?

I am bit new to Imaging and want to understand below:
what is the bounding box of a dataset and why is that needed? Does it represent something of measurement in real world or just for computer screen where it is displayed? How is this related to the image size specified in pixels?
What does WMTS layers zoom level & matrix sets mean? I understand that WMTS works by using getting tiles of the dataset. Also, I see that the get Capabilities for a specific WMTS dataset returns back matrix Sets in the XML which I don't understand?
what do the matrix datasets and zoom levels signify and how can I understand them as a layman?
I have tried googling a bit but it looks like the articles assume some technical knowledge around this already which I am trying to gather.
A bounding box is the (imaginary) rectangle that you can draw around a dataset (or feature) that touches it's maximums and minimums in both X and Y direction. It is measured in the same units as the geometry. It is related to the image size in pixels as the resolution or scale which are bbox.width/image.width or (the inverse), and are in units of metres/pixel or pixels/metre (or degree or foot).
A WMTS layer is a set of pre-rendered tiles that have been produced at a fixed set of scales and over a fixed area. These are related in the matrix sets of a WMTS layer - the zoom level is how far down that set of scales you have traversed with 0 being the top and an arbitrary number (usually between 15-20 for global data sets) being the lowest (or most detailed).
See 2. - You should not really need to understand them in detail as your client library will handle all of that for you.

Resources