<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by ZingChart on Medium]]></title>
        <description><![CDATA[Stories by ZingChart on Medium]]></description>
        <link>https://medium.com/@zingchart?source=rss-733366213bd9------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/2*NgLvw9TOndmf5owpppbnOA.jpeg</url>
            <title>Stories by ZingChart on Medium</title>
            <link>https://medium.com/@zingchart?source=rss-733366213bd9------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 16 Jun 2026 04:01:59 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@zingchart/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Connecting Data to a Data Visualization Dashboard with Vue]]></title>
            <link>https://medium.com/@zingchart/connecting-data-to-a-data-visualization-dashboard-with-vue-a83452a1f691?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/a83452a1f691</guid>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[vue]]></category>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[dashboard]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Fri, 15 Nov 2019 19:36:39 GMT</pubDate>
            <atom:updated>2019-11-26T19:40:39.728Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2Zxknwzm6HEoyM4vQ7lfZw.jpeg" /></figure><p><em>This is a continuation article in a series of data visualization examples utilizing the JavaScript framework Vue.js, ZingChart and ZingGrid. We highly recommend starting from the </em><a href="https://medium.com/@zingchart/interactive-charts-with-vue-js-e72de19fa6cd?"><em>first article</em></a><em> to follow along more easily.</em></p><p>In our <a href="https://medium.com/@zingchart/creating-a-data-visualization-dashboard-with-vue-7950bc32bc94">previous article,</a> we walked through an example of how to create a data visualization dashboard with <a href="https://www.zingchart.com/hello/create-interactive-charts-in-vue-with-zingchart?utm_source=medium&amp;utm_medium=blog&amp;utm_campaign=vue-series">ZingChart</a> and <a href="https://www.zinggrid.com?utm_source=medium&amp;utm_medium=blog&amp;utm_campaign=vue-integration">ZingGrid</a>. We’re continuing this example by connecting our dashboard to real data, and handing the data management and fetching from the server to ZingGrid.</p><p>If you’d like to follow along, a finished example from our last article is the best place to start. You can grab that code from the Github repository under the part-2-complete branch: <a href="https://github.com/zingsoftinc/vue-dashboard">https://github.com/zingsoftinc/vue-dashboard</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Z4ebMfNPJX7t2G9ZsP3RAQ.png" /></figure><h3>Creating a REST API for our dataset</h3><p>We’ll start by creating a REST API server to host our transactions data. We recommend using <a href="https://github.com/typicode/json-server">json-server </a>to quickly deploy endpoints in less than a minute flat!</p><p>First install the JSON server via NPM:</p><p>$ npm install -g json-server</p><p>We can then run the server directly from our transactions.json file with:</p><p>json-server --watch /path/tp/transactions.json</p><p>We can see if the endpoint is working by making a GET call to http://localhost:3000/transactionsto obtain a full list of our data.</p><h3>Utilizing ZingGrid to manage the data</h3><p>In the previous article of this series, we handled data flow from the App.vue down to each component, and obtained the data from a single file.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/881/1*R9tBDWel0EwlhHKc4RBrZQ.png" /><figcaption>Diagram of data flow from the App.vue down to each component</figcaption></figure><p>In this article, we’re utilizing ZingGrid’s REST API feature to obtain our dataset from a remote data source. We’ll then communicate the data to all other components on the page, via the main parent App.vue.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/860/1*KHH-Kzha5cennfPORIotEw.png" /><figcaption>Diagram of data flow from the App.vue using a REST API</figcaption></figure><h3>Connecting ZingGrid to a remote data source</h3><p>ZingGrid works out of the box with most REST API endpoints. We simply configure our data with zg-data and zg-param components.</p><pre>&lt;zg-data&gt;<br> &lt;zg-param name=&quot;src&quot; value=&quot;&#39;<a href="http://localhost:3000/transactions">http://localhost:3000/transactions</a>&quot;&gt;&lt;/zg-param&gt;<br> &lt;zg-param name=&quot;searchKey&quot; value=&quot;search&quot;&gt;&lt;/zg-param&gt;<br> &lt;zg-param name=&quot;loadByPage&quot; value=&quot;true&quot;&gt;&lt;/zg-param&gt;<br>&lt;/zg-data&gt;</pre><p>Let’s breakdown each zg-param attribute:</p><ul><li>src— the location of the REST API endpoint where our data resides.</li><li>searchKey — when using the built-in search functionality on ZingGrid, we specify the query parameter needed to search in the REST API. In our example, json-server has the query parameter of search.</li><li>loadByPage — Load by page enables paginated queries on your REST API. This helps reduce the amount of data being transferred by only requesting what is in view. Suppose /transactions has a total of 2000 entries, and ZingGrid has a paginated view of 10 entries. Without loadByPage, we would be downloading all 2000 entries initially, instead of the 10 that are just in view!</li></ul><h3>Connecting our calendar filter to ZingGrid</h3><p>In order to utilize an external component to handle our data in conjunction with ZingGrid, we need to be a little creative.</p><p>First we pass the start and end dates from our calendar to ZingGrid in our App.vue file.</p><pre>&lt;v-date-picker mode=&quot;range&quot; v-model=&quot;range&quot;/&gt;</pre><pre>&lt;transaction-details-grid :start=&quot;range.start&quot; :end=&quot;range.end&quot; /&gt;</pre><p>In our TransactionDetailsGrid, we create a new computed property queryString to reflect a query string with timestamp values, to be appended to our ZingGrid’s data component.</p><p>json-server has equality operations built in the REST API. For our calendar, we want to create a date range around each timestamp.</p><pre>computed: {<br>  queryString() {<br>    return `timestamp_lte=${this.end.getTime()}&amp;timestamp_gte=${this.start.getTime()}`;<br>    }<br>  }</pre><p>Finally, we modify our src being passed to ZingGrid, and append our queryString value to it.</p><pre>&lt;zg-param name=&quot;src&quot; :value=&quot;&#39;<a href="http://localhost:3000/transactions?&#39;">http://localhost:3000/transactions?&#39;</a> + queryString&quot;&gt;&lt;/zg-param&gt;</pre><p>Now every time our calendar date-range is updated, ZingGrid re-fetches the data!</p><h3>Connecting our charts to our data</h3><p>We now need to connect the data obtained from ZingGrid to our charts.</p><p>We hook into ZingGrid’s event system to notify our Vue application when data changes, is filtered, or is searched upon.</p><p>We attach event listeners to ZingGrid, and pass a localized callback to emit an event back up to App.vue</p><pre>const getData = () =&gt; {<br>  const data = this.$refs.myGrid.getData({<br>    rows: &#39;visible&#39;<br>  });<br>  return this.$emit(&#39;ondatachange&#39;, data);<br>};<br>    <br>this.$refs.myGrid.addEventListener(&#39;data:load&#39;, getData);<br>this.$refs.myGrid.addEventListener(&#39;grid:search&#39;, getData);<br>this.$refs.myGrid.addEventListener(&#39;grid:filter&#39;, getData);</pre><p>Back up in App.vue, we listen for the ondatachange in our TransactionDetailsGrid, and update our local transactionsdata.</p><pre>&lt;transaction-details-grid<br> :start=&quot;range.start&quot;<br> :end=&quot;range.end&quot;<br> <a href="http://twitter.com/mouseover">@mouseover</a>=&quot;handleEntryHover&quot;<br> <a href="http://twitter.com/ondatachange">@ondatachange</a>=&quot;updateData&quot; /&gt;</pre><pre>updateData(data) {<br> // We perform a copy of our data so we can modify it locally.<br> this.transactions = JSON.parse(JSON.stringify(data));<br>},</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/897/1*nHN0mOBPyQL3i60gNLjnhA.gif" /><figcaption><a href="https://glitch.com/~vue-dashboard-live-data">https://glitch.com/~vue-dashboard-live-data</a></figcaption></figure><p>Our dashboard should be fully functional, with our new remote dataset! Note that filtering and searching in ZingGrid also modify the state of the charts and what values are being represented. This allows for powerful data exploration with <a href="https://www.zinggrid.com?utm_source=medium&amp;utm_medium=blog&amp;utm_campaign=vue-integration">ZingGrid</a> and <a href="https://www.zingchart.com/?utm_source=medium&amp;utm_medium=blog&amp;utm_campaign=vue-integration">ZingChart</a>, with the ability to sift through large sets of data. You can view the finished product here: <a href="https://glitch.com/~vue-dashboard-live-data">https://glitch.com/~vue-dashboard-live-data</a></p><p>That concludes our series for how to create a data visualization dashboard with Vue! If you’d like to see more Vue data visualization content, feel free to ask away in the comments!</p><p><em>A pioneer in the world of data visualization, </em><a href="https://www.zingchart.com/"><em>ZingChart</em></a><em> is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a83452a1f691" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Creating charts in React just got easier]]></title>
            <link>https://medium.com/@zingchart/creating-charts-in-react-just-got-easier-96a804515ecd?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/96a804515ecd</guid>
            <category><![CDATA[reactjs]]></category>
            <category><![CDATA[charts]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Fri, 08 Nov 2019 17:12:45 GMT</pubDate>
            <atom:updated>2019-11-08T17:12:45.381Z</atom:updated>
            <content:encoded><![CDATA[<h4>Adding charts to your React Application just got easier thanks to ZingChart’s revised React component.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EYjhdQa8CIxOAQsm-ANZ3w.jpeg" /></figure><p>The ZingChart team recently updated the zingchart-react component to create visualizations by adding more features and direct access to events and methods right on the component! We’re excited to show you how it works!</p><h3>ZingChart — The last data visualization library you’ll need</h3><p>ZingChart is one of the original JavaScript charting libraries, and continues to innovate and improve on its feature set. With over 35 different chart types, a rich API of methods/events to integrate with, and a dedicated support team, ZingChart provides an all-in-one solution for your data visualization needs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7ZzGSf5xI2lZ-hS66TInVA.png" /><figcaption>ZingChart has over 35 different base chart types and hundreds of configurations</figcaption></figure><h3>Add charts to your React.js application in less than a minute</h3><p>If you don’t have a React Application, you can easily set one up with <a href="https://github.com/facebook/create-react-app">create-react-app</a></p><p>$ npx create-react-app myApplication</p><p>First we add the package to our React Application via NPM:</p><p>$ npm i zingchart-react</p><p>We then include the component in the project file where we want a chart rendered.</p><pre>import ZingChart from &#39;zingchart-react&#39;;</pre><p>Finally, we add a chart into our markup to be rendered!</p><pre>class App extends Component {<br>  constructor(props) {<br>    super(props);<br>    this.state = {<br>      config: {<br>        type: &#39;bar&#39;,<br>        series: [{<br>          values: [4,5,3,4,5,3,5,4,11]<br>        }]<br>      }<br>    }<br>  }<br>  render() {<br>    return (<br>      &lt;div&gt;<br>        &lt;ZingChart data={this.state.config}/&gt;<br>      &lt;/div&gt;<br>    );<br>  }<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LqHQzpFlYhic48QwzDtdFg.png" /><figcaption><a href="https://glitch.com/~react-chart">https://glitch.com/~react-chart</a></figcaption></figure><p>That was it! Only a few lines of code, and we have a fully reactive chart that updates when your data does.</p><h3>Taking it a step further</h3><p>The above example is a minimal example of how simple it is to create a chart in ZingChart, however the library is powerful enough to make more complicated and interactive visualizations, too.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/812/1*__tZ6TVmTEEtEUgehy6uGw.gif" /><figcaption><a href="https://glitch.com/~zingchart-react-example">https://glitch.com/~zingchart-react-example</a></figcaption></figure><h3>REACTivity</h3><p>The zingchart-react component is reactive to all of its properties — from the chart configuration to the data. If any changes are sent to the component, the chart is re-rendered automatically.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/735/1*K2Pa__ZBIFsU97seNjjcVw.gif" /><figcaption><a href="https://glitch.com/~zingchart-react-reactivity">https://glitch.com/~zingchart-react-reactivity</a></figcaption></figure><h3>Events and Methods — Tying your app together with ZingChart</h3><p>The revised ZingChart component is all about connectivity to your React component. Events are automatically bound to the function you provide via props, and all available ZingChart methods are available when you access a specific component via refs.</p><h4>Events</h4><p>By binding a function to a known ZingChart event prop, we can perform custom actions when a chart emits an event. In the example below the event node_mouseover is emitted and its contents are displayed.</p><pre>&lt;ZingChart ref={this.chart} data={this.state.config} node_mouseover={this.nodeInfo}/&gt;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/763/1*aI0ImyU8w4yJJonuG9rLKQ.gif" /><figcaption><a href="https://glitch.com/~zingchart-react-events">https://glitch.com/~zingchart-react-events</a></figcaption></figure><h4>Methods</h4><p>Methods can be called when a ref is given to the component, and a known method is called from the instance of the component. Below is an example of dynamically adding a plot, from a custom button created in React.</p><pre>&lt;ZingChart ref={this.chart} data={this.state.config}/&gt;</pre><pre>...</pre><pre>this.chart.current.addplot({<br>  data: {<br>    values: [5,5,3,6,7,3,4,6,7],<br>    text: &quot;My new plot&quot;<br>  }<br>});</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/636/1*Jk6lhMrZo_LMtzq4QwLurQ.gif" /><figcaption><a href="https://glitch.com/~zingchart-react-methods">https://glitch.com/~zingchart-react-methods</a></figcaption></figure><p>All of the above examples can be found on our glitch collection:</p><p><a href="https://glitch.com/@zing-soft/react">https://glitch.com/@zing-soft/react</a></p><h3>Get Charting!</h3><p>With a better understanding of ZingChart and its React component, all you need is to include it into your application. Head over to our <a href="https://github.com/zingchart/zingchart-react">Github repository</a> for the full documentation of the component:</p><p><a href="https://github.com/zingchart/zingchart-react">zingchart/zingchart-react</a></p><p><em>A pioneer in the world of data visualization, </em><a href="https://zingchart.com/"><em>ZingChart</em></a><em> is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=96a804515ecd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Creating a Data Visualization Dashboard with Vue]]></title>
            <link>https://medium.com/@zingchart/creating-a-data-visualization-dashboard-with-vue-7950bc32bc94?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/7950bc32bc94</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[dashboard]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[vuejs]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Mon, 28 Oct 2019 21:26:02 GMT</pubDate>
            <atom:updated>2019-11-26T19:39:48.272Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Dou8-3DtW_9VleTsFJMw2Q.jpeg" /></figure><p>Creating custom dashboards is hard work! Whether it be an analytics dashboard to monitor your site’s traffic and social presence, or a SaaS dashboard to see how your product is growing, creating a dashboard from scratch can be quite complex and time-consuming.</p><p>This is the second article in our series about integrating <a href="https://www.zingchart.com/hello/create-interactive-charts-in-vue-with-zingchart?utm_source=medium&amp;utm_medium=blog&amp;utm_campaign=vue-series">ZingChart</a> with Vue to create an interactive dashboard. If you’d like to learn more about the zingchart-vue component, check out the <a href="https://medium.com/@zingchart/interactive-charts-with-vue-js-e72de19fa6cd">first article in this series</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*K2EcGae5Q4OgVQwOmJrwPA.png" /><figcaption>This interactive Vue sales dashboard includes ZingChart’s bar, line, and pie chart types, as well as a ZingGrid data table.</figcaption></figure><p>With the use of third party libraries, we can alleviate most of the heavy lifting and create dashboards that have complex interactivity with minimal effort. This article will be an overview of the libraries needed to create almost any type of dashboard.</p><ul><li><a href="https://vuejs.org/">Vue.js </a>— We will be using the popular Vue JavaScript framework to build our dashboard around. With its robust data handling and rich developer community with UI widgets, this is the perfect framework to set the groundwork.</li><li><a href="https://www.zingchart.com">ZingChart</a> — To create dashboards with unique visualizations, we will need a library that covers all use cases. ZingChart provides over 30 different chart types including the basics such as Line, Bar, and Pie Charts, but also more unique visualizations such as WordCloud, Gauge, and Radar. The library even has maps!</li><li><a href="https://www.zinggrid.com">ZingGrid</a> — Dashboards aren’t complete without a data table to display details about our data in a logical format. A complementary product to ZingChart, ZingGrid will provide a useful set of features to handle our data including filtering, sorting, and searching. With its unique compatibility with ZingChart allowing rich interactivity between the two products, it’s a no brainer to add this library to our arsenal.</li></ul><h3>Visualizing your Data with ZingChart</h3><p>We can easily customize and add charts to our dashboard using the zingchart-vue component. The component allows for easy data-binding, and exposes out ZingChart’s events and methods to the component level. For more information about the ZingChart Vue component, check out the <a href="https://medium.com/@zingchart/interactive-charts-with-vue-js-e72de19fa6cd">previous article</a> in this series:</p><p><a href="https://medium.com/@zingchart/interactive-charts-with-vue-js-e72de19fa6cd">Interactive charts with Vue.js</a></p><h3>Inspecting your Data with ZingGrid</h3><p>Charts and data visualizations are great for understanding your data, but when you need to see specific details of an event it can be tedious. Data grids and tables are useful for organizing large amounts of data and for finding specific entries in that data.</p><h4>Adding Data to the Grid</h4><p>Unlike ZingChart, ZingGrid is built as a web component and is portable in any framework including Vue. We can easily add data to our grid with the data attribute and the .prop modifier, which stringifies the data before being sent to ZingGrid. This not only allows ZingGrid to retain a fresh copy of the data, but automatically converts it to a format that web components can understand.</p><pre>&lt;zing-grid :data.prop=&quot;myData&quot;&gt;&lt;/zing-grid&gt;</pre><h4>Filtering, Sorting, and Pagination, Oh My!</h4><p>A list of data entries isn’t useful unless there is a way to navigate through the list easily. ZingGrid provides multiple useful features that let you easily sort through your data. Best of all, adding these features is as simple as adding an attribute to the zing-grid element.</p><pre>&lt;zing-grid :data.prop=&quot;myData&quot; filter sort pager&gt;&lt;/zing-grid&gt;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/775/1*u-O3TXsPdFeyTmqg0vw4Eg.gif" /><figcaption>This interactive ZingGrid data table includes filtering, sorting, and pagination.</figcaption></figure><h4>Interactivity with Other Components</h4><p>Like ZingChart, ZingGrid allows for deep integration to its environment with API methods and events. You can learn more about these in the docs: <a href="https://www.zinggrid.com/docs/api-methods">https://www.zinggrid.com/docs/api-methods</a></p><p>Now that we have a basic understanding of the tools we’re going to utilize, let’s build our dashboard!</p><h3>Getting Started</h3><p>For this tutorial, you will need the vue-cli installed on your computer. This will allow us to quickly scaffold, run, and test our dashboard with ease. If you don’t have this cli tool installed, head over to <a href="https://cli.vuejs.org/#getting-started">https://cli.vuejs.org/#getting-started</a> to start there.</p><p>Once it’s installed, we’ll create a project with our dashboard starter code.</p><pre>vue create --preset zingsoftinc/vue-dashboard#starter myDashboard</pre><p>After this tutorial you should be familiar with:</p><ul><li>Basic data flow and manipulation in a dashboard</li><li>Creating ZingChart and ZingGrid in Vue</li><li>Communicating across multiple widgets in the dashboard</li></ul><p>The starter code contains styling and structure already defined to help you focus on the important highlights of creating your dashboard.</p><h3>Project Overview</h3><pre>myDashboard/<br>├── src/<br>│   ├── App.vue<br>│   ├── main.js<br>│   │── data/<br>│   │  └── transactions.js<br>│   ├── components/<br>│   │  ├── LatestTransactionsChart.vue<br>│   │  ├── TransactionDetailsGrid.vue<br>└───└──└── TransactionBreakdownChart.vue</pre><ul><li>App.vue — The root Vue component which contains our dashboard</li><li>main.js — The entry point for our Vue application</li><li>components/ — Various charts and grids that we will learn how to connect together</li><li>data/ — The dataset that our dashboard will build off of. In future tutorials, we’ll learn how to connect and filter data to remote sources, including databases.</li></ul><p>The starter code has three components pre-defined and styled for you. Our focus will be on how to manipulate our dataset to pass data to each component, and to tie-in interactions across those components.</p><h4>Our Dataset</h4><p>For this tutorial we’ll be creating a sales analytics dashboard based on a set of transactions. Our dataset is simply an array of these objects:</p><pre>{<br>  “id”:1,<br>  ”first_name”:”Ketti”,<br>  ”last_name”:”Latham”,<br>  ”email”:”<a href="mailto:klatham0@time.com">klatham0@time.com</a>”,<br>  ”company”:”InnoZ”,<br>  ”amount”:”1529.29&quot;,<br>  ”timestamp”:1554550724000,<br>  ”license_type”:”saas”,<br>  ”purchase_type”:”new”<br>}</pre><p>Important attributes :</p><ul><li>license_type — Either SaaS, internal, website, or enterprise</li><li>purchase_type — Either new, renewal, or cancellation (if the user has opted out from a renewal)</li></ul><h4>Our Components</h4><p>We will be focusing on three different components in this tutorial, comprised of ZingChart and ZingGrid.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xVxz5EydArygQF8HBHC8og.png" /><figcaption>A close-up of some of the components in our Vue dashboard</figcaption></figure><ul><li><strong>LatestTransactionsChart.vue — </strong>A line chart comparing the amount earned in dollars over time</li><li><strong>TransactionBreakdownChart.vue — </strong>A pie chart breaking down the occurrence of each transaction type</li><li><strong>TransactionDetailsGrid.vue — </strong>A grid listing each transaction during the period</li></ul><h3>Step 1: Passing Data to the Components</h3><p>For our components to render any charts or grids, we need to pass the data to each component individually since specific charts and grids may need to have the data formatted differently.</p><p>First we’ll import our data from the transactions file into our App.vue, along with our chart components. We also register the components in our Vue app to be used.</p><pre>// App.vue<br>&lt;script&gt;<br>  import transactions from &#39;./data/transactions.js&#39;;<br>  import LatestTransactionsChart from &quot;./components/LatestTransactionsChart.vue&quot;;<br>  import TransactionBreakdownChart from &quot;./components/TransactionBreakdownChart.vue&quot;;<br>  import TransactionDetailsGrid from &quot;./components/TransactionDetailsGrid.vue&quot;;</pre><pre>export default {<br>    name: &#39;app&#39;,<br>    // Register the components to be used<br>    components: {<br>      LatestTransactionsChart,<br>      TransactionBreakdownChart,<br>      TransactionDetailsGrid,<br>    },<br>    data() {<br>      return {<br>        transactions,<br>      }<br>    }<br>  }<br>&lt;/script&gt;</pre><p>Then we’ll pass the transactions object into each of our three components.</p><pre>// App.vue<br>&lt;template&gt;<br>  &lt;div id=&quot;app&quot;&gt;<br>    &lt;section class=&quot;dashboard&quot;&gt;<br>      ...<br>      &lt;div class=&quot;dashboard__row&quot;&gt;<br>        &lt;latest-transactions-chart ref=&quot;latestTransactions&quot; :entries=&quot;transactions&quot;/&gt;<br>        &lt;transaction-breakdown-chart ref=&quot;transactionBreakdown&quot; :entries=&quot;transactions&quot;/&gt;<br>      &lt;/div&gt;<br>      &lt;div class=&quot;dashboard__row&quot;&gt;<br>        &lt;transaction-details-grid :entries=&quot;transactions&quot;/&gt;<br>      &lt;/div&gt;<br>    &lt;/section&gt;<br>  &lt;/div&gt;<br>&lt;/template&gt;</pre><p>Let’s dive into each of our three components to manipulate the data to render out a chart or a grid.</p><h4>Latest Transactions Chart</h4><p>For the “Latest Transactions Chart”, we need to format our transactions array into a single dimensional array containing a pair of values: the timestamp, followed by the dollar amount for each transaction.</p><pre>// LatestTransactionsChart<br>&lt;template&gt;<br>  &lt;zingchart :data=&quot;chartConfig&quot;&gt;&lt;/zingchart&gt;<br>&lt;/template&gt;</pre><pre>&lt;script&gt;<br>  export default {<br>    props: [&#39;entries&#39;],<br>    computed: {<br>     values() {<br>        return this.entries.map(o =&gt; {<br>          return [o.timestamp, parseFloat(o.amount.slice(1,-1))]<br>       });<br>     },<br>     chartConfig() {<br>       ...<br>       series: [{<br>         values: this.values,<br>       }],<br>       ...<br>     },<br>    },<br>  }<br>&lt;/script&gt;</pre><p>We write both the values and chartConfig as computed properties rather than data so we can automatically track any changes that occur to the data from the parent App.vue component.</p><h4>Transaction Breakdown Chart</h4><p>Similarly for our “Transaction Breakdown” Chart, we need to format the data as an array of objects, with each value containing the total value of the transaction types. ZingChart will calculate the overall percentage for us, but we’ll need to do a bit of summations over the transactions:</p><pre>// TransactionBreakdown<br>&lt;template&gt;<br>  &lt;zingchart :data=&quot;chartConfig&quot;&gt;&lt;/zingchart&gt;<br>&lt;/template&gt;<br>&lt;script&gt;<br>  export default {<br>    props: [&#39;entries&#39;],<br>    computed: {<br>     values() {<br>      const categories = this.entries.reduce((acc, transaction) =&gt; {<br>        acc[transaction.purchase_type] = acc[transaction.purchase_type] || 0;<br>        acc[transaction.purchase_type]++;<br>        return acc;<br>      }, {});<br>      return Object.keys(categories).map((name) =&gt; {<br>        return {<br>          values: [categories[name]],<br>          text: name<br>        }<br>      })<br>     },<br>     chartConfig() {</pre><pre>const colors = [<br>        {<br>          backgroundColor: &#39;#04A3F5&#39;,<br>          hoverState: {<br>            backgroundColor: &#39;#45D6C4&#39;<br>          }<br>        },<br>        {<br>          backgroundColor: &#39;#98D1EE&#39;,<br>          hoverState: {<br>            backgroundColor: &#39;#45D6C4&#39;<br>          }<br>        },<br>        {<br>          backgroundColor: &#39;#295A73&#39;,<br>          hoverState: {<br>            backgroundColor: &#39;#45D6C4&#39;<br>          }<br>        },<br>      ]; <br>      <br>       ...<br>        series: this.values.map((o,index) =&gt; Object.assign(o, colors[index])),<br>       ...</pre><pre>},<br>    },<br>  }<br>&lt;/script&gt;</pre><h4>Transaction Details Grid</h4><p>As for the “Transaction Details” Grid, ZingGrid natively accepts an array of objects so all we have to do is pass the data!</p><pre>&lt;transaction-details-grid :entries=&quot;transactions&quot;&gt;&lt;/transaction-details-grid&gt;</pre><h3>Step 2: Adding an External Component to Control Our Data</h3><p>If all went smoothly you should see the charts and grids populated with a full year’s worth of transactions. But what if we only wanted to view a month’s view of transactions? We would need to control our data at the App level to do so.</p><p>We will be adding an additional library to help us select dates via a calendar component:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Zzy3okb_PIsed12_ptEL0Q.gif" /><figcaption>V-calendar to filter our transactions by date.</figcaption></figure><p><a href="https://vcalendar.io/">V-Calendar</a></p><p>First let’s install the library to our project:</p><p>$ npm i v-calendar</p><p>And add the following lines to our main.js, just before the new Vue constructor is invoked.</p><pre>import VCalendar from &#39;v-calendar&#39;;<br>Vue.use(VCalendar);</pre><p>Inside of our App.vue file we’ll need to add a new field in our data object to keep track of the start and end dates that the calendar is displaying. We will default to showing the current month’s transactions.</p><pre>data() {<br>    return {<br>      transactions,<br>      range: {<br>        start: new Date().setDate(1), <br>        end: new Date() <br>      }<br>    };<br>  }</pre><p>We will be using the range property to control both the start and end dates with one widget. Next, we’ll add the v-calendar component to our template, binding both the start and end dates to our new data fields.</p><pre>&lt;header&gt;<br>  &lt;h4&gt;Date Range&lt;/h4&gt;<br>  &lt;v-date-picker mode=&quot;range&quot; v-model=&quot;range&quot;/&gt;<br>&lt;/header&gt;</pre><p>A new computed property called filteredTransactions will be needed to return a subset of the transactions, based on the date range.</p><pre>computed: {<br>    filteredTransactions() {<br>      return this.transactions.filter(entry =&gt; {<br>        return (<br>          entry.timestamp &gt;= this.range.start.getTime() &amp;&amp;<br>          entry.timestamp &lt; this.range.end.getTime()<br>        );<br>      });<br>    },<br>...</pre><p>Finally, we’ll update all the components to accept the new filtered date range:</p><pre>&lt;template&gt;<br>  &lt;div&gt;<br>    &lt;latest-transactions-chart :entries=&quot;filteredTransactions&quot;&gt;&lt;/latest-transactions-chart&gt;<br>    &lt;transaction-breakdown-chart :entries=&quot;filteredTransactions&quot;&gt;&lt;/transaction-breakdown-chart&gt;<br>    &lt;transaction-details-grid :entries=&quot;filteredTransactions&quot;&gt;&lt;/transaction-details-grid&gt;<br>  &lt;/div&gt;<br>&lt;/template&gt;</pre><p>The charts and grids should now show a subset range of the transactions! This also demonstrates how data modeling works in Vue: one-way reactivity from the parent to its children.</p><h3>Step 3: Adding Interactions Between the Components</h3><p>Our dashboard is looking more complete, but to take it a step further we can add shared interactivity between the components. Both ZingChart and ZingGrid come with rich API Methods and Events, from reacting to MouseEvents to modifying state from external methods.</p><p>We will be demonstrating how to control mouseover events from ZingGrid to highlight the same entry in both our Latest Transactions and Transaction Breakdown Charts.</p><p>To begin, we need to listen for ZingGrid’s row mouseover event. ZingGrid calls this a record:mouseover event. We perform this in the component’s mounted() lifecycle callback once the grid has finished rendering.</p><pre>// TransactionDetailsGrid.vue<br>mounted() {<br>    // Attach an event listener to ZingGrid<br>    this.$refs.myGrid.addEventListener(&#39;record:mouseover&#39;, (e) =&gt; {<br>      this.$emit(&#39;mouseover&#39;, e);<br>    });<br>  }</pre><p>Since we have encapsulated each of our chart and grid components in their own respective components for code clarity, we need to emit this event back up into our App.vue parent component.</p><p>Back in our App.vue file, we need to delegate the mouseover event from ZingGrid to our children charts.</p><p>First we define a callback that the mouseover event should listen to.</p><pre>// App.vue</pre><pre>&lt;transaction-details-grid @mouseover=&quot;handleEntryHover&quot;&gt;&lt;/transaction-details-grid&gt;</pre><p>In our new method handleEntryHover, we reference both our charts and call on the ZingChart methods that are available thanks to the zingchart-vue component.</p><pre>methods: {<br>  handleEntryHover(e) {<br>    // Obtain references to the charts<br>    let latestTransactions = this.$refs.latestTransactions;  <br>    let transactionBreakdown = this.$refs.transactionBreakdown;</pre><pre>  }<br>}</pre><p>Since ZingGrid emits CustomEvents, the information that we need will be under e.detail. Inside, we see a rich amount of information about the grid and the event.</p><p>For our Latest Transactions chart, we want a guide to appear on the chart when the user hovers over the corresponding row in our grid. To do so, we need to call the chart’s setguide method and pass it an object containing the specific keyvalue (x-axis value), or in this case the timestamp.</p><pre>// Set our guide corresponding to the correct timestamp<br>latestTransaction.setguide({<br>  keyvalue: e.detail.ZGData.data.timestamp<br>});</pre><p>For our Transaction Breakdown chart, we will need to determine the row entry’s purchase_type and the corresponding index that the data is defined when we created the chart.</p><p>We utilize the getseriesdata method of the chart to obtain the data used to create the chart to find the index. Once found, we then call the showhoverstate to change the pie slice color to highlight the entry in focus. Recall that the data format of the pie chart is an array of a single entry. The showhoverstate method requires a nodeindex so we default at 0.</p><pre>const indexInFocus = transactionBreakdown<br>  .getseriesdata()<br>  .findIndex(o =&gt; o.text === e.detail.ZGData.data.purchase_type);<br>  <br>transactionBreakdown.showhoverstate({<br>  plotindex: indexInFocus,<br>  nodeindex: 0<br>});</pre><p>All together:</p><pre>handleEntryHover(e) {<br>  // Obtain references to the charts<br>  let latestTransactions = this.$refs.latestTransactions;<br>  let transactionBreakdown = this.$refs.transactionBreakdown;</pre><pre>// Set our guide corresponding to the correct timestamp<br>  latestTransaction.setguide({<br>    keyvalue: e.detail.ZGData.data.timestamp,<br>  });</pre><pre>// Highlight the pie slice in focus<br>  const indexInFocus = transactionBreakdown<br>    .getseriesdata()<br>    .findIndex(o =&gt; o.text === e.detail.ZGData.data.purchase_type);<br>  transactionBreakdown.showhoverstate({<br>    plotindex: indexInFocus,<br>    nodeindex: 0<br>  });</pre><pre>}</pre><p>And there you have it! Interactions across ZingGrid and ZingChart.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tYwlmZVv7riZo2_aacR7yA.gif" /><figcaption>Interactions with multiple charts and a grid in our sales dashboard.</figcaption></figure><p>Check out a completed, working example of this Vue dashboard in the master branch of our starter code at <a href="https://github.com/zingsoftinc/vue-dashboard">https://github.com/zingsoftinc/vue-dashboard</a> and at <a href="https://glitch.com/~vue-dashboard-starter">https://glitch.com/~vue-dashboard-starter</a></p><p>We took our example a step further and created a sales dashboard with custom sparklines and more interactions and features. You can check out a working example and the code for it here: <a href="https://glitch.com/~vue-dashboard">https://glitch.com/~vue-dashboard</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iEr9_h3g7-6gPI38_HWNrA.gif" /><figcaption>This advanced version of the Vue sales dashboard featured in this tutorial includes even more interactivity.</figcaption></figure><p>Next time we’ll show you how to connect a live database, to search, filter, and query directly from your dashboard.</p><p>To be notified of future articles follow us on <a href="https://twitter.com/ZingChart">Twitter</a>!</p><p><em>A pioneer in the world of data visualization, </em><a href="https://www.zingchart.com/"><em>ZingChart</em></a><em> is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7950bc32bc94" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How ZingChart Can Help Web Devs Create Analytics Charts]]></title>
            <link>https://medium.com/@zingchart/how-zingchart-can-help-web-devs-create-analytics-charts-16f14b196fc9?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/16f14b196fc9</guid>
            <category><![CDATA[charts]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[analytics]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[data-visualization]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Thu, 24 Oct 2019 21:41:00 GMT</pubDate>
            <atom:updated>2019-10-24T21:41:00.681Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IhVJBft4X30QgCAWXG8v0g.jpeg" /></figure><p>The ability to visualize data analytics has never been more important than it is now, at a time when the amount of data being generated on a global scale continues to grow exponentially. Without a way to visualize the ever-growing amount of inert data being amassed by companies across all industries, they stand to miss out on the business insights and opportunities that analytics can provide.</p><p>From identifying trends and fluctuations, to visualizing funnels and comparisons over time, to summarizing subjective performance and proportional totals — there are many ways developers can visualize companies’ analytics data to transform it into more useful information. The question is how best to do it.</p><p>For web developers who build apps and websites that include analytics components, the challenge of visualizing data to maximize its informative power is still uncharted territory in many ways. From a multitude of device compatibility and scaling concerns, to a variety of integration considerations, there’s a lot of thought that has to go into the way developers choose to integrate digital charts into their projects.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/722/1*DrSmPD7ffFCTsZ7o2JLg1A.gif" /><figcaption><em>This analytics dashboard includes ZingChart’s pie chart type with advanced custom labels and real-time feeds. </em><a href="https://www.zingchart.com/gallery/chart?utm_source=intercom&amp;utm_medium=email&amp;utm_campaign=analytics_business_use_case#!gecko-style-widgets"><em>View live demo.</em></a></figcaption></figure><p>Fortunately, the ZingChart JavaScript library addresses most if not all of those concerns and considerations because it’s a mobile-friendly, self-contained, dependency-free library that’s compatible with all major browsers. Check out ZingChart’s page on <a href="https://www.zingchart.com/features/supported-browsers">browser compatibility</a> for a more in-depth look into its compatibility details.</p><p>Whether your development project requires charts with <a href="https://www.zingchart.com/docs/tutorials/features/shared-interactions">shared chart interactions</a>, <a href="https://www.zingchart.com/docs/tutorials/styling/animation">animations</a>, <a href="https://www.zingchart.com/features/real-time">real-time feeds</a>, <a href="https://www.zingchart.com/docs/tutorials/elements/mobile-charts">mobile responsiveness</a>, a <a href="https://www.zingchart.com/features/api">powerful JavaScript API</a>, or other types of interactivity, ZingChart’s built-in <a href="https://www.zingchart.com/features/interactivity">features</a> are robust enough that they can most likely accommodate your needs. Beyond its feature set, ZingChart can visualize datasets of all sizes using more than 35 different <a href="https://www.zingchart.com/features/chart-types">chart types</a> with various chart-specific capabilities and customizations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/859/1*ORW5cygiHDA27HqOFsOkRg.png" /><figcaption><em>This analytics line chart includes crosshairs and multiple X-scales. </em><a href="https://www.zingchart.com/gallery/chart?utm_source=intercom&amp;utm_medium=email&amp;utm_campaign=analytics_business_use_case#!multiple-time-series-scales"><em>View live demo.</em></a></figcaption></figure><p>So what are some practical use case cases for analytics charts? Website analytics dashboard components are an obvious example, as exemplified by this <a href="https://www.zingchart.com/gallery/chart#!ring-chart-with-center-label">ring chart with a center label</a> and this <a href="https://www.zingchart.com/gallery/chart#!line-chart-with-crosshair-tooltips">line chart with crosshairs</a>. Marketing analytics dashboard components are another example, as illustrated by this <a href="https://www.zingchart.com/gallery/chart#!mixed-line-column-shapes">mixed line and bar chart</a> and this <a href="https://www.zingchart.com/gallery/chart#!multiple-time-series-scales">line chart with multiple scales</a>.</p><p>Here’s a more extensive list of ZingChart demos that accommodate different analytics use cases across a variety of industries, including the ones mentioned above:</p><ul><li><a href="https://www.zingchart.com/gallery/chart#!ring-chart-with-center-label">Ring Chart with Center Label demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!colorful-pie-chart">Colorful Pie Chart demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!drilldown-bar-chart">Drilldown Bar Chart demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!line-chart-with-crosshair-tooltips">Line Chart with Crosshair Tooltips demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!size-aspect-heatmap">Size Aspect Heatmap demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!mixed-line-column-shapes">Mixed Line Column Shapes demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!spline-dynamic-labels">Spline Dynamic Labels demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!gecko-style-widgets">Gecko Style Widgets demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!area-date-formatting">Area Date Formatting demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!india-zingchart">India Map demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!response-dashboard-media-queries">Response Dashboard Media Queries demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!stacked-bar-hooked-labels">Stacked Bar Hooked Labels demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!multiple-time-series-scales">Multiple Time Series Scales demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!gauge-with-center-label">Gauge with Center Label demo</a></li><li><a href="https://www.zingchart.com/gallery/chart#!live-sparkline-chart">Live Sparkline Chart demo</a></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/564/1*XlU5yVcW6dQ_Z8LauCdmMA.png" /><figcaption><em>This analytics ring chart includes a legend and value boxes. </em><a href="https://www.zingchart.com/gallery/chart#!ring-chart-with-center-label"><em>View live demo.</em></a></figcaption></figure><p>If you’re interested in finding out more about what it would look like to integrate ZingChart in your next analytics-related web development project, <a href="https://zingchart.com/">visit the ZingChart website</a> to chat with us, or look into other ways to <a href="https://www.zingchart.com/contact">contact the ZingSoft team</a>. We’ve been trusted with advanced data visualization solutions for organizations of all sizes worldwide since 2008.</p><p>Please make sure to also check out ZingChart’s sister product, <a href="https://zinggrid.com/">ZingGrid</a>, to learn how to easily build CRUD-ready data grids and data tables with only a few lines of code. Together, ZingGrid and ZingChart form a powerful suite of data visualization products that are meant to make it easier than ever to transform your analytics data into analytics information.</p><p><em>A pioneer in the world of data visualization, </em><a href="https://www.zingchart.com/"><em>ZingChart</em></a><em> is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=16f14b196fc9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Interactive charts with Vue.js]]></title>
            <link>https://medium.com/@zingchart/interactive-charts-with-vue-js-e72de19fa6cd?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/e72de19fa6cd</guid>
            <category><![CDATA[vuejs]]></category>
            <category><![CDATA[vue]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[charts]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Wed, 16 Oct 2019 17:06:01 GMT</pubDate>
            <atom:updated>2019-11-26T19:38:24.854Z</atom:updated>
            <content:encoded><![CDATA[<p>by Mike Schultz</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WlOYDnc_huUGwGix8UtZYA.jpeg" /></figure><p>Deciding which JavaScript charting library to include in your Vue.js application can be challenging due to the number of data visualization options out on the web.</p><p><a href="https://www.zingchart.com/hello/create-interactive-charts-in-vue-with-zingchart?utm_source=medium&amp;utm_medium=blog&amp;utm_campaign=vue-series">ZingChart</a> stands out by having over 100 unique events and methods to control, modify, and interact with Vue. The library not only includes over 35 unique chart types, but also has enough customization that you can create your own visualizations! If that’s not enough, ZingChart recently released their official Vue.js component that wraps all of the library’s functionality to be used easily in a Vue Application.</p><p><a href="https://github.com/zingchart/zingchart-vue">zingchart/zingchart-vue</a></p><p>Let’s see how it works…</p><h3>Creating a chart</h3><h4>A Hello World</h4><p>A simple example of creating a chart using the zingchart-vue component is the best way to demonstrate the ease of the library.</p><pre>&lt;zingchart :data=&quot;{type: &#39;line&#39;, legend: {}, series: [{values: [4,5,3,3,3,4,5]}}&quot;&gt;&lt;/zingchart&gt;</pre><p>The component takes a data configuration object specified by ZingChart to describe the features and values that a chart should take. The above example describes a line chart with some values to be plotted, along with a legend.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*J6yqIS4JrRjfrvkX.png" /><figcaption><a href="https://glitch.com/~vue-chart">https://glitch.com/~vue-chart</a></figcaption></figure><h4>A more advanced example</h4><p>The above example is a simple demonstration of how easy it is to create a line chart, but if we wanted something more complex and customized, the library and component allow us to do so:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*apo_8lySJ8qI8OHz5PIRRQ.png" /><figcaption><a href="https://glitch.com/~vue-stock-chart">https://glitch.com/~vue-stock-chart</a></figcaption></figure><h3>Data Reactivity</h3><p>The Vue component automatically updates whenever any of its attributes change — this includes series values, or anything in the configuration object.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/872/0*HqSc75fimp6XjuuJ.gif" /><figcaption><a href="https://glitch.com/~zingchart-vue-reactivity">https://glitch.com/~zingchart-vue-reactivity</a></figcaption></figure><h3>Interactivity with other components</h3><p>We can integrate our charts to other charts or UI components by listening to events, and modifying the chart using methods.</p><h4>Binding Events</h4><p>For example, if we wanted to display a node’s value on hover in our Vue application, we would hook into the node_mouseover event.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1001/0*glpVu7xSdN1OSS5a.gif" /><figcaption><a href="https://glitch.com/~zingchart-vue-events">https://glitch.com/~zingchart-vue-events</a></figcaption></figure><p>All events that ZingChart emits are available on the Vue component with the “@” annotation.</p><h4>Modifying with methods</h4><p>Alternatively, if we wanted to annotate our chart by adding a label to a specific node, we would utilize the addobject API method and create a new label:</p><pre>this.$refs.myChart.addobject({<br>  type: &#39;label&#39;,<br>  data: {<br>    &quot;text&quot;: &quot;Something interesting!&quot;,<br>    &quot;background-color&quot;: &quot;#3f51b5&quot;,<br>    &quot;font-size&quot;: &quot;14px&quot;,<br>    &quot;font-weight&quot;: &quot;normal&quot;,<br>    &quot;font-color&quot;: &quot;#FFFFFF&quot;,<br>    &quot;padding&quot;: &quot;10%&quot;,<br>    &quot;border-radius&quot;: &quot;3px&quot;,<br>    &quot;offset-y&quot;:-30,<br>    &quot;shadow&quot;: false,<br>    &quot;callout&quot;: true,<br>    &quot;callout-height&quot;: &quot;10px&quot;,<br>    &quot;callout-width&quot;: &quot;15px&quot;,<br>    &quot;hook&quot;:&quot;node:plot=0;index=4&quot;<br>  }<br>});</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*JYvyoEk8PD2gCDpP.png" /><figcaption><a href="https://glitch.com/~zingchart-vue-methods">https://glitch.com/~zingchart-vue-methods</a></figcaption></figure><p>All methods are readily available on the component’s object to be called.</p><h3>Get Charting!</h3><p>With a better understanding of ZingChart and its Vue component, all you need is to include it into your application. Head over to our Github repository for the full documentation of the component: <a href="https://github.com/zingchart/zingchart-vue">https://github.com/zingchart/zingchart-vue</a></p><h4>Stay tuned</h4><p>Over the coming weeks we will be creating a dashboard built with Vue and the zingchart-vue component to demonstrate the flexibility and power of both tools. To receive updates of when we publish new articles, follow us on twitter:</p><p><a href="https://twitter.com/zingchart">ZingChart</a></p><p><em>A pioneer in the world of data visualization, </em><a href="https://zingchart.com"><em>ZingChart</em></a><em> is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e72de19fa6cd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Animate a Gauge Chart in Under 2 Minutes]]></title>
            <link>https://medium.com/@zingchart/how-to-animate-a-gauge-chart-in-under-2-minutes-a457735b9e5?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/a457735b9e5</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[graph]]></category>
            <category><![CDATA[charts]]></category>
            <category><![CDATA[dataviz]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Fri, 13 Sep 2019 23:51:57 GMT</pubDate>
            <atom:updated>2019-09-13T23:51:57.740Z</atom:updated>
            <content:encoded><![CDATA[<p>by Josh Arias</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SkebccAKvc69jpmnABg7NQ.png" /></figure><p>This is the second post in ZingChart’s Stopwatch Features series. This series of posts is intended to show you how quickly and easily you can create and animate a chart using the powerful JavaScript library, ZingChart.</p><p>Watch the video below to see how easily this can be achieved. For a step-by-step walk through, scroll past the video to the content below.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F9pg-hZYj3Jg%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D9pg-hZYj3Jg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F9pg-hZYj3Jg%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/c64f8b63b68d5e6d4f042f8f794a0933/href">https://medium.com/media/c64f8b63b68d5e6d4f042f8f794a0933/href</a></iframe><p>I will be going over 3 main items throughout this article:</p><p>1. Adding your HTML that contains your chart<br>2. Using Javascript and ZingChart to add data, properties and animations<br>3. Rendering your Gauge chart on the page</p><p>For the purpose of this demo, you will be creating the gauge chart shown below and fill it with dummy data.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GoXkwzLHzN3XtenPW2UZRA.png" /></figure><h3>Before I begin…</h3><p>Every time I experiment with the ZingChart library, I always do so in their free web-app, the ‘ZingSoft Studio’.</p><p>This free sandbox-like environment will give you full access to the ZingChart library and let you experiment with all of ZingChart’s features, animations and chart types.</p><p>Check out <a href="https://app.zingsoft.com/signup">the Studio</a> and start charting!</p><h3>1. Adding Your HTML</h3><p>To start this process, you will need to create a basic HTML layout if you have not done so already. Feel fee to copy the one I have below.</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;<br> &lt;head&gt;<br>   &lt;meta charset=”utf-8&quot;&gt;<br>   &lt;title&gt;ZingSoft Demo&lt;/title&gt;<br>   &lt;script src=”<a href="https://cdn.zingchart.com/zingchart.min.js">https://cdn.zingchart.com/zingchart.min.js</a>&quot;&gt;&lt;/script&gt;<br> &lt;/head&gt;<br> &lt;body&gt;<br>   &lt;div id=”myChart” class=”chart — container”&gt;&lt;/div&gt;<br> &lt;/body&gt;<br>&lt;/html&gt;</pre><p>Notice that I have included the CDN to reference the ZingChart library within the script tag.</p><p>I have also included a div within the body of the HTML that will render the chart. This div also includes a pre-defined class named chart — container. Reference <a href="https://app.zingsoft.com/demos/create/EQ7G07OX">here</a> to see the basic CSS classes added to this chart.</p><p>As far as HTML setup, you are done!</p><h3>2. Adding JavaScript</h3><p>Now that you have finished setting up my HTML, you will spend the rest of your the time using and creating JavaScript.</p><p>To start, you can either setup a script beneath initial setup your div, or you can reference an outside JavaScript document.</p><p>ZingChart is an extremely powerful and complex library. For the purpose of this demo, you will only be using a handful of properties available. For a full list of JSON properties available through ZingChart, check out the <a href="https://www.zingchart.com/docs/api/json-configuration">JSON attributes</a> page.</p><p>You will start by creating and naming an object variable. Within this object, you will include 3 main properties: type, series, and plot. Reference the format below.</p><pre>var chartConfig = {<br>  type: ‘gauge’,<br>  series: [<br>    {<br>      text: ‘Day 1’,<br>      values: [23],<br>      backgroundColor: ‘#00384A’<br>    },<br>    {<br>      text: ‘Day 2’,<br>      values: [20],<br>      backgroundColor: ‘#008ECC’<br>    },<br>    {<br>      text: ‘Day 3’,<br>      values: [25],<br>      backgroundColor: ‘#06C5FC’<br>    }<br>  ],<br>  plot: {<br>  },<br>};</pre><p>The type property will determine which chart type you will render to the page. ZingChart has over <a href="https://www.zingchart.com/features/chart-types">35 different chart types</a> available, but I will be going over gauge charts in this article. If you reference above, you will notice I have set the type property to have a property value of gauge.</p><p>The series property is the next item in you chartConfig object. This property is where all your data and data styling will live. There are a ton of <a href="https://www.zingchart.com/docs/api/json-configuration/graphset/series">features</a> you include here to add hover states, legend markers, tool tips, value boxes and more directly to your data points.</p><p>You will want to follow the format I have created above to ensure the three needles are added to the graph.</p><p>plot will be used in the next section to add animations to your graph.</p><p>If you render your chart as the variable is now, it will fully display without animations.</p><h3>2. Adding Animations</h3><p>ZingChart has made it incredibly east to add animations to all the chart types. Using the plot object, you will include another object as a property within plot called animation.</p><p>Within the animation object, the first property you will include is effect. Effect can either take a string or a number (either 1 or 2) as a value.</p><p>In the code below, I have added the animation and set the effect to have a property value of 2. If you run the demo with the below code, you will see that the needles have a basic animation that runs.</p><pre>var chartConfig = {<br>  type: ‘gauge’,<br>    series: [<br>      {<br>        text: ‘Day 1’,<br>        values: [23],<br>        backgroundColor: ‘#00384A’<br>      },<br>      {<br>        text: ‘Day 2’,<br>        values: [20],<br>        backgroundColor: ‘#008ECC’<br>      },<br>      {<br>        text: ‘Day 3’,<br>        values: [25],<br>        backgroundColor: ‘#06C5FC’<br>      }<br>    ],<br>    plot: {<br>      animation: {<br>      effect: 2<br>    }<br>  }<br>};</pre><p>Below are the animation characteristics for the effect property:</p><ul><li>1 = Fade in</li><li>2 = Rotate from left to right</li></ul><pre>…,<br>  plot: {<br>    animation: {<br>      effect: 2,<br>      sequence: 1<br>    }<br>  }<br>…<br></pre><ul><li>1 = Renders individual nodes</li><li>2 = Renders all nodes at once</li></ul><pre>…,<br>  plot: {<br>    animation: {<br>      effect: 2,<br>      sequence: 1,<br>      method: 1<br>    }<br>  }<br>…</pre><p>The next animation property you can take advantage of is the method property. method determines how the nodes act at the end of the animation and can only be applied when effect: 2 is active. This property takes in values between 1 and 5.</p><p>The best way to understand method is to try it out for yourself.</p><p>Here are the characteristics for each value:</p><ul><li>1 = Node has long bounce at end of animation</li><li>2 = Node has quicker bounce at end of animation</li><li>3 = Node has very quick bounce at end of animation</li><li>4 = Node slows down towards end of animation</li><li>5 = Node slows down even more towards end of animation</li><li>6 = Node maintains consistent speed throughout the animation</li></ul><h3>3. Rendering Your Chart</h3><p>The last piece of JavaScript you will be adding to this demo is the zingchart.render() method.</p><p>Within this built in method, you will want to include the id that was included within the div in your HTML. This is what renders the chart to your HTML.</p><p>In addition to this, you need to reference the JavaScript variable you created previously. This can be done by adding the data property and setting it’s value to the name of the variable. In this case, you will set it to chartConfig.</p><p>Two additional properties you can add to this object are height and width. These properties take in numerical values like normal CSS properties.</p><p>Your JavaScript should now look like this:</p><pre>var chartConfig = {<br>  type: ‘gauge’,<br>  series: [<br>    {<br>      values: [23],<br>      backgroundColor: ‘#00384A’<br>    },<br>    {<br>      values: [20],<br>      backgroundColor: ‘#008ECC’<br>    },<br>    {<br>      text: ‘Day 3’,<br>      values: [25],<br>      backgroundColor: ‘#06C5FC’<br>    }<br>  ],<br>  plot: {<br>    animation: {<br>      effect: 2,<br>      sequence: 1,<br>      method: 1<br>    }<br>  }<br>};<br> <br>zingchart.render({<br>  id: ‘myChart’,<br>  data: chartConfig,<br>  height: ‘100%’,<br>  width: ‘100%’,<br>});</pre><p>There are many different combinations of effect method and sequence that you can implement. There are also other properties you can add to the plot object such as speed and delay. To read more about these, visit the ZingChart <a href="https://www.zingchart.com/docs/tutorials/styling/animation">animation docs</a>.</p><p>To check out a more customized version of this chart, check out the <a href="https://app.zingsoft.com/demos/create/DPBFQQVB">demo</a>. Feel free to fork, edit and customize the demo with your own design and data!</p><p>A pioneer in the world of data visualization, ZingChart is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</p><p>A pioneer in the world of data visualization, ZingChart is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a457735b9e5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Make a Line Chart Using Javascript]]></title>
            <link>https://medium.com/@zingchart/how-to-make-a-line-chart-using-javascript-5628ee3a6c5?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/5628ee3a6c5</guid>
            <category><![CDATA[charts]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[developer-tools]]></category>
            <category><![CDATA[how-to]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Tue, 20 Aug 2019 19:17:04 GMT</pubDate>
            <atom:updated>2019-08-31T02:12:10.807Z</atom:updated>
            <content:encoded><![CDATA[<h3>How to Make a Line Chart Using JavaScript</h3><p><em>by Josh at ZingSoft</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EtZ1GlZwDG4zb2I-rA9BqA.png" /></figure><p>A line chart, or graph, is a highly efficient way to display data points connected by lines. Highly versatile, line charts come in three different types: simple line charts, 3-D line charts, and vertical-line charts.</p><p>This article will show you how to:</p><ol><li>Reference the ZingChart library</li><li>Place your chart in your HTML page</li><li>Add data and render your chart</li><li>Basic customization of your chart</li></ol><h3>Before I Begin</h3><p>Before beginning my tutorial, I highly recommend signing up for ZingChart’s free <a href="https://app.zingsoft.com/">Studio</a> web-app. It’s a custom, integrated sandbox-like environment, where you can test and create charts, and then share them when finished. It also provides pre-made starting templates for most of the built-in chart types, so you never need to start from scratch.</p><p>Check out <a href="https://app.zingsoft.com/signup">the Studio</a> and start charting!</p><h3>1. Referencing the ZingChart Library</h3><p>In your HTML page, reference the ZingChart library in the &lt;head&gt; section of the document by adding the library &lt;script&gt; call:</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;<br>  &lt;head&gt;<br>    &lt;meta charset=&quot;utf-8&quot;&gt;<br>    &lt;title&gt;ZingChart: My Line Chart&lt;/title&gt;<br>    &lt;script src=&quot;https://cdn.zingchart.com/zingchart.min.js&quot;&gt;&lt;/script&gt;<br>  &lt;/head&gt;<br>  &lt;body&gt;</pre><pre>  &lt;/body&gt;<br>&lt;/html&gt;</pre><p>We’ve referenced the code from our <a href="http://cdn.zingchart.com/">Content Delivery Network</a> (CDN), but you may also <a href="https://www.zingchart.com/download">download the ZingChart library</a> or use a package manager, like <a href="https://www.npmjs.com/package/zingchart">NPM</a>.</p><h3>2. Placing Your Chart in the Page</h3><p>Before adding data to your line chart, you will need to tell ZingChart where to render the chart, by referencing it within the &lt;body&gt; of your code:</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;<br>  &lt;head&gt;<br>    &lt;meta charset=”utf-8&quot;&gt;<br>    &lt;title&gt;ZingChart: My Line Chart&lt;/title&gt;<br>    &lt;script src=&quot;https://cdn.zingchart.com/zingchart.min.js&quot;&gt;&lt;/script&gt;<br>  &lt;/head&gt;<br>  &lt;body&gt;<br>    &lt;div id=&quot;myChart&quot;&gt;&lt;/div&gt;<br>  &lt;/body&gt;<br>&lt;/html&gt;</pre><p>Create a &lt;div&gt; container within the &lt;body&gt; of your HTML page, and give it a unique id that you will reference when rendering the chart. Simple!</p><h3>3. Adding Data and Rendering Your Chart</h3><p><em>This is where some knowledge of JavaScript is required.</em></p><p>In the simplest method, defining data and adding it to your chart are both done inline in a &lt;script&gt; tag.</p><p>First you assign your data and chart config to a variable, and then reference it in the render method:</p><pre>&lt;script&gt;<br>  var myConfig = {<br>    type: &#39;line&#39;,<br>    series: [<br>      { values: [20,40,25,50,15,45,33,34] },<br>      { values: [5,30,21,18,59,50,28,33] },<br>      { values: [30,5,18,21,33,41,29,15] }<br>    ]<br>  };<br> <br>  zingchart.render({ <br>    id: &#39;myChart&#39;,<br>    data: myConfig,<br>    height: &#39;100%&#39;,<br>    width: &#39;100%&#39;<br>  });<br>&lt;/script&gt;</pre><p>Try adding the above code within the &lt;body&gt;of your HTML page. If you run this in your browser, you will have a fully functioning line chart!</p><p><em>Note: When adding the </em><em>&lt;script&gt; tag, ensure it is placed after the referenced </em><em>&lt;div id=&quot;myChart&quot;&gt; that renders the chart.</em></p><p>Check out the <a href="https://app.zingsoft.com/demos/embed/Z4KY0TKN">full line-chart demo</a>.</p><p>So what exactly is happening above?</p><p>First, the variable myConfig was created to store the chart’s data and configuration settings.</p><pre>var myConfig = {<br>  type: &#39;line&#39;,<br>  series: [<br>    { values: [20,40,25,50,15,45,33,34] }, // Line 1<br>    { values: [5,30,21,18,59,50,28,33] },  // Line 2<br>    { values: [30,5,18,21,33,41,29,15] }   // Line 3<br>  ]<br>};</pre><p>The type property is set to <strong>line</strong> and tells ZingChart which type of chart to render. ZingChart has more than <strong>35</strong> built-in types to choose from!</p><p>The series property is where we define the chart’s data. It accepts an array of objects, which each represents one line in the chart. We’ve added <strong>3</strong> different lines to the chart, and defined its data points in the individual values arrays.</p><p>Finally, the zingchart.render() method builds the chart and adds the code to your referenced div container.</p><pre>zingchart.render({  // Render method to show chart on page<br>  id: &#39;myChart&#39;,    // Reference the id of your &lt;div&gt; container<br>  data: myConfig,   // Reference the &#39;myConfig&#39; settings object<br>  height: &#39;100%&#39;,   // Set the height of the chart<br>  width: &#39;100%&#39;     // Set the width of the chart<br>});</pre><p>It accepts an object that has <strong>4</strong> properties:</p><ol><li>id</li><li>data</li><li>height</li><li>width</li></ol><p>height and width are optional if you would rather control the dimensions with CSS.</p><p>Reference the // comments above for further information on what these do.</p><h3>4. Basic Customization of Your Line Chart</h3><p>Now that you have a fully-functioning line chart running in your page, there are a few easy ways to customize the look and feel of your chart. For a deeper look into the customizations available, read <a href="https://www.zingchart.com/docs/chart-types/line#further-customization-and-styling">ZingChart’s documentation</a>.</p><h4>Changing to a Line-Chart Variant</h4><p>Previously, we saw that setting the type property to <strong>line</strong> in the configuration object rendered our data as a line chart. There are a few other values you can give type that will render the data differently, without needing to change the data structure:</p><ol><li>line3d - Gives your plotted lines a 3D aspect</li><li>vline - Turns your graph vertical instead of horizontal</li></ol><h4>Setting a Plot Aspect</h4><p>If you include a property called plot, and give it a value of an object with property aspect, you will modify how the lines themselves are rendered:</p><ol><li>segmented - Separates data points by connected straight lines</li><li>spline - Separates data points by connected curved lines</li><li>stepped - Separates data points by vertical and horizontal lines, resembling steps</li><li>jumped - Separates data points by only the horizontal portion of a stepped line</li></ol><pre>var myConfig = {<br>  type: &#39;line&#39;,<br>  plot: {<br>    aspect: &#39;segmented&#39;<br>  },<br>  series: [<br>    { values: [20,40,25,50,15,45,33,34] }, // Line 1<br>    { values: [5,30,21,18,59,50,28,33] },  // Line 2<br>    { values: [30,5,18,21,33,41,29,15] }   // Line 3<br>  ]<br>};</pre><h4>Changing the Styling of the Lines</h4><p>To change the styling of the lines independently, add properties to the individual line-objects in the series array:</p><pre>var myConfig = {<br>  type: &#39;line&#39;,<br>  series: [<br>    { <br>      values: [20,40,25,50,15,45,33,34],<br>      &#39;line-color&#39;: #6666ff,   // Hexadecimal or RGB <br>      &#39;line-style&#39;: &#39;dashed&#39;,  // solid | dashed<br>      &#39;line-width&#39;: 5          // In pixels<br>    },<br>    { values: [5,30,21,18,59,50,28,33] },<br>    { values: [30,5,18,21,33,41,29,15] }<br>  ]<br>};</pre><p><em>Note: for property names with dashes, the key must be in quotations.</em></p><h3>In Summary</h3><p>You have learned to create and setup a line chart with your data. For more information, and to learn all that you can add to just line charts, visit the line chart page in the <a href="https://www.zingchart.com/docs/chart-types/line">ZingChart documentation</a>.</p><p>For some inspiration on charts that have already been created, visit <a href="https://www.zingchart.com/gallery">ZingChart’s gallery</a>, or jump directly to the <a href="https://www.zingchart.com/gallery#line">line-chart examples</a>. Feel free to hit the <strong>edit</strong> button on any of the demos, which will fork and save it to your ZingChart Studio account!</p><p>A pioneer in the world of data visualization, ZingChart is a powerful JavaScript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5628ee3a6c5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How ZingChart Can Help Web Dev Teams in the Finance Industry]]></title>
            <link>https://medium.com/@zingchart/how-zingchart-can-help-web-dev-teams-in-the-finance-industry-fbef0ee3e6f7?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/fbef0ee3e6f7</guid>
            <category><![CDATA[charts]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[finance]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Tue, 20 Aug 2019 15:16:01 GMT</pubDate>
            <atom:updated>2019-08-20T15:16:01.376Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9KQ4l6kIzXmBA1D2DIKQnw.jpeg" /></figure><p><em>By Sarah at ZingSoft</em></p><p>With so many different types of data, platforms, and devices to contend with in the financial services industry, it’s no wonder that JavaScript frameworks and libraries have become vital shortcuts for web development teams of all sizes. Financial services encompass everything from trading activity, to banking, to accounting, financial planning, and a lot more, so its more important than ever for web development teams to find efficient and scalable ways to present the data produced from this financial activity.</p><p>As data complexity increases across various financial sectors, so does the demand for tools that can keep up with visualizing it. This is especially true for the charts, diagrams and infographics that help to visually convey that data both internally and externally. It’s no longer enough to produce static data visualizations that look good — they must also be interactive and dynamic to reflect the nature of the data they’re representing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/953/1*COzppnRiCHdMbky7OYbGjQ.png" /><figcaption>View the <a href="https://www.zingchart.com/gallery/chart#!interactive-sales-dashboard">live demo</a> of this interactive sales dashboard</figcaption></figure><p>For example, if you want to visualize data points at different time intervals, or want to isolate or highlight a specific chunk of data in an otherwise large dataset via zooming, or want to include a live-feed of real-time data, you’ll need a tool that produces more than just flattened chart renderings. This is where JavaScript libraries like <a href="https://www.zingchart.com/">ZingChart</a> can make all the difference in your web development workflow by making it easy to produce interactive, dynamic data visualizations quickly.</p><p>ZingChart is a well-established, US-based charting library that has been used by companies like Adobe, Nasdaq, Fidelity Investments, K&amp;H Bank, ING Bank, and London Stock Exchange. It gives web developers the power to create highly interactive and responsive charts, diagrams and infographics for their apps and websites with only a few lines of code. With over 35 chart-types and modules, including chord, pareto, and gauge chart types, ZingChart is uniquely suited to help developers visualize a wide range of financial data.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/929/1*JpMiSkaLQQM9sPvKoOrELQ.png" /><figcaption>View the <a href="https://www.zingchart.com/gallery/chart#!zoomable-stock-custom-tokens">live demo</a> of this zoomable stock chart with custom tokens</figcaption></figure><p>From <a href="https://blog.zingchart.com/charts-with-time-series-data/">time series data</a>, to <a href="https://www.zingchart.com/docs/tutorials/features/zoom-pan-scroll">zooming</a>, <a href="https://www.zingchart.com/docs/tutorials/loading-data/real-time-feeds">real-time feeds</a>, <a href="https://www.zingchart.com/docs/tutorials/elements/tooltips">tooltips</a>, and <a href="https://www.zingchart.com/docs/tutorials/features/shared-interactions">shared interactions</a>, ZingChart is packed full of functionality that’s meant to make the job of producing data visualizations much easier for experienced web developers. It also integrates well with many popular frameworks, including <a href="https://www.zingchart.com/docs/integrations/angularjs">Angular</a>, <a href="https://blog.zingchart.com/zingchart-component-for-react/">React</a> and <a href="https://www.zingchart.com/docs/integrations/php">PHP</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/952/1*BYCBVCZvLpqoJGmCES4_3A.png" /><figcaption>View the <a href="https://www.zingchart.com/gallery/chart#!mixed-whisker-bar-stock">live demo</a> of this mixed whisker bar stock chart</figcaption></figure><p>If you’d like to see live examples of financial data visualized with ZingChart we have many! Take a look at our <a href="https://www.zingchart.com/gallery/chart#!interactive-sales-dashboard">Interactive Sales Dashboard demo</a>, our <a href="https://www.zingchart.com/gallery/chart#!line-pie-dashboard">Mixed Line/Pie Dashboard demo</a>, our <a href="https://www.zingchart.com/gallery/chart#!mixed-time-series-zoom">Mixed Time Series demo</a>, our <a href="https://www.zingchart.com/gallery/chart#!zoomable-stock-custom-tokens">Zoomable Stock demo</a>, our <a href="https://www.zingchart.com/gallery/chart#!waterfall-chart-with-animation">Animated Waterfall demo</a>, our <a href="https://www.zingchart.com/gallery/chart#!mixed-whisker-bar-stock">Mixed Whisker Bar Stock demo</a>, our <a href="https://www.zingchart.com/gallery/chart#!stepped-area-crosshair">Stepped Area Crosshair demo</a>, our <a href="https://www.zingchart.com/gallery/chart#!animated-dashboard-tooltips">Animated Dashboard with Tooltips demo</a>, or our <a href="https://www.zingchart.com/gallery/chart#!stock-and-volume-chart-with-blended-scales-and-interactive-crosshairs">Stock and Volume Chart with Blended Scales and Interactive Crosshairs demo</a> to start.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/950/1*rm-rNBKKxs7qjjXDpQ9zhA.png" /><figcaption>View the <a href="https://www.zingchart.com/gallery/chart#!waterfall-chart-with-animation">live demo</a> of this animated waterfall chart</figcaption></figure><p>To learn more about how ZingChart can help improve and streamline your team’s data visualization workflow, visit our site at <a href="https://zingchart.com">https://zingchart.com</a>, or get in touch with us. We’re a team of experienced developers who are passionate about data visualization, and we’d like to help you figure out custom solutions for your team’s finance-related use cases.</p><p>I also encourage you to check out the blog post I wrote about how our sister product, <a href="https://www.zinggrid.com/">ZingGrid</a>, can also help streamline your development team’s data visualization workflow for financial data. ZingGrid is a mobile-friendly, CRUD-ready JavaScript library for creating interactive data grids and data tables. Together, ZingGrid and ZingChart form a powerful suite of data visualization products that are sure to help take the headache out of visualizing financial data for your development team.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/724/1*y3wNo1s1fmUOTt4nUmwDIw.png" /><figcaption>View the <a href="https://www.zingchart.com/gallery/chart#!mixed-bar-line-dash">live demo</a> of this mixed bar line dash chart</figcaption></figure><p><em>A pioneer in the world of data visualization, ZingChart is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fbef0ee3e6f7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Getting Started — Your First Chart]]></title>
            <link>https://medium.com/@zingchart/getting-started-your-first-chart-11541b02ad8d?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/11541b02ad8d</guid>
            <category><![CDATA[design]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[graph]]></category>
            <category><![CDATA[charts]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Thu, 01 Aug 2019 22:28:14 GMT</pubDate>
            <atom:updated>2019-08-20T19:25:20.526Z</atom:updated>
            <content:encoded><![CDATA[<h3><em>Getting Started — Your First Chart</em></h3><p><em>by Josh at ZingSoft</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rxoCgzCw9btaAj4WQsWD-w.jpeg" /></figure><p>The video below, ‘Your First Chart’, is the first video in our ‘Getting Started’ series where I will show you how to implement key ZingChart features from the ground up. Below the video, we have included a written version of what was covered in the video.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FntqGdMLtzLA%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DntqGdMLtzLA&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FntqGdMLtzLA%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d84024664aa0d7e905daffce7487ef4f/href">https://medium.com/media/d84024664aa0d7e905daffce7487ef4f/href</a></iframe><p>The chart below is the one I will be trying to render in this getting started tutorial.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zLNry00EJSXJlUQm1P7CBQ.png" /></figure><p>If you hit ‘run’, you will notice that nothing renders, let’s dig in and find out why.</p><pre>zingchart.render({ <br>    id: &#39;myChart&#39;,         //Must match object defined previously<br>    data: chartConfig,     //Must match id created in HTML<br>    height: &#39;700px&#39;, <br>    width: &#39;1200px&#39; <br>});</pre><p>Looking at the ZingChart render method, there is a variable called “chartConfig”, which is a JavaScript object defined previously. This chart configuration is where all features are defined and is fully documented in our <a href="https://www.zingchart.com/docs/api/json-configuration">JSON configuration</a> pages.</p><p>The second param we have is the id, “myChart”. What we need to do is create a div element with the corresponding id of “myChart” (as shown below).</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;<br>  &lt;head&gt;<br>    &lt;meta charset=&quot;utf-8&quot;&gt;<br>    &lt;title&gt;ZingGrid: Blank Grid&lt;/title&gt;<br>  &lt;/head&gt;<br>  &lt;body&gt;<br>    &lt;!-- CHART CONTAINER --&gt;<br>    <strong>&lt;div id=&quot;myChart&quot; class=&quot;chart--container&quot;&gt;</strong><br>      &lt;a class=&quot;zc-ref&quot; href=&quot;<a href="https://www.zingchart.com">https://www.zingchart.com</a>&quot;&gt;Powered by ZingChart&lt;/a&gt;<br>    &lt;/div&gt;<br>  &lt;/body&gt;<br>&lt;/html&gt;</pre><p>I will create that element with the matching id and give it a class so I can apply some styling that has been predefined in my CSS.</p><p>If I hit enter and run the demo, you will still see that nothing is rendering. This is because I don’t have ZingChart registered to the page.</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;<br>  &lt;head&gt;<br>    &lt;meta charset=&quot;utf-8&quot;&gt;<br>    &lt;title&gt;ZingGrid: Blank Grid&lt;/title&gt;<br>  &lt;/head&gt;<br>  &lt;body&gt;<br>    &lt;!-- CHART CONTAINER --&gt;<br>    <strong>&lt;div id=&quot;myChart&quot; class=&quot;chart--container&quot;&gt;</strong><br>      &lt;a class=&quot;zc-ref&quot; href=&quot;<a href="https://www.zingchart.com">https://www.zingchart.com</a>&quot;&gt;Powered by ZingChart&lt;/a&gt;<br>    &lt;/div&gt;<br>  &lt;/body&gt;<br>&lt;/html&gt;</pre><p>The easiest way to register and download the ZingChart library on the page is from the CDN. For other ways to reference the library, try visiting our <a href="https://www.zingchart.com/docs/getting-started/your-first-javascript-chart">docs</a>.</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;<br>  &lt;head&gt;<br>    &lt;meta charset=&quot;utf-8&quot;&gt;<br>    &lt;title&gt;ZingGrid: Blank Grid&lt;/title&gt;<br><strong>    &lt;script src=&quot;</strong><a href="https://cdn.zingchart.com/zingchart.min.js"><strong>https://cdn.zingchart.com/zingchart.min.js</strong></a><strong>&quot;&gt;&lt;/script&gt;<br></strong>  &lt;/head&gt;<br>  &lt;body&gt;<br>    &lt;!-- CHART CONTAINER --&gt;<br>    &lt;div id=&quot;myChart&quot; class=&quot;chart--container&quot;&gt;<br>      &lt;a class=&quot;zc-ref&quot; href=&quot;<a href="https://www.zingchart.com">https://www.zingchart.com</a>&quot;&gt;Powered by ZingChart&lt;/a&gt;<br>    &lt;/div&gt;<br>  &lt;/body&gt;<br>&lt;/html&gt;</pre><p>I created a script tag at the top of the page and pointed it to <a href="https://cdn.zingchart.com/zingchart.min.js.">https://cdn.zingchart.com/zingchart.min.j</a>s. This will execute the ZingChart Javascript library on the page making methods like zingchart.render() globally available.</p><p>When we run our demo again, we should see an empty chart.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TujX6pl_fBXHhgRJvKU6Jw.png" /></figure><p>The chart is empty because we have not defined any values. The minimum attributes we need to render a chart are the type and values attributes within a series. series is an array of objects that contain values arrays. Reference below.</p><pre>...<br>    series: [<br>      {<br>        // plot 1 values, linear data<br>        values: [23,20,27,29,25,17,15],<br>        text: &#39;Week 1&#39;,<br>      },<br>      {<br>        // plot 2 values, linear data<br>        values: [35,42,33,49,35,47,35],<br>        text: &#39;Week 2&#39;<br>      },<br>      {<br>        // plot 2 values, linear data<br>        values: [15,22,13,33,44,27,31],<br>        text: &#39;Week 3&#39;<br>      }<br>    ]<br>  };</pre><p>If you include these values arrays (as shown above) and run the demo, you will see your charts rendered to the page.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5fQVMYbD0qJPWahZQRw0GA.png" /></figure><p>Check back in later for our next video in our ‘Getting Started’ series, ‘Data Sources and ZingChart’.</p><p>A pioneer in the world of data visualization, ZingChart is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=11541b02ad8d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Animate a Line Chart in Under 60 Seconds]]></title>
            <link>https://medium.com/@zingchart/how-to-animate-a-line-chart-in-under-60-seconds-a847934de6b2?source=rss-733366213bd9------2</link>
            <guid isPermaLink="false">https://medium.com/p/a847934de6b2</guid>
            <category><![CDATA[learning-to-code]]></category>
            <category><![CDATA[charts]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[learn-to-code]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[ZingChart]]></dc:creator>
            <pubDate>Thu, 18 Jul 2019 21:14:50 GMT</pubDate>
            <atom:updated>2019-08-20T19:24:47.898Z</atom:updated>
            <content:encoded><![CDATA[<p><em>by Josh at ZingSoft</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7DRwQRd39WMROqOLvVbkSA.jpeg" /></figure><p>This is the first post in <a href="http://www.zingchart.com">ZingChart</a>’s Stopwatch Features series. The purpose of this series is to highlight many of ZingChart’s features that can be quickly implemented to make your charts dynamic, interactive and animated.</p><p>Watch the short <a href="https://www.youtube.com/watch?v=1Zss2FIacr0">video</a> below see how quickly and easily you can add different types of animations to your line charts. For a step-by-step summary, scroll past the video.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F1Zss2FIacr0%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D1Zss2FIacr0&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F1Zss2FIacr0%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/157b58acb476d0b5914714111ff39a09/href">https://medium.com/media/157b58acb476d0b5914714111ff39a09/href</a></iframe><p>As a quick guide, here are the points I will go over to animate your line chart:</p><ol><li>Create a basic HTML layout that will render your chart</li><li>Add an object within your Javascript to contain your data, properties and animations</li><li>Call ZingChart to render the chart to your page</li></ol><p>While you can certainly use your own data and design, for the purpose of this demo, I will use the chart below with 3 plot groupings.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*q6vvsB2W49NNNjFUhSF4cQ.png" /></figure><h3>Before I get started…</h3><p>I highly recommend signing up for ZingChart’s free web-app, the ‘ZingSoft Studio’.</p><p>This will give you full access to the ZingChart library in a sandbox-like environment. The Studio will allow you to create fully functional charts and grids while adding your animations at the same time.</p><p><a href="https://app.zingsoft.com/signup">Check out the Studio and start charting!</a></p><h3>Creating Your Layout</h3><p>To start, you will need to create a basic HTML layout. Feel free to copy the one below.</p><pre>&lt;!DOCTYPE html&gt;<br>&lt;html&gt;<br>   &lt;head&gt;<br>   &lt;meta charset=&quot;utf-8&quot;&gt;<br>   &lt;title&gt;Line Chart Animation Demo&lt;/title&gt;<br>   &lt;script src=&quot;&lt;https://cdn.zingchart.com/zingchart.min.js&gt;&quot;&gt;<br>&lt;/script&gt;<br>   &lt;/head&gt;<br>   &lt;body&gt;<br>      &lt;div id=&#39;myChart&#39;&gt;&lt;/div&gt;<br>   &lt;/body&gt;<br>&lt;/html&gt;</pre><p>Notice I have already included the script tag which references ZingChart’s CDN as well as the div to render the chart.</p><h3>Adding Your Javascript</h3><p>Once you have finished setting up your HTML, you will want to add your Javascript.</p><p>Either create a script tag below where you set up your chart div or reference a new Javascript file. While I will only be scratching the surface of what ZingChart can do, the only two Javascript components you will add to animate your chart are a variable and a render method.</p><h3>Creating Your Variable</h3><p>You will start by creating and naming a variable as an object within a Javascript file or script tag. Within this object, you will want to include 3 main properties: type, series, and plot.</p><p>Reference the format below.</p><pre>var myConfig = {<br>   &quot;type&quot;: &quot;line&quot;,<br>   &quot;series&quot;: [<br>      {&quot;values&quot;: [20,40,25,50,15,45,33,34] },<br>      {&quot;values&quot;: [5,30,21,18,59,50,28,33] },<br>      {&quot;values&quot;: [30,5,18,21,33,41,29,15] }<br>   ],<br>   &quot;plot&quot;: {<br>		<br>   }<br>};</pre><p>The type property specifies what type of chart you are looking to utilize. ZingChart has over 35 chart types, but for this post, I will be going over line charts, hence the type property has a property value of line.</p><p>The series property is where you will store your data, change the line colors, add hover effects and many more customizations you can read about <a href="https://www.zingchart.com/docs/tutorials/elements/plot-series-styling">here</a>. Notice the formatting of the series property. To add multiple plotted lines, I made series an array with multiple objects as its properties.</p><p>If you save this file and open it in your browser, you will see you have a fully functional line chart.</p><h3>Adding Animations</h3><p>To animate your now rendered chart, it is as simple as adding a few more properties to your plot object.</p><p>The first thing you will want to do is give your plot object a property called animation. animation is an object that takes in all the ZingChart properties used to animate your chart.</p><p>The first property you will add to animation is effect. This can either take in a string or a number as a value. For the purpose of this demo, I will use numbers. Your main object should look like the code below but try switching out the values with any number between 1 and 13. I have provided the animation characteristics for values 1 - 13 below.</p><pre>var myConfig = {<br>   &quot;type&quot;: &quot;line&quot;,<br>   &quot;series&quot;: [<br>      {&quot;values&quot;: [20,40,25,50,15,45,33,34] },<br>      {&quot;values&quot;: [5,30,21,18,59,50,28,33] },<br>      {&quot;values&quot;: [30,5,18,21,33,41,29,15] }<br>   ],<br>   &quot;plot&quot;: {<br>      &quot;animation&quot;: {<br>         &quot;effect&quot;:1<br>      }<br>   }<br>};</pre><ul><li>1 = Fade in</li><li>2 = Expand vertical from center</li><li>3 = Expand from top</li><li>4 = Expand from bottom</li><li>5 = Expand left to right</li><li>6 = Expand from right to left</li><li>7 = Expand horizontal from center</li><li>8 = Slide from left</li><li>9 = Slide from right</li><li>10 = Slide from top</li><li>11 = Slide from bottom</li><li>12 = Unfold horizontal</li><li>13 = Unfold vertical</li></ul><p>The next property you can add to animation is sequence. This property can take in values between 1 and 3.</p><p>sequence decides what order the lines on the chart will be animated. I encourage you to try out different property values between 1 and 3 to get a better idea as to how they affect the animation itself.</p><pre>var myConfig = {<br>   &quot;type&quot;: &quot;line&quot;,<br>   &quot;series&quot;: [<br>      {&quot;values&quot;: [20,40,25,50,15,45,33,34] },<br>      {&quot;values&quot;: [5,30,21,18,59,50,28,33] },<br>      {&quot;values&quot;: [30,5,18,21,33,41,29,15] }<br>   ],<br>   &quot;plot&quot;: {<br>      &quot;animation&quot;: {<br>         &quot;effect&quot;: 1,<br>         &quot;sequence&quot;: 1<br>      }<br>   }<br>};</pre><ul><li>1 = Lines appear by plot group</li><li>2 = Lines appear by node group</li><li>3 = Lines appear by individual node</li></ul><p>Lastly, speed is the property that will determine the overall speed of the animation. Try using values between 1 and 100.</p><pre>var myConfig = {<br>   &quot;type&quot;: &quot;line&quot;,<br>   &quot;series&quot;: [<br>      {&quot;values&quot;: [20,40,25,50,15,45,33,34] },<br>      {&quot;values&quot;: [5,30,21,18,59,50,28,33] },<br>      {&quot;values&quot;: [30,5,18,21,33,41,29,15] }<br>   ],<br>   &quot;plot&quot;: {<br>      &quot;animation&quot;: {<br>         &quot;effect&quot;: 1,<br>         &quot;sequence&quot;: 1, <br>         &quot;speed&quot;: 10<br>      }<br>   }<br>};</pre><h3>Rendering Your Chart</h3><p>The last piece of Javascript you will need to add is the zingchart.render() method.</p><p>Once that is added, your full Javascript file should look like this:</p><pre>var myConfig = {<br>   &quot;type&quot;: &quot;line&quot;,<br>   &quot;series&quot;: [<br>      {&quot;values&quot;: [20,40,25,50,15,45,33,34] },<br>      {&quot;values&quot;: [5,30,21,18,59,50,28,33] },<br>      {&quot;values&quot;: [30,5,18,21,33,41,29,15] }<br>   ],<br>   &quot;plot&quot;: {<br>      &quot;animation&quot;: {<br>         &quot;effect&quot;: 1,<br>         &quot;sequence&quot;: 1, <br>         &quot;speed&quot;: 10<br>      }<br>   }<br>};</pre><pre>zingchart.render({<br>   id: &#39;myChart&#39;,<br>   data: myConfig,<br>   height: &quot;100%&quot;,<br>   width: &quot;100%&quot;<br>});</pre><p>As far as animation goes, you are done!</p><p>There are many different combinations of effect sequence and speed that you can take advantage of. I encourage you to play around with various combinations to see what best fits your needs. There are also <a href="https://www.zingchart.com/docs/events/plot">many other properties</a> you can include within the plot object to add interactivity to your chart. You can play around with this demo <a href="https://app.zingsoft.com/demos/embed/Z4KY0TKN">here</a>.</p><p>A pioneer in the world of data visualization, ZingChart is a powerful Javascript library built with big data in mind. With over 35 chart types and easy integration with your development stack, ZingChart allows you to create interactive and responsive charts with ease.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a847934de6b2" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>