Qx.Desktop development and using qxjqplot..now questions

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Qx.Desktop development and using qxjqplot..now questions

Vishal
Dear Friends,

I have been using qxjqplot for running meters (gauges)
​in my single page qx.desktop app.


Now I wish to use a charting library to show running live data (like a time series) on a chart. Going forward with qxjqplot, I have come to a point where data can be shown on a chart very well. However, since the data is always coming in fresh, I can only show a part of it while keeping most of the data in a background array. The user may want to stop the charting, and go back to some point (using a scroll bar). There is no such facility in jqplot, while there is something called a zoom proxy...which is like this: http://www.jqplot.com/deploy/dist/examples/zoomProxy.html
However, it does not really work like a scroll bar. in addition the controller plot itself will be getting filled in all the time.
To use this function I have to call something like this:
$.jqplot.Cursor.zoomProxy(targetPlot, controllerPlot);

How do i call this function from qx? The qxjqplot.MPlot mixin does not expose jquery.jqplot object, or does it?

Can you please point me to the right direction so as to use the above functionality from qxjqplot?

What would be your suggestion to have an x axis scroll bar to move about the time axis? 

I also looked at the qxdygraph option. Unfortunately there is no hint as to how to use DyGraphs with qooxdoo. The demo given for qxdygraph is good, but I dont see an option to look at the actual demo code.

Your help would be seminal for me to complete this tool.

Thanks and best regards,
Vishal Sapre

p.s: Please find attached my current chart tab with some random data in it.



------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

