# Perspective Scatter Plot

**URL:** <https://forum.inductiveautomation.com/t/perspective-scatter-plot/31575>\
**Category:** Ignition\
**Created:** [January 23, 2020, 10:27pm UTC](https://forum.inductiveautomation.com/t/perspective-scatter-plot/31575 "2020-01-23T22:27:53Z")\
**Posts on this page:** 1\
**Showing post:** 13

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [February 7, 2025, 5:23pm UTC](https://forum.inductiveautomation.com/t/perspective-scatter-plot/31575/13 "2025-02-07T17:23:38Z")

</div>

> [@malone46844](#):
>
> virtually zero render time.

Love to hear it.

The limiting factor when drawing large datasets (100k+ points) is actually just that they have to exist in the property tree. By using the chart's [JavaScript proxy object](https://docs.mussonindustrial.com/ignition/embr-charts/components/chart-js/methods/getJavaScriptProxy/) you can put data points directly into the chart, bypassing the property tree entirely.

This post has some more details.

> [@Musson Industrial’s Embr-Charts Module](https://forum.inductiveautomation.com/t/musson-industrial-s-embr-charts-module/91618/87):
>
> Here's an example of loading extremely large datasets into the chart by bypassing the component props and directly updating the data of the chart instance. I'm generating my data here, but it's not hard to imagine using a query instead. def runAction(self, event): from java.lang import Math component = self.parent.parent.getChild("Chartjs") chart = component.getJavaScriptProxy('chart') elements = self.view.custom.actions.elements chunkSize = self.view.custom.actions.chunkSize c…

---

_[View the full topic](https://forum.inductiveautomation.com/t/perspective-scatter-plot/31575)._
