当前位置:首页 > 科技  > 软件

2024 年面向前端开发的七个最佳图表库

来源: 责编: 时间:2024-05-29 08:58:21 93观看
导读现在越来越多的应用程序趋向于通过图表或图形进行数据可视化。怎么实现呢?简单,使用库或底层技术就行。作为开发人员,了解和掌握图表库将能起到巨大作用:不但可以大大提高效率、节省时间,还可以通过各种图表类型和样式选项
现在越来越多的应用程序趋向于通过图表或图形进行数据可视化。怎么实现呢?简单,使用库或底层技术就行。

作为开发人员,了解和掌握图表库将能起到巨大作用:不但可以大大提高效率、节省时间,还可以通过各种图表类型和样式选项来满足各种不同的开发需求。rlm28资讯网——每日最新资讯28at.com

本文将介绍七个超级好用的图表库。一起来看看吧!rlm28资讯网——每日最新资讯28at.com

1. Latitude for React:将图表集成到前端应用的完美伴侣

图片图片rlm28资讯网——每日最新资讯28at.com

Latitude 是一款用于嵌入式分析的开源框架,能够快速将 SQL 查询公开为 API 端点。rlm28资讯网——每日最新资讯28at.com

产品包括@latitude-data/react,这是一组原生 React 组件,可用于轻松绘制来自 Latitude API 的数据。如果你选择自带数据,Latitude也可以用作独立的图表库。rlm28资讯网——每日最新资讯28at.com

Latitude for React 的主要特性

  • 多种图表类型:例如条形图、饼图、面积图、分散图、混合图等。
  • 高度可定制的组件:组件预先捆绑了一组主题,允许你轻松创建自定义主题。且大多数组件都可以使用自定义 html 类进行扩展。
  • 自动运行查询或自己提供数据:Latitude 为每个图表组件提供两个版本。一个版本自动运行 Latitude 查询。另一个版本接收数据作为prop,让用户负责获取数据。

如何使用 Latitude for React

首先,在 React 项目中安装 Latitude 的react包:rlm28资讯网——每日最新资讯28at.com

npm install --save @latitude-data/react

接着,导入用于Latitude组件的核心样式:rlm28资讯网——每日最新资讯28at.com

import '@latitude-data/react/dist/index.css';

Latitude 后端的使用

如果要从 Latitude 后端获取数据,可以使用项目根目录的LatitudeProvider包装应用程序:rlm28资讯网——每日最新资讯28at.com

import { LatitudeProvider } from '@latitude-data/react';function App() {  return (    <LatitudeProviderapiCnotallow={{        host: <YOUR_LATITUDE_API_HOST>      }}>      {/* Your app content */}    </LatitudeProvider>);}

再以Query为前缀使用 Latitude 的图表组件:rlm28资讯网——每日最新资讯28at.com

import { QueryLineChart } from '@latitude-data/react';function MyComponent() {  return (    <QueryLineChart      queryPath='titles'      params={{        start_year: 2012,        end_year: 2014      }}      x='release_year'y={[        { name: 'count_shows' },        { name: 'count_movies' }      ]}      xTitle='Year'      yTitle='Titles'/>  );}

在上面的示例中,queryPath对应于 Latitude 后端中定义的查询路径。rlm28资讯网——每日最新资讯28at.com

作为独立的图表库

可以像这样使用独立组件:rlm28资讯网——每日最新资讯28at.com

import { LineChart } from '@latitude-data/react';function MyComponent() {  const data = [    {      release_year: 2010,      count_shows: 10,      count_movies: 2    }  ]  return (    <LineChart      data={data}      x='release_year'      y={[        { name: 'count_shows' },        { name: 'count_movies' }      ]}    />   );}

觉得意犹未尽,还可以阅读文档获取有关 Latitude 动态显示数据的加强版指南。rlm28资讯网——每日最新资讯28at.com

2. D3.js:用于数据可视化的 JavaScript 库

图片图片rlm28资讯网——每日最新资讯28at.com

D3 虽然是低级图表库,但它提供了无与伦比的自定义和灵活性。rlm28资讯网——每日最新资讯28at.com

相比那些学习难度大的通用前端框架,如 React 和 Svelte,如果是一些特定的图表需求,那么d3.js可能是更佳的选择。当然,如果应用程序需要快速集成简单图表,那么更推荐使用其他的图表库。rlm28资讯网——每日最新资讯28at.com