conview_charting_1.png (107K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Qx.Desktop development and using qxjqplot..now questions

oetiker
Hi Vishal,

I have not ventured into using jqplot for anything 'live'

I have written a live grapher with qooxdoo pretty specialized, but
maybe this can give you some insporation ...

https://github.com/oetiker/RrdGraphJS/blob/master/public/rrdGraphSvg.js

it is based on D3.js since this seems to be much more flexible than
jqplot.

cheers
tobi

Yesterday Vishal wrote:

> Dear Friends,
>
> I have been using qxjqplot for running meters (gauges)
> ​in my single page qx.desktop app.
>
>
> Now I wish to use a charting library to show running live data (like a time
> series) on a chart. Going forward with qxjqplot, I have come to a point
> where data can be shown on a chart very well. However, since the data is
> always coming in fresh, I can only show a part of it while keeping most of
> the data in a background array. The user may want to stop the charting, and
> go back to some point (using a scroll bar). There is no such facility in
> jqplot, while there is something called a zoom proxy...which is like
> this: http://www.jqplot.com/deploy/dist/examples/zoomProxy.html
> <http://www.jqplot.com/deploy/dist/examples/zoomProxy.html>
> However, it does not really work like a scroll bar. in addition the
> controller plot itself will be getting filled in all the time.
> To use this function I have to call something like this:
> $.jqplot.Cursor.zoomProxy(targetPlot, controllerPlot);
>
> How do i call this function from qx? The qxjqplot.MPlot mixin does not
> expose jquery.jqplot object, or does it?
>
> Can you please point me to the right direction so as to use the above
> functionality from qxjqplot?
>
> What would be your suggestion to have an x axis scroll bar to move about
> the time axis?
>
> I also looked at the qxdygraph option. Unfortunately there is no hint as to
> how to use DyGraphs with qooxdoo. The demo given for qxdygraph is good, but
> I dont see an option to look at the actual demo code.
>
> Your help would be seminal for me to complete this tool.
>
> Thanks and best regards,
> Vishal Sapre
>
> p.s: Please find attached my current chart tab with some random data in it.
>
--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
www.oetiker.ch [hidden email] +41 62 775 9902

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: Qx.Desktop development and using qxjqplot..now questions

Vishal
Thanks Tobias,

Is there a demo for this grapher that you mention.

Best regards,
Vishal Sapre



Thanks and best regards,
Vishal Sapre

---
Please DONT print this email, unless you really need to. Save Energy & Paper. Save the Earth.

On Mon, Jul 13, 2015 at 1:54 PM, Tobias Oetiker <[hidden email]> wrote:
Hi Vishal,

I have not ventured into using jqplot for anything 'live'

I have written a live grapher with qooxdoo pretty specialized, but
maybe this can give you some insporation ...

https://github.com/oetiker/RrdGraphJS/blob/master/public/rrdGraphSvg.js

it is based on D3.js since this seems to be much more flexible than
jqplot.

cheers
tobi

Yesterday Vishal wrote:

> Dear Friends,
>
> I have been using qxjqplot for running meters (gauges)
> ​in my single page qx.desktop app.
>
>
> Now I wish to use a charting library to show running live data (like a time
> series) on a chart. Going forward with qxjqplot, I have come to a point
> where data can be shown on a chart very well. However, since the data is
> always coming in fresh, I can only show a part of it while keeping most of
> the data in a background array. The user may want to stop the charting, and
> go back to some point (using a scroll bar). There is no such facility in
> jqplot, while there is something called a zoom proxy...which is like
> this: http://www.jqplot.com/deploy/dist/examples/zoomProxy.html
> <http://www.jqplot.com/deploy/dist/examples/zoomProxy.html>
> However, it does not really work like a scroll bar. in addition the
> controller plot itself will be getting filled in all the time.
> To use this function I have to call something like this:
> $.jqplot.Cursor.zoomProxy(targetPlot, controllerPlot);
>
> How do i call this function from qx? The qxjqplot.MPlot mixin does not
> expose jquery.jqplot object, or does it?
>
> Can you please point me to the right direction so as to use the above
> functionality from qxjqplot?
>
> What would be your suggestion to have an x axis scroll bar to move about
> the time axis?
>
> I also looked at the qxdygraph option. Unfortunately there is no hint as to
> how to use DyGraphs with qooxdoo. The demo given for qxdygraph is good, but
> I dont see an option to look at the actual demo code.
>
> Your help would be seminal for me to complete this tool.
>
> Thanks and best regards,
> Vishal Sapre
>
> p.s: Please find attached my current chart tab with some random data in it.
>

--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
www.oetiker.ch [hidden email] <a href="tel:%2B41%2062%20775%209902" value="+41627759902">+41 62 775 9902

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: Qx.Desktop development and using qxjqplot..now questions

Phyo Arkar

On Mon, Jul 13, 2015 at 8:29 PM, Vishal <[hidden email]> wrote:
Thanks Tobias,

Is there a demo for this grapher that you mention.

Best regards,
Vishal Sapre



Thanks and best regards,
Vishal Sapre

---
Please DONT print this email, unless you really need to. Save Energy & Paper. Save the Earth.

On Mon, Jul 13, 2015 at 1:54 PM, Tobias Oetiker <[hidden email]> wrote:
Hi Vishal,

I have not ventured into using jqplot for anything 'live'

I have written a live grapher with qooxdoo pretty specialized, but
maybe this can give you some insporation ...

https://github.com/oetiker/RrdGraphJS/blob/master/public/rrdGraphSvg.js

it is based on D3.js since this seems to be much more flexible than
jqplot.

cheers
tobi

Yesterday Vishal wrote:

> Dear Friends,
>
> I have been using qxjqplot for running meters (gauges)
> ​in my single page qx.desktop app.
>
>
> Now I wish to use a charting library to show running live data (like a time
> series) on a chart. Going forward with qxjqplot, I have come to a point
> where data can be shown on a chart very well. However, since the data is
> always coming in fresh, I can only show a part of it while keeping most of
> the data in a background array. The user may want to stop the charting, and
> go back to some point (using a scroll bar). There is no such facility in
> jqplot, while there is something called a zoom proxy...which is like
> this: http://www.jqplot.com/deploy/dist/examples/zoomProxy.html
> <http://www.jqplot.com/deploy/dist/examples/zoomProxy.html>
> However, it does not really work like a scroll bar. in addition the
> controller plot itself will be getting filled in all the time.
> To use this function I have to call something like this:
> $.jqplot.Cursor.zoomProxy(targetPlot, controllerPlot);
>
> How do i call this function from qx? The qxjqplot.MPlot mixin does not
> expose jquery.jqplot object, or does it?
>
> Can you please point me to the right direction so as to use the above
> functionality from qxjqplot?
>
> What would be your suggestion to have an x axis scroll bar to move about
> the time axis?
>
> I also looked at the qxdygraph option. Unfortunately there is no hint as to
> how to use DyGraphs with qooxdoo. The demo given for qxdygraph is good, but
> I dont see an option to look at the actual demo code.
>
> Your help would be seminal for me to complete this tool.
>
> Thanks and best regards,
> Vishal Sapre
>
> p.s: Please find attached my current chart tab with some random data in it.
>

--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
www.oetiker.ch [hidden email] <a href="tel:%2B41%2062%20775%209902" value="+41627759902" target="_blank">+41 62 775 9902

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: Qx.Desktop development and using qxjqplot..now questions

oetiker
Today Phyo Arkar wrote:

> https://github.com/oetiker/RrdGraphJS

note that the documentation part is maynly for the Png version ...

cheers
tobi

>
> On Mon, Jul 13, 2015 at 8:29 PM, Vishal <[hidden email]> wrote:
>
> > Thanks Tobias,
> >
> > Is there a demo for this grapher that you mention.
> >
> > Best regards,
> > Vishal Sapre
> >
> >
> >
> > Thanks and best regards,
> > Vishal Sapre
> >
> > ---
> > Please DONT print this email, unless you really need to. Save Energy &
> > Paper. Save the Earth.
> >
> > On Mon, Jul 13, 2015 at 1:54 PM, Tobias Oetiker <[hidden email]> wrote:
> >
> >> Hi Vishal,
> >>
> >> I have not ventured into using jqplot for anything 'live'
> >>
> >> I have written a live grapher with qooxdoo pretty specialized, but
> >> maybe this can give you some insporation ...
> >>
> >> https://github.com/oetiker/RrdGraphJS/blob/master/public/rrdGraphSvg.js
> >>
> >> it is based on D3.js since this seems to be much more flexible than
> >> jqplot.
> >>
> >> cheers
> >> tobi
> >>
> >> Yesterday Vishal wrote:
> >>
> >> > Dear Friends,
> >> >
> >> > I have been using qxjqplot for running meters (gauges)
> >> > ​in my single page qx.desktop app.
> >> >
> >> >
> >> > Now I wish to use a charting library to show running live data (like a
> >> time
> >> > series) on a chart. Going forward with qxjqplot, I have come to a point
> >> > where data can be shown on a chart very well. However, since the data is
> >> > always coming in fresh, I can only show a part of it while keeping most
> >> of
> >> > the data in a background array. The user may want to stop the charting,
> >> and
> >> > go back to some point (using a scroll bar). There is no such facility in
> >> > jqplot, while there is something called a zoom proxy...which is like
> >> > this: http://www.jqplot.com/deploy/dist/examples/zoomProxy.html
> >> > <http://www.jqplot.com/deploy/dist/examples/zoomProxy.html>
> >> > However, it does not really work like a scroll bar. in addition the
> >> > controller plot itself will be getting filled in all the time.
> >> > To use this function I have to call something like this:
> >> > $.jqplot.Cursor.zoomProxy(targetPlot, controllerPlot);
> >> >
> >> > How do i call this function from qx? The qxjqplot.MPlot mixin does not
> >> > expose jquery.jqplot object, or does it?
> >> >
> >> > Can you please point me to the right direction so as to use the above
> >> > functionality from qxjqplot?
> >> >
> >> > What would be your suggestion to have an x axis scroll bar to move about
> >> > the time axis?
> >> >
> >> > I also looked at the qxdygraph option. Unfortunately there is no hint
> >> as to
> >> > how to use DyGraphs with qooxdoo. The demo given for qxdygraph is good,
> >> but
> >> > I dont see an option to look at the actual demo code.
> >> >
> >> > Your help would be seminal for me to complete this tool.
> >> >
> >> > Thanks and best regards,
> >> > Vishal Sapre
> >> >
> >> > p.s: Please find attached my current chart tab with some random data in
> >> it.
> >> >
> >>
> >> --
> >> Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
> >> www.oetiker.ch [hidden email] +41 62 775 9902
> >>
> >>
> >> ------------------------------------------------------------------------------
> >> Don't Limit Your Business. Reach for the Cloud.
> >> GigeNET's Cloud Solutions provide you with the tools and support that
> >> you need to offload your IT needs and focus on growing your business.
> >> Configured For All Businesses. Start Your Cloud Today.
> >> https://www.gigenetcloud.com/
> >> _______________________________________________
> >> qooxdoo-devel mailing list
> >> [hidden email]
> >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> >>
> >>
> >
> >
> > ------------------------------------------------------------------------------
> > Don't Limit Your Business. Reach for the Cloud.
> > GigeNET's Cloud Solutions provide you with the tools and support that
> > you need to offload your IT needs and focus on growing your business.
> > Configured For All Businesses. Start Your Cloud Today.
> > https://www.gigenetcloud.com/
> > _______________________________________________
> > qooxdoo-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> >
> >
>
--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
www.oetiker.ch [hidden email] +41 62 775 9902

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: Qx.Desktop development and using qxjqplot..now questions

Vishal
Phyo, Thanks for the links.

Dear friends,

I want to switch to a general discussion on handling large data sets for drawing charts. I have used jqplot metergauge renderer with live data and have also included easing functions to make the gauge look like an actual analog meter. Myself and product reviewers are quite satisfied with the end result. So from that I experience, I think creating live charts (running) charts with jqplot should satisfy our purpose.
But the meter gauge renderer takes exactly 1 data point everytime (x = 1, and y = actual location of the pointer)

The big difference with line charts is that the data set contains multiple points. Currently my requirement is about 5000 points / series. There are upto 7 series that need to be visible at any time. Ofcourse the actual data set that needs to be stored in memory (either at the browser or at the server) is larger..its about 200,000 points/series for 7 such series.

My strategy is to have an Array() (created like so: this.series1 = [];) for each actual data set. The max length is always chosen by the user from the chart controls. Then we make slices from this data set and send them to chart.redraw(). However, when the number of data samples exceeds the actual data set length, we need to do something like this, everytime we get new data from the server.

What do you think of this?

dataset.shift();
dataset.push(new_data);

the above is prohibitively long for most interactions. On Chrome console, doing the above for a 200000 element array is of the order of 1s or more average case...and sometimes when there are too many tabs open...it has taken more than 10s.

The real issue I think is that Array() operations like push(), shift() even though highly optimized, are still are O(N) operations.
if Array() was implemented using a linked list...could this be easier. if yes, are there any options like this?

Thanks and best regards,
Vishal Sapre




Thanks and best regards,
Vishal Sapre

---
Please DONT print this email, unless you really need to. Save Energy & Paper. Save the Earth.

On Mon, Jul 13, 2015 at 10:10 PM, Tobias Oetiker <[hidden email]> wrote:
Today Phyo Arkar wrote:

> https://github.com/oetiker/RrdGraphJS

note that the documentation part is maynly for the Png version ...

cheers
tobi

>
> On Mon, Jul 13, 2015 at 8:29 PM, Vishal <[hidden email]> wrote:
>
> > Thanks Tobias,
> >
> > Is there a demo for this grapher that you mention.
> >
> > Best regards,
> > Vishal Sapre
> >
> >
> >
> > Thanks and best regards,
> > Vishal Sapre
> >
> > ---
> > Please DONT print this email, unless you really need to. Save Energy &
> > Paper. Save the Earth.
> >
> > On Mon, Jul 13, 2015 at 1:54 PM, Tobias Oetiker <[hidden email]> wrote:
> >
> >> Hi Vishal,
> >>
> >> I have not ventured into using jqplot for anything 'live'
> >>
> >> I have written a live grapher with qooxdoo pretty specialized, but
> >> maybe this can give you some insporation ...
> >>
> >> https://github.com/oetiker/RrdGraphJS/blob/master/public/rrdGraphSvg.js
> >>
> >> it is based on D3.js since this seems to be much more flexible than
> >> jqplot.
> >>
> >> cheers
> >> tobi
> >>
> >> Yesterday Vishal wrote:
> >>
> >> > Dear Friends,
> >> >
> >> > I have been using qxjqplot for running meters (gauges)
> >> > ​in my single page qx.desktop app.
> >> >
> >> >
> >> > Now I wish to use a charting library to show running live data (like a
> >> time
> >> > series) on a chart. Going forward with qxjqplot, I have come to a point
> >> > where data can be shown on a chart very well. However, since the data is
> >> > always coming in fresh, I can only show a part of it while keeping most
> >> of
> >> > the data in a background array. The user may want to stop the charting,
> >> and
> >> > go back to some point (using a scroll bar). There is no such facility in
> >> > jqplot, while there is something called a zoom proxy...which is like
> >> > this: http://www.jqplot.com/deploy/dist/examples/zoomProxy.html
> >> > <http://www.jqplot.com/deploy/dist/examples/zoomProxy.html>
> >> > However, it does not really work like a scroll bar. in addition the
> >> > controller plot itself will be getting filled in all the time.
> >> > To use this function I have to call something like this:
> >> > $.jqplot.Cursor.zoomProxy(targetPlot, controllerPlot);
> >> >
> >> > How do i call this function from qx? The qxjqplot.MPlot mixin does not
> >> > expose jquery.jqplot object, or does it?
> >> >
> >> > Can you please point me to the right direction so as to use the above
> >> > functionality from qxjqplot?
> >> >
> >> > What would be your suggestion to have an x axis scroll bar to move about
> >> > the time axis?
> >> >
> >> > I also looked at the qxdygraph option. Unfortunately there is no hint
> >> as to
> >> > how to use DyGraphs with qooxdoo. The demo given for qxdygraph is good,
> >> but
> >> > I dont see an option to look at the actual demo code.
> >> >
> >> > Your help would be seminal for me to complete this tool.
> >> >
> >> > Thanks and best regards,
> >> > Vishal Sapre
> >> >
> >> > p.s: Please find attached my current chart tab with some random data in
> >> it.
> >> >
> >>
> >> --
> >> Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
> >> www.oetiker.ch [hidden email] <a href="tel:%2B41%2062%20775%209902" value="+41627759902">+41 62 775 9902
> >>
> >>
> >> ------------------------------------------------------------------------------
> >> Don't Limit Your Business. Reach for the Cloud.
> >> GigeNET's Cloud Solutions provide you with the tools and support that
> >> you need to offload your IT needs and focus on growing your business.
> >> Configured For All Businesses. Start Your Cloud Today.
> >> https://www.gigenetcloud.com/
> >> _______________________________________________
> >> qooxdoo-devel mailing list
> >> [hidden email]
> >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> >>
> >>
> >
> >
> > ------------------------------------------------------------------------------
> > Don't Limit Your Business. Reach for the Cloud.
> > GigeNET's Cloud Solutions provide you with the tools and support that
> > you need to offload your IT needs and focus on growing your business.
> > Configured For All Businesses. Start Your Cloud Today.
> > https://www.gigenetcloud.com/
> > _______________________________________________
> > qooxdoo-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> >
> >
>

--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
www.oetiker.ch [hidden email] <a href="tel:%2B41%2062%20775%209902" value="+41627759902">+41 62 775 9902

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel



------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
Reply | Threaded
Open this post in threaded view
|

Re: Qx.Desktop development and using qxjqplot..now questions

Dietrich Streifert
It may be worth having a look into highcharts/highstock which does a lot of optimizations related to large data sets:

http://www.highcharts.com/stock/demo/data-grouping
http://www.highcharts.com/stock/demo/lazy-loading

I'm using highcharts in our apps successfully with qooxdoo, but not with such large data sets.

Regards
Dietrich


Am 14.07.2015 um 14:36 schrieb Vishal:
Phyo, Thanks for the links.

Dear friends,

I want to switch to a general discussion on handling large data sets for drawing charts. I have used jqplot metergauge renderer with live data and have also included easing functions to make the gauge look like an actual analog meter. Myself and product reviewers are quite satisfied with the end result. So from that I experience, I think creating live charts (running) charts with jqplot should satisfy our purpose.
But the meter gauge renderer takes exactly 1 data point everytime (x = 1, and y = actual location of the pointer)

The big difference with line charts is that the data set contains multiple points. Currently my requirement is about 5000 points / series. There are upto 7 series that need to be visible at any time. Ofcourse the actual data set that needs to be stored in memory (either at the browser or at the server) is larger..its about 200,000 points/series for 7 such series.

My strategy is to have an Array() (created like so: this.series1 = [];) for each actual data set. The max length is always chosen by the user from the chart controls. Then we make slices from this data set and send them to chart.redraw(). However, when the number of data samples exceeds the actual data set length, we need to do something like this, everytime we get new data from the server.

What do you think of this?

dataset.shift();
dataset.push(new_data);

the above is prohibitively long for most interactions. On Chrome console, doing the above for a 200000 element array is of the order of 1s or more average case...and sometimes when there are too many tabs open...it has taken more than 10s.

The real issue I think is that Array() operations like push(), shift() even though highly optimized, are still are O(N) operations.
if Array() was implemented using a linked list...could this be easier. if yes, are there any options like this?

Thanks and best regards,
Vishal Sapre




Thanks and best regards,
Vishal Sapre

---
Please DONT print this email, unless you really need to. Save Energy & Paper. Save the Earth.

On Mon, Jul 13, 2015 at 10:10 PM, Tobias Oetiker <[hidden email]> wrote:
Today Phyo Arkar wrote:

> https://github.com/oetiker/RrdGraphJS

note that the documentation part is maynly for the Png version ...

cheers
tobi

>
> On Mon, Jul 13, 2015 at 8:29 PM, Vishal <[hidden email]> wrote:
>
> > Thanks Tobias,
> >
> > Is there a demo for this grapher that you mention.
> >
> > Best regards,
> > Vishal Sapre
> >
> >
> >
> > Thanks and best regards,
> > Vishal Sapre
> >
> > ---
> > Please DONT print this email, unless you really need to. Save Energy &
> > Paper. Save the Earth.
> >
> > On Mon, Jul 13, 2015 at 1:54 PM, Tobias Oetiker <[hidden email]> wrote:
> >
> >> Hi Vishal,
> >>
> >> I have not ventured into using jqplot for anything 'live'
> >>
> >> I have written a live grapher with qooxdoo pretty specialized, but
> >> maybe this can give you some insporation ...
> >>
> >> https://github.com/oetiker/RrdGraphJS/blob/master/public/rrdGraphSvg.js
> >>
> >> it is based on D3.js since this seems to be much more flexible than
> >> jqplot.
> >>
> >> cheers
> >> tobi
> >>
> >> Yesterday Vishal wrote:
> >>
> >> > Dear Friends,
> >> >
> >> > I have been using qxjqplot for running meters (gauges)
> >> > ​in my single page qx.desktop app.
> >> >
> >> >
> >> > Now I wish to use a charting library to show running live data (like a
> >> time
> >> > series) on a chart. Going forward with qxjqplot, I have come to a point
> >> > where data can be shown on a chart very well. However, since the data is
> >> > always coming in fresh, I can only show a part of it while keeping most
> >> of
> >> > the data in a background array. The user may want to stop the charting,
> >> and
> >> > go back to some point (using a scroll bar). There is no such facility in
> >> > jqplot, while there is something called a zoom proxy...which is like
> >> > this: http://www.jqplot.com/deploy/dist/examples/zoomProxy.html
> >> > <http://www.jqplot.com/deploy/dist/examples/zoomProxy.html>
> >> > However, it does not really work like a scroll bar. in addition the
> >> > controller plot itself will be getting filled in all the time.
> >> > To use this function I have to call something like this:
> >> > $.jqplot.Cursor.zoomProxy(targetPlot, controllerPlot);
> >> >
> >> > How do i call this function from qx? The qxjqplot.MPlot mixin does not
> >> > expose jquery.jqplot object, or does it?
> >> >
> >> > Can you please point me to the right direction so as to use the above
> >> > functionality from qxjqplot?
> >> >
> >> > What would be your suggestion to have an x axis scroll bar to move about
> >> > the time axis?
> >> >
> >> > I also looked at the qxdygraph option. Unfortunately there is no hint
> >> as to
> >> > how to use DyGraphs with qooxdoo. The demo given for qxdygraph is good,
> >> but
> >> > I dont see an option to look at the actual demo code.
> >> >
> >> > Your help would be seminal for me to complete this tool.
> >> >
> >> > Thanks and best regards,
> >> > Vishal Sapre
> >> >
> >> > p.s: Please find attached my current chart tab with some random data in
> >> it.
> >> >
> >>
> >> --
> >> Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
> >> www.oetiker.ch [hidden email] <a moz-do-not-send="true" href="tel:%2B41%2062%20775%209902" value="+41627759902">+41 62 775 9902
> >>
> >>
> >> ------------------------------------------------------------------------------
> >> Don't Limit Your Business. Reach for the Cloud.
> >> GigeNET's Cloud Solutions provide you with the tools and support that
> >> you need to offload your IT needs and focus on growing your business.
> >> Configured For All Businesses. Start Your Cloud Today.
> >> https://www.gigenetcloud.com/
> >> _______________________________________________
> >> qooxdoo-devel mailing list
> >> [hidden email]
> >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> >>
> >>
> >
> >
> > ------------------------------------------------------------------------------
> > Don't Limit Your Business. Reach for the Cloud.
> > GigeNET's Cloud Solutions provide you with the tools and support that
> > you need to offload your IT needs and focus on growing your business.
> > Configured For All Businesses. Start Your Cloud Today.
> > https://www.gigenetcloud.com/
> > _______________________________________________
> > qooxdoo-devel mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
> >
> >
>

--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
www.oetiker.ch [hidden email] <a moz-do-not-send="true" href="tel:%2B41%2062%20775%209902" value="+41627759902">+41 62 775 9902

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel




------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/


_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
qooxdoo-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel