整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

为何强烈推荐使用 ApexCharts.js 来绘制交互图表

家好,很高兴又见面了,我是"高级前端‬进阶‬",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。

什么是 ApexCharts

ApexCharts 是现代 JavaScript 图表库,允许开发者使用简单的 API 和 100 多个开箱即用型示例构建交互式数据可视化。

ApexCharts 包含很多优秀的功能,比如十多种图表类型可在应用程序和仪表板中提供美观、响应灵敏的可视化效果。在 FireFox>31+、Chrome>=35+、Safari>=6+、Edge、IE11 等版本的浏览器中完全可用。

ApexCharts的典型特点包括:

  • 可响应性ApexCharts 可在台式机、平板电脑和手机上轻松扩展。可以设置响应式查询,并且可以针对不同的屏幕尺寸使用不同的布局
  • 可交互性缩放、平移、滚动数据、切换多个系列中的数据集可见性、当用户将鼠标悬停在数据点上时显示信息丰富的工具提示,从而更有效传达数据。
  • 动态化: ApexCharts 的动态特性允许加载所选内容的数据并根据这些选择创建其他图表。换句话说,这些功能将使数据真正具有交互性。
  • 高性能:除为图表提供优质外观外,ApexCharts 还提供高性能,支持大数据渲染。
  • 流畅的动画: ApexCharts 在更改数据集、加载动态数据以及与图表交互时提供流畅的交互体验。
  • 支持主题: ApexCharts 有 10 多个调色板可供选择。选择预定义的颜色主题或创建自己的颜色主题。

目前 ApexCharts 在 Github 上通过 MIT 协议开源,有超过 13.2k 的 star、1.2k 的 fork、代码贡献者 150+,妥妥的前端优质开源项目。

如何使用 ApexCharts

首先需要导入相应的库:

import ApexCharts from 'apexcharts';

可以通过下面的代码使用最少的配置创建基本的条形图:

var options = {
  chart: {
    type: 'bar',
  },
  series: [
    {
      name: 'sales',
      data: [30, 40, 35, 50, 49, 60, 70, 91, 125],
    },
  ],
  xaxis: {
    categories: [1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999],
  },
};

var chart = new ApexCharts(document.querySelector('#chart'), options);
chart.render();

渲染效果如下:

借助于 ApexCharts,开发者还可以创建不同图表的组合,同步它们并提供无限可能的外观。

  • 可交互性:缩放、平移和滚动数据进行选择并加载其他图表,显示一些交互性的示例

  • 动态系列更新: 支持下钻取图表,其中一个选择会更新其他图表的数据

  • 注释:允许在特定值或轴值上编写自定义文本,对于扩大图表的视觉吸引力并使其信息更丰富很有价值。

  • 混合图表: 可以组合多种图表类型来创建组合/混合图表,比如:单个图表中的线/面积/柱。每种图表类型都可以有自己的 y 轴。

  • 烛台图:使用烛台图(常见的金融图表)来描述证券、衍生品或货币的价格变化。 下图显示了如何使用另一个图表作为画笔/预览窗格,该窗格充当浏览主烛台图表的句柄。

  • 热力图 :使用热力图通过颜色和阴影来表示数据,经常与更大的数据集合一起使用,对于识别模式和重点领域非常有价值。

  • 仪表: 微型仪表是仪表板的重要组成部分,可用于显示单系列数据。

参考资料

https://github.com/apexcharts/apexcharts.js#readme

https://apexcharts.com/docs/creating-first-javascript-chart/#

内锌湿法冶金仍以常规的锌精矿沸腾焙烧——浸出—净化——电积为主流。为解决常规浸出法存在的浸出渣回转窑还原挥发能耗高、环境污染大的弊端,又发展出了热酸浸出黄钾铁钒法和热酸浸出低污染沉铁法;针铁矿除铁法在丹霞冶炼厂和株洲冶炼厂也实现了工业应用。云南祥云飞龙实业有限责任公司以难处理含氟氯的氧化锌二次物料为原料,开发出了自主知识产权的“浸出一萃取一锌电积”的新技术,自2005年以来相继建成了1万t、2万t和10万t规模的锌冶炼厂,对我国再生锌冶炼技术的发展作出了重要贡献。

铅冶炼行业推广液态高铅渣直接还原炼铅技术,取代原有烧结机鼓风炉炼铅工艺,使我国铅冶炼工艺技术提高到世界先进水平,大大降低了铅冶炼能耗、SO 及含重金属烟尘的排放量。今后铅、锌冶炼重点是推广液态高铅渣直接还原工艺技术、完善和提高氧气底吹熔炼炉熔炼技术、铅富氧闪速熔炼工艺、铅漩涡柱闪速熔炼工艺及高压或常压富氧直接浸锌技术。4.3.2 铅锌冶金科技进步发展方向

铅锌行业技术升级加快,采用清洁环保、节能降耗的先进工艺,提高资源综合利用水平的铅锌联合冶炼成为发展方向。铅锌行业技术不断进步,正在逐渐改变国内铅锌产业的生产结构,推动产业向绿色低碳发展。

有色金属会议拓展:

第五届全国火法冶金工艺技术与装备交流会

https://www.china-mcc.com/meet_show-234.html

、初识Pyecharts

pyecharts简介

pyecharts 是一个用于生成 Echarts 图表的类库, Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。


Pyecharts官网

https://pyecharts.org/#/zh-cn/intro


pyecharts安装

pip install pyecharts


二、Pyecharts可视化

使用pyecharts可以绘制如下图表:

Scatter

散点图

Funnel

漏斗图

Bar

柱状图

Gauge

仪表盘

Pie

饼图

Graph

关系图

Line

折线/面积图

Liquid

水球图

Radar

雷达图

Parallel

平行坐标系

Sankey

桑基图

Polar

极坐标系

WordCloud

词云图

HeatMap

热力图

这里我们简介一下常用的图表的API:

2.0、初始化设置

导入相关库:

from pyecharts.charts import *
import pyecharts.options as opts
  • from pyecharts.charts import *: 可以使用所有的图表对应的函数;
  • 使用 options 配置项,在 pyecharts 中,一切皆 Options,进行参数设置;

总体说明一下:

  1. .render_notebook ()随时随地渲染图表;
  2. .render() 这个不会直接产生图表,而是形成一个render.html的文件,可在浏览器中打开查看图表;


2.1、scatter()

这里我们绘制一个正余弦的散点图

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
y2 = np.cos(x)


# 参数设置
(Scatter() # 图形种类
 .add_xaxis(xaxis_data=x) # 设置x轴序列
 .add_yaxis(series_name='sin', y_axis=y) # 设置y轴序列
 .add_yaxis(series_name='cos', y_axis=y2, label_opts=opts.LabelOpts(is_show=False)) # is_show = False:表示不显示数值部分
).render_notebook()

结果如下:


2.2、line()

from pyecharts.charts import Line
import pyecharts.options as opts


x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)


(
    Line()
    .add_xaxis(xaxis_data=x)
    .add_yaxis(series_name='sin', y_axis=y, label_opts=opts.LabelOpts(is_show=False))
    .add_yaxis(series_name='cos', y_axis=np.cos(x), label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title='曲线'),
                     tooltip_opts=opts.TooltipOpts(axis_pointer_type='cross')
                    )
).render_notebook()

结果如下所示:


2.3、Bar()

柱状图的绘制:

from pyecharts.charts import Bar


bar = (
    Bar()
    .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
bar.render_notebook()

结果如下:

当然,这里只是最基本的柱图使用;我们还可以绘制混合柱图;

from pyecharts.charts import Bar
import pyecharts.options as opts


num = [110, 136, 108, 48, 111, 112, 103]
num2 = [90, 110, 101, 70, 90, 120, 99]
lab = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']


(
    Bar(init_opts=opts.InitOpts(width='720px', height='320px'))
    .add_xaxis(xaxis_data=lab)
    .add_yaxis(series_name='商家A', yaxis_data=num)
    .add_yaxis(series_name='商家B', yaxis_data=num2)
    .set_global_opts(
        title_opts=opts.TitleOpts(title='各商家拥有犬类数量情况', subtitle='如有雷同,纯属意外')
    )
).render_notebook()

结果如下所示:


2.4、Pie()

普通饼图:

from pyecharts.charts import Pie
import pyecharts.options as opts


num = [110, 136, 108, 48, 111, 112, 103]
lab = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']


(
    Pie(init_opts=opts.InitOpts(width='720px', height='320px'))
    .add(series_name='', 
         data_pair=[(j, i) for i, j in zip(num, lab)]
        )
).render_notebook()

结果如下:


环状饼图:

from pyecharts.charts import Pie
import pyecharts.options as opts


num = [110, 136, 108, 48, 111, 112, 103]
lab = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']


(
    Pie(init_opts=opts.InitOpts(width='720px', height='320px'))
    .add(series_name='', 
         radius=['40%', '75%'],
         data_pair=[(j, i) for i, j in zip(num, lab)]
        )
).render_notebook()

如图所示:


玫瑰饼图:

from pyecharts.charts import Pie
import pyecharts.options as opts


num = [110, 136, 108, 48, 111, 112, 103]
lab = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']


(
    Pie(init_opts=opts.InitOpts(width='720px', height='320px'))
    .add(series_name='', 
#          radius=['40%', '75%'],
#          center=['25%', '50%'],
         rosetype='radius',
         data_pair=[(j, i) for i, j in zip(num, lab)]
        )
).render_notebook()

如图所示:


2.5、图表的组合使用

from pyecharts.charts import Bar, Line


num = [110, 136, 108, 48, 111, 112, 103]
lab = ['哈士奇', '萨摩耶', '泰迪', '金毛', '牧羊犬', '吉娃娃', '柯基']


bar = (
    Bar(init_opts=opts.InitOpts(width='720px', height='320px'))
    .add_xaxis(xaxis_data=lab)
    .add_yaxis(series_name='', yaxis_data=num)
)


lines = (
    Line()
    .add_xaxis(xaxis_data=lab)
    .add_yaxis(series_name='', y_axis=num, label_opts=opts.LabelOpts(is_show=False))
)


bar.overlap(lines).render_notebook()

如图所示:


三、总结

Pyecharts可以绘制各种各样的图表,主流的一个数据可视化的库,因为相对于matplotlib,seaborn等数据可视化库,它的交互性比较好,图形绘制的比较清晰美观,所以应用的比较广泛,本文主要就普通常用图形做了简单的总结,当然它还可以绘制地理图形,具体参见官网相关API。