D3.js的主要特点

  • 自定义和灵活性:D3.js 提供对 SVG、HTML 和 CSS 的低级访问,允许对视觉元素进行细粒度控制。具有高度的灵活性和可定制性。
  • 模块化:D3.js 是高度模块化的,具有各种模块,可以单独使用,也可以组合使用。因此可以更好地控制捆绑包大小和性能优化。
  • 强大的过渡和动画:D3.js 为过渡和动画提供强大的支持,为数据更新提供流畅而复杂的动画。
  • 社区和生态系统:D3.js 拥有庞大而活跃的社区,提供大量文档、示例和插件。可以更轻松地找到支持和资源。

如何使用D3.js

在项目中安装 d3 的npm包:rlm28资讯网——每日最新资讯28at.com

npm install d3

以下示例代码表示通过id #chart将图表添加到html组件:rlm28资讯网——每日最新资讯28at.com

import * as d3 from 'd3';// Data for the bar chartconst data = [    { name: 'A', value: 30 },    { name: 'B', value: 80 },    { name: 'C', value: 45 },    { name: 'D', value: 60 },    { name: 'E', value: 20 },    { name: 'F', value: 90 },    { name: 'G', value: 55 }];// Set the dimensions and margins of the graphconst margin = { top: 20, right: 30, bottom: 40, left: 40 };const width = 500 - margin.left - margin.right;const height = 300 - margin.top - margin.bottom;// Append the svg object to the body of the pageconst svg = d3.select("#chart")    .append("svg")    .attr("width", width + margin.left + margin.right)    .attr("height", height + margin.top + margin.bottom)    .append("g")    .attr("transform", `translate(${margin.left},${margin.top})`);// X axisconst x = d3.scaleBand()    .range([0, width])    .domain(data.map(d => d.name))    .padding(0.1);svg.append("g")    .attr("transform", `translate(0,${height})`)    .call(d3.axisBottom(x))    .selectAll("text")    .attr("class", "axis-label")    .attr("transform", "translate(-10,0)rotate(-45)")    .style("text-anchor", "end");// Y axisconst y = d3.scaleLinear()    .domain([0, d3.max(data, d => d.value)])    .nice()    .range([height, 0]);svg.append("g")    .call(d3.axisLeft(y))    .selectAll("text")    .attr("class", "axis-label");// Barssvg.selectAll(".bar")    .data(data)    .enter()    .append("rect")    .attr("class", "bar")    .attr("x", d => x(d.name))    .attr("y", d => y(d.value))    .attr("width", x.bandwidth())    .attr("height", d => height - y(d.value));

如你所见,D3.js 通常比其他替代方法更冗长,但也因此可以最大限度地控制可视化的各个方面。rlm28资讯网——每日最新资讯28at.com

D3 的免费和开源也是一大亮点。rlm28资讯网——每日最新资讯28at.com

3. Chart.js:灵活的 JavaScript 库,适用于基于 HTML 的图表

图片图片rlm28资讯网——每日最新资讯28at.com

Chart.js目前是最受欢迎的图表库之一,也是最容易使用的图表库之一。与一些仅将数据呈现为 SVG 的图表库不同,Chart.js通过 Canvas 进行视觉渲染。rlm28资讯网——每日最新资讯28at.com

Chart.js的主要特点

  • 性能:Chart.js接受内部数据结构,从而减少解析和标准化的需求,提高了性能。也可以配置数据抽取,以便在渲染数据集之前减小数据集大小,从而加快速度。使用 canvas 可以压缩 DOM 树的开销,有助于最小化捆绑包中Chart.js代码的大小,从而缩短加载时间。
  • 可访问性:与大多数图表库相比,Chart.js 有一个非常直接的方法,对在画布上运行所做的一切了解得一清二楚。不需要复杂的自定义,因为它允许将所有自定义选项用于样式、主题等。
  • 出色的开发体验:除了拥有非常出色的社区影响力外,Chart.js 还有简单文档,文档经常更新。还可与大多数人最喜欢的 JavaScript 框架,如 React、Svelte 等集成。
  • 图表响应性:默认情况下,Chart.js 提供响应式图表。不但可以自动调整屏幕,还可为图表提供可调节的大小。从而确保在所有设备上都能很好地可视化数据。

如何使用Chart.js

Chartjs 可以通过npm安装,也可以在运行时通过cdn直接下载:rlm28资讯网——每日最新资讯28at.com

<div>  <canvas id="myChart"></canvas></div><script src="https://cdn.jsdelivr.net/npm/chart.js"></script><script>  const ctx = document.getElementById('myChart');  new Chart(ctx, {    type: 'bar',    data: {      labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],      datasets: [{        label: '# of Votes',        data: [12, 19, 3, 5, 2, 3],        borderWidth: 1      }]    },    options: {      scales: {        y: {          beginAtZero: true        }      }    }  });</script>

这个项目是不是很酷呢!rlm28资讯网——每日最新资讯28at.com

4. Apache ECharts:用于快速构建图表的 JavaScript 可视化工具

图片图片rlm28资讯网——每日最新资讯28at.com

ECharts 是一个开源的数据可视化库,这段时间越来越受到大家的喜爱和欢迎。它由 Apache foundation 构建,依靠 ZRender 来渲染图形。rlm28资讯网——每日最新资讯28at.com

与其他库相比,ECharts更复杂;并且ECharts只渲染动态数据。rlm28资讯网——每日最新资讯28at.com

ECharts的主要特点

  • 广泛的图表类型:ECharts 支持多种图表类型,包括条形图、折线图、饼图、散点图、地图、雷达图、箱线图、热图、平行坐标、桑基图,等等等等。这种多功能性允许用户以多种格式可视化数据。
  • 交互性:ECharts具有对交互式元素,如工具提示、缩放、平移和数据突出显示的内置支持。用户可以与可视化效果进行交互,更深入地了解数据。
  • 性能:ECharts 专为高性能而设计,能够高效处理大型数据集。它利用 Canvas 和 WebGL 进行渲染,在复杂的可视化和大数据量方面,比传统的基于 SVG 的渲染性能更高。

如何使用 Apache ECharts

使用npm安装 echarts:rlm28资讯网——每日最新资讯28at.com

npm install echarts

以下代码片段通过 id #chart在 DOM 元素中创建了一个简单的条形图:rlm28资讯网——每日最新资讯28at.com

// Import EChartsimport * as echarts from 'echarts';// Initialize the chartvar chartDom = document.getElementById('chart');var myChart = echarts.init(chartDom);var option;// Specify the chart configurationoption = {    title: {        text: 'Simple Bar Chart'    },    tooltip: {},    xAxis: {        data: ['A', 'B', 'C', 'D', 'E', 'F']    },    yAxis: {},    series: [        {            name: 'Value',            type: 'bar',            data: [5, 20, 36, 10, 10, 20]        }    ]};// Use the specified chart configurationoption && myChart.setOption(option);

很有趣的一个项目,不是吗?rlm28资讯网——每日最新资讯28at.com

5. Nivo:用于在 React 构建图表app的库

图片图片rlm28资讯网——每日最新资讯28at.com

Nivo 是一个专为 React 而设计、用于创建数据可视化的高级开源 JavaScript 库。它建立在 D3 的基础上,提供广泛的图表类型,自带内置主题、交互性和响应式设计。rlm28资讯网——每日最新资讯28at.com

Nivo的主要特点

  • 易用性: Nivo 比 D3.js 等替代品更人性化、更易于使用。Nivo提供了更高级别的抽象,无需深入了解 SVG 和 DOM 操作也可以轻松创建复杂的图表。
  • React 集成:Nivo 是专门为 React 构建的,是 React 生态系统开发人员的绝佳选择。它利用 React 基于组件的架构,易于集成和重用。
  • 主题和响应能力:Nivo 包括对主题和响应式设计的内置支持,可以在不同设备上轻松创建美观的图表。

如何使用 Nivo

React 开发人员使用 Nivo 简直轻而易举。安装 nivo 核心软件包以及相关图表库。在下面的示例中,我们将实现一个条形图:rlm28资讯网——每日最新资讯28at.com

yarn add @nivo/core @nivo/bar

然后,导入相关的图表组件并在 React 环境中使用:rlm28资讯网——每日最新资讯28at.com

import { Bar } from '@nivo/bar';const MyBarChart = () => {const salesData = [  {    "category": "Electronics",    "value": 5000  },  {    "category": "Clothing",    "value": 3000  },  {    "category": "Furniture",    "value": 2500  }];  return (    <Bar      data={salesData}      indexBy="category"      maxValue={6000}      keyBy="id"/>  );};export default App;

重复强调一句,Nivo 是开源的,非常棒!rlm28资讯网——每日最新资讯28at.com

6. Plotly:适用于不同技术堆栈的开源图表库

图片图片rlm28资讯网——每日最新资讯28at.com

Plotly 是开源的数据可视化库,支持多种图表类型和交互式功能。可用于包括 Python、R 和 JavaScript在内的多种编程语言。rlm28资讯网——每日最新资讯28at.com

Plotly.js 是 Plotly 的 JavaScript 版本,建立在 D3 之上,广泛用于创建基于 web 的交互式可视化。rlm28资讯网——每日最新资讯28at.com

Plotly 的主要特点

  • 支持不同的编程语言:Plotly 支持不同语言,这与其他许多支持单一语言的图表库不同。你可以使用自己熟悉的语言将数据可视化为图表。
  • 复杂的图表类型:Plotly 抽象了matplotlib、ggplot2 和 MATLAB 等软件包中的统计和科学图表的类型。
  • 可移植:Plotly图表以声明方式描述为 JSON 对象。图表的每个方面,如颜色、网格线和图例,都有一组相应的 JSON 属性。所以 plotly 在不同的语言实现中也可以使用相同的配置。
  • 性能:Plotly 主要使用 SVG 作为图表,但也可以利用 webGL 来渲染高性能可视化。

