This thread looks to be a little on the old side and therefore may no longer be relevant. Please see if there is a newer thread on the subject and ensure you're using the most recent build of any software if your question regards a particular product.
This thread has been locked and is no longer accepting new posts, if you have a question regarding this topic please email us at support@mindscape.co.nz
|
At the core of the application that we are making is a lot of statistics. A common type of plot used for analyzing statistical data in many applications is the box plot. Since the looks of this plot is fairly similar to the current candle stick chart, and you're going to a redesign of the plotting anyway, could I request that a plot of this type to be included? If you would like to have more information or sample data we could provide that. Thanks! |
|
|
I agree! A box plot series is very common and would be much appreciated. |
|
|
Hello We can certainly put some time in to include this new type of charting series. I'll aim to get this done within 2 weeks from now. First I'll need to know how you would be structuring the data. I can see 3 possible ways for this. Let me know if you had something else in mind. 1) Each data point in the BoxplotSeries would consist of the minimum, maximum, lower quartile, upper quartile and median values as well as a value that indicates where it will be placed on the independent axis. For this idea we would provide a BoxplotDataPoint class which has a property for each of these 6 values which you can set. A single BoxplotSeries can render multiple box-and-whisker graphics. 2) Each data point in the BoxplotSeries is simply a numerical value. The chart will calculate the minimum, maximum, lower quartile, upper quartile and median values itself. With this idea, a single BoxplotSeries will only render a single box-and-whisker graphic. 3) Each data point in the BoxplotSeries is some kind of 2 dimensional point object. One of the point values is used to calculate the 5 values to plot, the other point value is used to separate the data points into groups where each group has its own spot on the independent axis. This idea is similar to the one above, but allows for a single BoxplotSeries to manage multiple box-and-whiskers like the first idea. Let me know which idea you'd like to go with. Some sample data would be great. Jason Fauchelle |
|
|
I would probably prefer the first method, although method three sounds interesting. In several cases, the volume of data would be large enought that we would probably calculate and store the summary statistics. For this method one would be great. It would be nice in other scenarios to give it a collection and a binding for the grouping (determine the spot on the independent axis). Then you could perform the grouping, then calculate the statistics for each group. I'm interested to hear what ideas others may have. |
|
|
Jason, Great news, really excited about it! For us the first method would be best as well. It is the way we're setting up the model code already. I agree with jaredf that the third method sounds interesting but I prefer to have the first method. Would it be possible to use data binding in combination with our own list of data points. For example we have a list with objects that contain more information than strictly needed in the plot. If I could use data binding to indicate which properties on the object are used for which part of the boxes, I don't have to do stuff in the code-behind to convert my data into a BoxPlotData point that the graph supports (does this still make sense?). I can get you some sample data next week. Thanks! |
|
|
Hello Yes data binding will work in combination with your own custom data point model objects. All of our chart types include this functionality. There will be properties like MinimumBinding, MedianBinding and UpperQuartileBinding that allow you to set a binding which points to the appropriate properties on your model objects. Jason Fauchelle |
|
|
Jason, I've uploaded a zip file that contains an excel file and a pdf. The pdf has been created with R (http://www.r-project.org/). The excel file contains 39 data columns. Each column consists of 25 samples. The statistics (below each column) are calculated from those samples. Each column is a 'generation' and you'll notice that the algorithm converges quite quickly. In the pdf it can be seen that if everything is plotted on the same scale, the later boxes become just lines. Therefor it is very useful to be able to zoom in to the smaller boxes if needed. When a box plot is rendered in R, the user only provides the array of samples. R calculates all the values that are needed to draw the box. Note that in the plot there are open circles drawn. Those are outliers (beyond the 98% level). A common option for our software is to draw or hide the actual data points. We though about the best ways to provide data to the plot. One way to do it would be similar to 'R', where the plot takes care of calculating the percentiles and renders the boxes automatically. The other way would be to do those calculations in our code and provide the values to the plot (which is along the lines of option 1 in your post). For us, we would like to have control over the calculations. Not because they are hard but we sometimes want to 'massage' the data a bit before we do the calculations. Others might have a different preference and to most the option to just provide a list of numbers would certainly be convenient. So one one extension on what has been mentioned in earlier posts is the ability to provide the raw list of points and have them appear on the plot. It would be nice if that could be switched on or off (for the entire plot). Feel free to contact me should you need more examples. |
|
|
Hello Thanks for the sample data and pdf. To start off, our Boxplot will require the 6 precalculated values for each data point. We can later include the support for taking the raw data points. This would not need to be toggled on or off - the Boxplot would work out what to do based on the given data. We'll let you know when the Boxplot first becomes available. This is scheduled for a couple of weeks from now. Jason Fauchelle |
|
|
Hello sherriemcnally and Jared The Boxplot is available right now from the current nightly build. As usual you can pick this up from your account page: http://www.mindscapehq.com/store/myaccount To create a boxplot, you'll need to add a BoxplotSeries to a Chart control. To populate the boxplot with data, you can either use the built-in BoxplotDataPoint class, or use your own model objects. When using your own model objects, you will need to set the XBinding, YBinding, MinimumBinding, MaximumBinding, LowerQuartileBinding, UpperQuartileBinding and MedianBinding properties on the BoxplotSeries. These let you specify which properties on your model objects hold which values. The XBinding will be a binding to a property on your model that holds the value of where the box and whisker will be rendered along the X axis. This could be numerical plotting value, a string, a DateTime, or any other object you like. The YBinding property should be set to the same as the MinimumBinding property. The rest are as the name suggests. If you use the BoxplotDataPoint object, you won't need to set any of the binding properties, the chart will automatically know how to plot them. You can set the color of the boxes by using the usual SeriesBrush property. Or if you need to make dramatic changes to the look of the rendered data points such as changing the line thickness or dash array, you can specify a style using the BoxAndWhiskerStyle property. Here is the default style which you could use as a starting point for any customizations you want to make.
In the sample explorer that comes with WPF Elements, there is a new sample demonstrating the boxplot in action. From the Windows start menu, go to Mindscape > WPF Elements > Sample Explorer to run the sample explorer. When this is running, go to the Charts page and find the Boxplot sample. Let us know if you have any questions about it. Jason Fauchelle |
|