彩票走势图

开源图表库Highcharts教程:创建密度图

翻译|使用教程|编辑:杨鹏连|2020-09-01 09:32:07.077|阅读 262 次

概述:​在本教程中,我们将向您展示如何使用Area Spline图表类型创建多个密度图,也称为脊线图。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Highcharts是一款纯JavaScript编写的图表库,为你的Web网站、Web应用程序提供直观、交互式图表。当前支持折线、曲线、区域、区域曲线图、柱形图、条形图、饼图、散点图、角度测量图、区域排列图、区域曲线排列图、柱形排列图、极坐标图等几十种图表类型。

点击下载Highcharts最新试用版

开源图表库Highcharts教程:创建密度图

在本教程中,我们将向您展示如何使用Area Spline图表类型创建多个密度图,也称为脊线图。从下面的演示中您将看到,输出结果看起来不像我们的“默认”区域样条图演示,但是这里是Highcharts真正擅长的地方:尽管99%的用例可以满足于在所有默认情况下运行我们的图表设置,通过检查API并考虑您想要数据故事的内容以及如何最好地对此数据进行预处理,可以带来很多乐趣。

在本教程中,我们将继续这样做,继续探索超级有用的内核密度估计。在先前的教程中,我们使用了高斯核函数来创建单个密度图和小提琴图类型。您可能会问:“等等,小提琴图和密度图在本质上是不是同一张图?” 你会是对的。密度图基本上是从中间分开的小提琴图,其中仅使用一半。即使是一半大小,密度图也不会丢失任何信息,因为小提琴的左侧和右侧只是彼此的镜像。

那么,什么时候使用小提琴或密度图?两种图表类型均用于可视化数据分布及其概率密度。两张图表的形状在较低的密度值时会更亮,而在较高的密度值时会更厚。尽管它们都可以用于显示相同的数据,但是您可以考虑使用密度图来实现紧凑而直接的数据分布可视化。使用小提琴图显示具有描述性统计系数的诱人的密度分布。

下面的演示显示了六个学科的2012年奥运会男运动员的体重密度:

开源图表库Highcharts教程:创建密度图
由于密度形状和线性梯度,该图表易于阅读。观众可以使用图表形状查看和分析分布的数据,并使用颜色渐变来比较权重。
图表后面的代码也很容易理解。处理密度数据的主要功能processDensity()(请查看GitHub链接)是受Kernel Density Estimation的启发。该函数获取四个主要参数并返回三个数组:
function processDensity(step, precision, densityWidth, ...args) {
  …
  return {
    xiData,
    results,
    stat
  };
}
这是函数参数的描述:
  • step是最小数据集单位。该步骤用于对数据集进行采样并创建KDE。
  • precision 用于细化末端的密度图,在细点处,此参数越小,表示在末端和图表上的细点处获得的点越多。
  • densityWidth用于加宽密度。此参数应等于1以反映KDE值的结果。但是,出于可见性目的,您可以自由更改,densityWidth以获取更宽的可见形状。
  • args是一个或多个表示数据集的数组。在我们的案例中,args是四组重量级运动员,每个学科一组。
下面的代码是如何使用该函数的示例:
let step = 1,
  precision = 0.00000000001,
  width = 15;
let data = processDensity(
  step,
  precision,
  width,
  dataArray[0], //triathlon,
  dataArray[1], //badminton,
  dataArray[2], //fencing,
  dataArray[3], //rowing,
  dataArray[4], //handball,
  dataArray[5], //cycling,
  dataArray[6] //gymnastics
);
这是返回数组的描述:
  • xiData 是使用运动员体重数据的步长和范围生成的xAxis数据。
  • results 包括所有密度图数据。
  • stat 是具有所有描述性统计系数的数组。
使用该processDensity()功能,一旦生成了每个系列的密度数据,下一步就是渲染数据。

为了使数据可视化,使用了一个areasplinerange类型图,因为processDensity()返回的是根据areasplinerange格式返回的数据数组结果。

  Highcharts.chart("container", {
        chart: {
          type: "areasplinerange",
          …
要创建颜色渐变效果,请使用以下linearGradient选项:
events: {
  render() {
    if (!redrawing) {
      redrawing = true;

      this.series.forEach((s) => {
        s.update({
          fillColor: {
            linearGradient: [0, 0, this.plotWidth, 0],
            stops: [
              [0, Highcharts.color("yellow").setOpacity(0).get("rgba")],
              [0.25, "orange"],
              [0.5, "red"],
              [0.6, "purple"]
            ]
          }
        });
      });
      redrawing = false;
    }
  }
}
一定要使用linearGradient在event了下chart功能; 否则,在不同的屏幕尺寸下,渐变效果将不同。

APS帮助提升企业生产效率,真正实现生产计划可视化呈现与控制,快速有效响应不同场景的生产计划,提高准时交货能力,提高产能和资源利用率

想要购买Highcharts正版授权,或了解更多产品信息请点击


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP