作者:凉皮
编辑:西西姐
封面图:侯爵老师
在这样的一个数据时代,很多事情都是靠数据说话,数据可视化可谓十分重要,一图胜千言。
我们精选了 10 个图表库,无论你是想快速上手做一个数据可视化的网站,还是想做一个汇总数据的仪表盘,又或者想在会议上更好的展示数据,都能在这里面找到最适合你的那一个 📈
D3.js 可以说是图表最全的库了,你能想到的图表类型这里都有。
它也是 GitHub 上加星数最多的图表库,多达 89551 个 Star。这意味着你可以很容易找到一个别人写好的示例,然后改成自己想要的图表。
然而,D3 的缺点在于,它是 2011 年发布的,使用的是比较早期的前端方式来实现,大量依赖了 DOM 操作。如果你喜欢 JQuery,那你使用 D3.js 会很顺滑。然而这会让它与现代的前端框架有点格格不入。
并且 D3 依赖于绘制 SVG 图像,而不是使用 CSS,这就让它占用的内存会大一些。
如果你想使用的图表在其他库中找不到,那 D3 一定有。但如果你对网页内存的要求比较高,可以看看下面更为现代的图表库。
如果你想15分钟以内写好一个图表,那就用 Chart.js 吧。
这是一个小巧的 JS 图表库,在 GitHub 上有 1427671 开发者在用。用 Chart.js 可以快速创建动画、交互式和可定义的图表,它允许用户将不同的图表类型混合在一起使用,它有开箱即用的动画效果,在更改数据、颜色时,都有一个动画过渡。
对初学者比较友好,容易设置,但是图表类型没有别的图表库那么丰富,适合想要快速运行简单图表的开发者。如果是另类需求的话,图表类型可能不够用。
它可以在 HTML5 Canvas上绘制出响应式的图表,在窗口大小改变的时候,重新绘制图表,以此调整缩放比率。
Echarts 是百度前端技术部开发出来的一个纯 JS 的数据可视化库,它兼容现在的大部分浏览器,也可以流畅地运行在 PC 和移动端上。由于中文文档支持的很好,所以在国内的使用最多。
在丰富的图表类型中,实现了的强大的三维可视化,像用 ECharts 普通组件那样使用 ECharts GL 就能绘制出三维的地球,建筑群和人口分布的柱状图等。
在 4.0+版本新增的增量渲染技术,让 ECharts 能够展现千万级的数据量(一般情况下几千万的地理坐标数据存储会占用很大的空间),而在这个数据量级依然能够实现流畅的缩放平移等交互。
地址:
https://echarts.apache.org/zh/index.html
Highcharts 完全基于 HTML5,不用安装任何插件,或配置运行环境。
提供了丰富的图表类型,线图、柱形图、饼图、混合图等,还提供了股票走势图、高级时间轴图和丰富多样的地图,并且附带了很多预构建的图表,它还可以在图表中添加注释。
Highcharts 兼容性很强(IE6+),同时也能完美支持移动端触摸操作和手势缩放。
Highcharts 在 GitHub 上开源,但商用收费。
Matplotlib 是第一个 Python 的数据可视化库,所以很多其他库都是在 matplotlib上构建的。适合用在科学计算领域。
它非常强大,但也比较复杂,没有那么容易弄清楚,想要做出一个看起来还不错的图表,可能就需要写大量的代码。
Matplotlib可以轻松地创建网格,标签,图例等,它的所有内容都是可以自定义的。
Seaborn 是 Matplotlib 基础上建立的,但是在 GitHub上面的星星数要比 Matplotlib多,是本文推荐的 Python 图表库里最多星星的。
如此受欢迎大概是因为 Seaborn 有惊人的默认主题,有了这些内置的默认样式和调色板,我们可以只用几行代码来创建复杂而且漂亮的图表。
Seaborn只是 Matplotlib补充,而不是替代,在很多情况下,还是需要先学一下 Matplotlib 才能调整 Seaborn 相关的默认设置。
Bokeh 基于网页的画图工具库,它的优势在于创建交互式图表,做出来的图表可以保存为 HTML文件。
它可做动图,也可以做仪表盘的排版,也可只打开一张表或者做图表的联动。
有三个不同的程度的接口,一是能快速创建常用图表;二是允许用户控制图表的基本模块,比如说散点图的点;三是没有预设的默认值,要求用户定义图表的每一个元素。
地址:
https://docs.bokeh.org/en/latest/index.html
Chartify 是Spotify 开源的一个 Python 图表库,建立在 bokeh 之上,和其他的图表库相比,它的语法更加简洁友好,API 比较直观易学,而且有非常详细的使用说明。
不同的绘图方法往往需要不同的数据格式,从而要求用户完全重新格式化输入的数据。这导致我们需要花费大量时间将数据操纵到合适的图表上,但是 Chartify 能解决这个问题,它是输入一致的数据格式,可以让你快速创建图表,而且它的预设图表就很漂亮,不用你花费很多的时间来配置美观的图表。
Chartify 灵活性高,如果需要较复杂的绘图功能,可以调用 bokeh 的 API 来操纵 Chartify。
地址:https://pypi.org/project/chartify
Plotly 是一个用于数据可视化的在线平台,Plotly 的团队也维护着用于 R,Python和 JS 的开源的可视化库,像 Bokeh 一样,Plotly 的强项也是制作交互式绘图。
Plotly Dash 可以将我们用 plotly 画出的图通过交互式可视化的方式表达出来,在 web 浏览器中呈现。
Plotly.js 有 40多种图表类型,包括 3D 图表,统计图和 SVG 地图。它大多数绘图都是用 SVG 绘制的,这一点为跨浏览器、矢量图像导出提供了很大的兼容性。
Plotly.py 内置在 Plotly.js 之上,它可以在 Jupyter 笔记本和独立 HTML 文件中查看图表,还提供了一些别的库没有的图表类型,比如树状图、轮廓图等。
infogram 是一个可以在线做图表的平台,只需几分钟,你就可以创建出比较好看的图表,如果想要不敲代码也能做出美观的图表,那这个 infogram 是一个不错的选择。
总结:
👀最易上手奖 Chart.js
如果你时间有限,那 chart.js 绝对是你的最佳选择。
🍻终身成就奖 D3.js
如果你爱 jQuery 那么你也会爱死了 D3.js,你要记得有那么个年代它撑起了图表界的半边天。
👩🏻🎓专业精神奖 Matplotlib
感谢 Matplotlib 在科学计算图表领域带来了容易使用以及最细致入微的文档。
😈十项全能奖 Plotly
能力越大责任越大,能做的这么多,用起来稍微复杂一点也不是什么问题,你说是吧?
😺最佳新人奖 Chartify
如果你会用 Python,那么你就会用 chartify。