ASE Home Page Products Download Purchase Support About ASE
ChartDirector Support
Forum HomeForum Home   SearchSearch

Message ListMessage List     Post MessagePost Message

  some questions before buying
Posted by aldric on Mar-25-2022 22:44
hello, sorry for my english
i'm the lead developer of a french project that will use extensive charting to replace an old program that used the excellent steema tee chart pro engine under delphi.

The decision was made to use qt/C++, but te qtchart module alone is way too basic and as we could develop by ourself, the deadline is too short and we have to speed up a lot our development process.

Here are some features we need, can you confirm  what your chartdirector is able or is not able to do out of the box

So we need

1) line series but with vertical orientation instead of the classical horizontal ones. they can be time series.
2) multi charts :
-multi coloums chart with multi series by coloum with the ability to move a coloum from one location to another
-possibility to move a serie from a coloumn to another
3) possibility to put some text zone at a choosen point
4) possibility to get a value by clicking on a chart (idealy with interpolation between 2 values)
5) possibility to put graphics (eg a png at a choosen point)
6) some classical statitics on series (eg draw a trend line)
7) support (we can pay for support if it's adfordable)
8)the pick of the bunch could be the possibility to work together with your team to add some functionality if needed

May be chartdirector offers all that, or may be only some points only.

the more it offers, the best it is for us, but not having all could be ok depending on what it does and what it does not do.

thank you in advance for your answer.

Please advice
Have a nice day.
Best regards
Aldric

  Re: some questions before buying
Posted by Peter Kwan on Mar-27-2022 23:30
Hi aldric,

Yes, you can use Chartdirector to create the chart that meets all of your requirements.

1) line series but with vertical orientation instead of the classical horizontal ones. they can be time series.

ChartDirector allows you to swap the x-axis and y-axis, so all XY chart types (including line charts, area charts, bar charts, scatter charts, etc.) can be "vertical". The following is an example using an area chart. It also works for line charts and other XY chart types.

https://www.advsofteng.com/doc/cdcpp.htm#rotatedarea.htm

2) multi charts :
-multi coloums chart with multi series by coloum with the ability to move a coloum from one location to another
-possibility to move a serie from a coloumn to another

Yes, you can have multiple columns charts with multiple series each, and the ordering of the series can be rearranged. The Interactive Financial Chart included in the ChartDirector distribution illustrate one way to set up this kind of system. Although the charts in this example is horizontal, it works with "vertical" charts too.

https://www.advsofteng.com/doc/cdcpp.htm#financedemo.htm

In the above example, the user interface on the left side can be used to configure the type and ordering of the horizontal charts. When the user change anything in the user interface, the chart will redraw itself to reflect the configuration in the user interface.

For your case, in brief, you need a user interface to allow the user to move the series. In the chart drawing code, you just draw the chart according to the state of the user interface. You can try the example above to see how fast ChartDirector can redraw the chart.

In the example above, the user interface is the drop down list box on the left side. Some of our customers also implemented a user interface based on drag and drop. Basically, in the mouse down event, the code remembers which chart is being dragged. Then in the mouse up event, the code determines where is the chart being dropped. The code then update chart configuration and redraw the chart.

In general, there is only one chart drawing function that draws the chart based on the chart configuration. The user interface updates the chart configuration (instead of updating the chart directly), and draws the chart again.

3) possibility to put some text zone at a choosen point

Yes. The following is an example of adding text based on data points using a scatter layer. If you just want the text, you can add a scatter chart with only one invisible transparent data point, so only the text is visible.

https://www.advsofteng.com/doc/cdcpp.htm#scatterlabels.htm

There is also an API to allow you to add text based on pixel coordinates. For example, when the mouse click on the chart, you can obtain the mouse pixel coordinates and add some text there.

4) possibility to get a value by clicking on a chart (idealy with interpolation between 2 values)

Yes, when you click on the chart, Qt will provide you with the mouse coordinates. You can then ask ChartDirector for the (x, y) data value at that point.

Note that in many cases the user may click on some empty space on the chart (because the iine can be hard to click to exactly). In this case, the (x, y) value of the clicked point may not match any of your data point. In our sample code, we snap the position to the nearest data point. See:

https://www.advsofteng.com/doc/cdcpp.htm#tracklabelqt.htm

You can also use other methods with your code, such as getting the nearest and the second nearest points and perform interpolation.

ChartDirector auto supports hot spots. It means all "data objects" (bars in bar chart, line segments in line chart, sectors in pie chart) can be made clickable. If you try the Qt sample code included in ChartDirector, you would find nearly all the charts are clickable. In our sample code, we simply pop-up a dialog to display the details of that data object.

5) possibility to put graphics (eg a png at a choosen point)

Yes, the followings two examples. The first one is to put graphics in some fixed point on the chart, usually for graphics that is not dependent on data values, such as graphics for a company logo.

https://www.advsofteng.com/doc/cdcpp.htm#splineline.htm

The second example is for graphics that are associated with data points. You can simply add a scatter layer with one data point using the graphics as the scatter symbol.

https://www.advsofteng.com/doc/cdcpp.htm#scattersymbols.htm

6) some classical statitics on series (eg draw a trend line)

ChartDirector has quite a number of built-in statistics, including linear regression with confidence bands support, polynomial, exponential and logarithmic regression and general curve fitting. Some examples are:

https://www.advsofteng.com/doc/cdcpp.htm#trendline.htm
https://www.advsofteng.com/doc/cdcpp.htm#confidenceband.htm
https://www.advsofteng.com/doc/cdcpp.htm#paramcurve.htm
https://www.advsofteng.com/doc/cdcpp.htm#curvefitting.htm

There are also many types of moving averages, moving standard deviation, correlation, percentile, etc.. We used the mostly in our financial chart examples, but they can be applied to other XY charts (like line charts, bar charts, ...) as well. See:

https://www.advsofteng.com/doc/cdcpp.htm#financedemo.htm

7) support (we can pay for support if it's adfordable)

Support is currently free of charge.

8) the pick of the bunch could be the possibility to work together with your team to add some functionality if needed

ChartDirector has a comprehensive API and is very flexible. It can be customized to do a lot things. If you need to do anything special, you can let us know and we can advice on how to achieve this with ChartDirector.

Regards
Peter Kwan

  Re: some questions before buying
Posted by aldric on Apr-01-2022 15:22
thank you very much for your quick answer,

So, here's the future :

The way it works match the way I work with QtTableWidget , giving a pointer and exploit the "core" of the widget adding functionality. I like that. And that's exactly how I expanded TableWidget. You answered yes to all my questions , that's very ok for us.

1) I'll play for a week with your ChartDirector in trial
2) my boss will be back just after that.
3) We will buy 2 licences for we are 2 coders right now and some others when we will (hopefuly) have more coders in our team. I am confident at 90% that my boss will say yes.