echarts VS react-motion

Compare echarts vs react-motion and see what are their differences.

echarts

Apache ECharts is a powerful, interactive charting and data visualization library for browser (by apache)

react-motion

A spring that solves your animation problems. (by chenglou)
Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
echarts react-motion
17 15
58,944 21,649
1.0% -
8.7 0.0
4 days ago 4 months ago
TypeScript JavaScript
Apache License 2.0 MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

echarts

Posts with mentions or reviews of echarts. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-22.
  • A web crawler program for crawling Echarts official website examples implemented by Puppeter
    1 project | dev.to | 12 Apr 2024
    import puppeteer from "puppeteer"; import fs from "node:fs"; import { storiesTpl, storiesArgs, generOptions, generOptionsWithFn, } from "./template.mjs"; const ECHARTS_BASE_URL = "https://echarts.apache.org/examples/en/index.html"; function capitalizeFirstLetter(str) { if (!str || str.length === 0) { return ""; } str = str.toLowerCase(); return str.charAt(0).toUpperCase() + str.slice(1); } (async function () { const browser = await puppeteer.launch(); const page = await browser.newPage(); // Navigate the page to a URL await page.goto(ECHARTS_BASE_URL); // Set screen size await page.setViewport({ width: 1080, height: 1024 }); // Type into search box // const examples = await page.type([".example-list-panel"]); const searchResultSelector = ".example-list-panel > div"; const results = await page.$$(searchResultSelector); for (const element of results) { // gener namespace const ele = await element.$(".chart-type-head"); const title = await ele.evaluate((el) => el.textContent); let namespace = title.split(" ").filter(Boolean); namespace = namespace.slice(0, namespace.length - 1); namespace = namespace .map((item) => item.replace("\n", "").replace("/", "")) .filter(Boolean) .join(""); console.log(`${namespace} start`); const instances = await element.$$(".row .example-list-item"); const components = []; for (const instance of instances) { // title const titleElement = await instance.$(".example-title"); const subTitle = await titleElement.evaluate((el) => el.textContent); const titles = subTitle .split(" ") .filter(Boolean) .map((item) => item .replace(/\+/g, "") .replace(/\(/g, "") .replace(/\)/g, "") .replace(/-/g, "") ); const title = titles.map((item) => capitalizeFirstLetter(item)).join(""); const link = await instance.$(".example-link"); const newPagePromise = new Promise((resolve) => { browser.on("targetcreated", async (target) => { if (target.type() === "page") { const targetPage = await target.page(); const url = await targetPage.url(); if (url.includes("editor")) { resolve(targetPage); } } }); }); await link.click(); const newPage = await newPagePromise; await newPage.setViewport({ width: 40000, height: 20000 }); await newPage.waitForSelector(".ace_text-layer"); await new Promise((resolve) => { setTimeout(() => { resolve(); }, 3000); }); let content = await newPage.evaluate( () => document.querySelector(".ace_text-layer").innerText ); content = content .replace(/\[\]/g, "[] as any") .replace(//g, "") .replace(/var/g, "let"); let options; if (content.includes("myChart")) { options = generOptionsWithFn({ options: content }); } else { options = generOptions({ options: content }); } components.push({ options, title }); await newPage.close(); } const args = components .filter(({ options }) => { if (options.includes("$")) return false; return true; }) .map(({ options, title }) => storiesArgs({ options: options, name: title }) ) .join("\r\n"); const scripts = storiesTpl({ namespace: `Charts/${namespace}`, components: args, }); fs.writeFileSync(`./bots/assests/${namespace}.stories.ts`, scripts); console.log(`${namespace} end`); } })();
  • Show HN: Paisa – Open-Source Personal Finance Manager
    18 projects | news.ycombinator.com | 22 Sep 2023
    I want to know where my money goes. I like to look at stacked-area (or column) charts of the categories of spending. To make this work I have some software I made ~20 years ago that does double-entry book-keeping. At the end of the month, I import statements from financial service providers (eg: Wells Fargo, Chase, PayPal, Stripe, etc). Lots of stuff is repeat purchases (eg: Shell Gas) and my software automatically categorises. Some transactions I have to categorise manually. Each category / vendor becomes an expense-account and my banks and CCs exist as assets and liabilities.

    Once the import and reconciliation is done I pull up a my column chart that shows where the money went -- and can compare over time -- see a full year of movement. I've been through various charting libraries with it and most recently moved to ECharts[0] -- so I'm planning to expand with Treemap and Sankey style visuals.

    The import process, which I do monthly takes maybe an hour. I'm importing from like 5 bank accounts, 3 payment processors, 4 CC providers. The part that takes the longest is signing into their slow sites, navigating past pop-up/interstitial, getting to their download page and waiting for it to download. Loads of these sites (WF, Chase) have been "modernised" and have some real bullshit UI/UX going on -- lags, no keyboard, elements jump around, forms can't remember state, ctrl+click won't open in a new page cause that damned link isn't actually a link but some nested monster of DIVs with 19 event listeners on each one -- and somehow still all wrong.

    I think the most-best feature would be to have some tool automatically get all my transactions from all these providers into one common format. Gimmee some JSON with like 10 commonly-named fields for the normal stuff and then 52 other BS fields that each provider likes to add (see a PayPal CSV for example). Does that exist and I just don't know?

    [0] https://echarts.apache.org/

  • Personal Sträva Activity Statistics
    3 projects | /r/Strava | 13 Jun 2023
    Coded mainly in Perl and Gnuplot, recently extended by Python Pandas and JavaScript Tabulator and ECharts
  • Build complex SPAs quickly with vue-element-admin
    6 projects | dev.to | 30 Mar 2023
    Dashboards have a lot of charts for different forms and data. This is another common requirement. This template recommends Apache ECharts, a powerful, easy-to-use, and flexible JavaScript visualization library.
  • Using Apache ECharts in React Native - wrn-echarts
    4 projects | /r/reactnative | 1 Feb 2023
    We have developed an open source graphics library for react native APP, which is based on Apache ECharts and uses RNSVG or RNSkia for rendering in a way that is almost identical to using it in the web, and can satisfy most graphics situations. The project source code is available at https://github.com/wuba/wrn-echarts .
  • Best practice for UI design in scientific app
    4 projects | /r/sveltejs | 27 Nov 2022
    apache-echarts for charting system (it has 3d chart anyway)
  • [OC] The crude birth rate in European Union from 1960 to 2020
    1 project | /r/dataisbeautiful | 12 Oct 2022
  • Use types (which import other types that reference the DOM) inside a web-worker!
    1 project | /r/Angular2 | 21 Jul 2022
    How are you importing the definition? Assuming you are using "apache/echarts" and not some other lib named "echarts", you should be able to import DatasetModel directly and let tree shaking trim out what you're not using.
  • Pulling and visualizing data from a database client side
    4 projects | /r/csharp | 20 May 2022
    ECharts -- open source js lib for enterprise-grade charts
  • [OC] U.S. Inflation Reach High in 20 Years
    1 project | /r/dataisbeautiful | 12 Apr 2022

react-motion

Posts with mentions or reviews of react-motion. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-17.
  • Best Animation packages for React.js , every frontend developer should use it
    10 projects | dev.to | 17 Jul 2023
    Github repo : https://github.com/chenglou/react-motion
  • Top 7 React Animation Libraries in 2022
    10 projects | dev.to | 11 Aug 2022
    React-Motion is an animation toolkit that makes building and implementing realistic animations much easier. However, React-Motion can be hard to grasp for beginners. But it has good documentation with rich examples to help developers.
  • Animating in React (The Many Ways!)
    8 projects | dev.to | 10 May 2022
    React Motion is an animation library for React applications that makes realistic animations easier to build and implement.
  • How to build faster animation transitions in React
    5 projects | dev.to | 29 Apr 2022
    Here's a comparison showing how the transition-hook bundle size compares to other React animation libraries: react-spring, framer-motion, react-motion, and react-move:
  • How I built my portfolio using Next.js, TailwindCSS, TypeScript and Framer Motion
    8 projects | dev.to | 21 Mar 2022
    Framer Motion is a production ready animation library for React. I felt the need to add some "cool" animations to my portfolio so that it looks more alive and interactive. One can argue between choosing React Spring or React Motion but that depends on the use-case and since I've already worked with Framer motion before so I went with this.
  • Ask HN: Tech talk on power vs. utility in software?
    1 project | news.ycombinator.com | 14 Feb 2022
    Ah I found it. "On the Spectrum of Abstraction" by Cheng Lou (author of React-Motion)

    https://github.com/chenglou/react-motion

  • Best Animation Libraries for ReactJS
    1 project | dev.to | 22 Jan 2022
    React Motion
  • Clojure startup OrgPad is Top 3 on ProductHunt today
    1 project | /r/Clojure | 28 Dec 2021
    Thanks. Let me write some information concerning our ClojureScript frontend. We wanted to use physics-based animations using springs since only these animations make sense. Sadly the browser decided to only support silly animations which are described in terms of curves and durations. Spring animations are used on both MacOS and iOS and they look much better, since they have the natural feeling. Originally, we were using React Motion for them which would be fine for a small project. But running a lot of animations at the same time is very taxing since every frame of the animation has to go through React and all these layers. Therefore, I spent about 4 months completely rewriting most of our frontend code related to rendering and UI interactions within OrgPage. Unlike React Motion and probably any other spring-based animation library, we do not simulate these springs but instead analytically solve their differential equations. (Luckily I have a strong background in math.) I created the OrgPage https://orgpad.com/s/yRyR-GOU0Pm which summarizes math and my approach. Our animations code consists of about 5k lines of code where maybe 1k is the physics itself and computation of animation maps. The remaining 4k lines are low level controls where particular OrgPage elements are animated using requestAnimationFrame. We always calculate their new positions/sizes/etc. and apply DOM mutations, completely bypassing React, Reagent and Re-frame. There are a lot of clever optimizations to get the current speed. In upcoming months, I plan to investigate WebGL rendering which we could use to render larger parts of the documents, hopefully making everything even faster.
  • React Libraries
    28 projects | dev.to | 7 Dec 2021
    react-motion - A spring that solves your animation problems
  • ✨Top React Charts Libraries [2021]
    8 projects | dev.to | 27 Sep 2021
    Motion/transitions, powered by react-motion

What are some alternatives?

When comparing echarts and react-motion you can also consider the following projects:

Chart.js - Simple HTML5 Charts using the <canvas> tag

react-spring - ✌️ A spring physics based React animation library

d3 - Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:

framer/motion - Open source, production-ready animation and gesture library for React

Highcharts JS - Highcharts JS, the JavaScript charting framework

rc-animate - anim react element easily

vega - A visualization grammar.

react-flip-move - Effortless animation between DOM changes (eg. list reordering) using the FLIP technique.

Frappe Gantt - Open Source Javascript Gantt

react-dropzone - Simple HTML5 drag-drop zone with React.js.

apexcharts.js - 📊 Interactive JavaScript Charts built on SVG

react-parallax-tilt - 👀 Easily apply tilt hover effect on React components - lightweight/zero dependencies (3kB)