如何使用 Plotly

如前所述,Plotly 可以使用多种编程语言,这里仅以 Javascript 为例。rlm28资讯网——每日最新资讯28at.com

首先,安装相关npm包:rlm28资讯网——每日最新资讯28at.com

npm install plotly.js-dist

然后,在html中创建一个空的div元素来绘制图形:rlm28资讯网——每日最新资讯28at.com

<div id="tester" style="width:600px;height:250px;"></div>

最后,输入以下代码来绘制一个简单的折线图:rlm28资讯网——每日最新资讯28at.com

const TESTER = document.getElementById('tester');Plotly.newPlot( TESTER, [{    x: [1, 2, 3, 4, 5],    y: [1, 2, 4, 8, 16] }], {    margin: { t: 0 } } );

Plotly 真的是一个非常好用的工具,对吧!rlm28资讯网——每日最新资讯28at.com

7. Victory:用于图表和数据可视化的 React 组件

Victory 是一个用于 React 和 React Native 的开源模块化图表库。它有一个简单优雅的 API,可用于创建各种数据可视化。rlm28资讯网——每日最新资讯28at.com

与 Nivo 类似,Victory 利用了 React 的优势,因此成为许多熟悉 React 生态系统的开发人员的天然选择。rlm28资讯网——每日最新资讯28at.com

Victory JS的主要特点

  • 与React 和 React Native 相同的 API:Victory 是专门为 React 和 React Native 构建的,因此可以无缝集成到 web 和移动应用程序中。
  • 易用性:Victory 的声明式、基于组件的 API 使得向 React 应用程序添加可视化变得简单,特别是与 D3 等其他命令式方法相比。
  • 交互性:Victory 提供开箱即用的工具提示、对事件和复杂动画的支持,使可视化感觉更加生动。

如何使用 Victory

首先,安装npm包:rlm28资讯网——每日最新资讯28at.com

npm install victory

然后,根据需要导入要使用的相关组件。例如:rlm28资讯网——每日最新资讯28at.com

import React from 'react';import { VictoryBar } from 'victory';const data = [  {quarter: 1, earnings: 13000},  {quarter: 2, earnings: 16500},  {quarter: 3, earnings: 14250},  {quarter: 4, earnings: 19000}]function App() {  return (    <VictoryBar      data={data}      // data accessor for x values      x="quarter"      // data accessor for y values      y="earnings"    />}

如果你觉得 Victory 很酷,那么一定要尝试一下。rlm28资讯网——每日最新资讯28at.com

结束语

恭喜!你又学完了今天的新知识!rlm28资讯网——每日最新资讯28at.com

在本文中,我们介绍了 2024 年值得探索的 7 个图表库。并且,我们不仅仅是简单地概述了一下哦,还具体介绍了每个库的工作原理、底层架构以及构建技术。此外,我们还通过示例学习了如何将这些库合用于项目中。rlm28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-91373-0.html2024 年面向前端开发的七个最佳图表库

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 为什么 Go Protobuf 不支持标签注入?

下一篇: 消息队列的六种经典使用场景和 Kafka 架构设计原理详细解析

标签:
  • 热门焦点
  • Redmi Pad评测:红米充满野心的一次尝试

    Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 一文看懂为苹果Vision Pro开发应用程序

    一文看懂为苹果Vision Pro开发应用程序

    译者 | 布加迪审校 | 重楼苹果的Vision Pro是一款混合现实(MR)头戴设备。Vision Pro结合了虚拟现实(VR)和增强现实(AR)的沉浸感。其高分辨率显示屏、先进的传感器和强大的处理能力
  • 一年经验在二线城市面试后端的经验分享

    一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 微信语音大揭秘:为什么禁止转发?

    微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

    深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

    在 Elasticsearch 中,function_score 可以让我们在查询的同时对搜索结果进行自定义评分。function_score 提供了一系列的参数和函数让我们可以根据需求灵活地进行设置。近期
  • 只需五步,使用start.spring.io快速入门Spring编程

    只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • 中国家电海外掘金正当时|出海专题

    中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • ESG的面子与里子

    ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    AI芯片初创公司Tenstorrent获三星和现代1亿美元投资

    Tenstorrent是一家由芯片行业资深人士Jim Keller领导的加拿大初创公司,专注于开发人工智能芯片,该公司周三表示,已经从现代汽车集团和三星投资基金等
Top
Baidu
map