我是靠谱客的博主 狂野期待,最近开发中收集的这篇文章主要介绍Julia 可视化库:VegaLite.jl 【笔记7 - transform 之 calculate】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    • calculate 特性
    • 栗子
    • 应用

calculate 特性

// Json 版本
{
  ...
  "transform": [
      // Calculate Transform
      {"calculate": ..., "as" ...}, 
      {"calculate": ..., "as" ...}, 
      {"filter": ...},
       ...
  ],
  ...
}
# Julia 版本
@vlplot(
    ...
    transform=[
        {calculate= ..., as= ...},
        {calculate= ..., as= ...},
        {filter= ...},
        ...
    ],
    ...
)
  1. calculate 的值为 expression 表达式,datum 表示当前输入的数据对象,datum.a 表示对输入数据列名为 a 的数据进行计算。

  2. expression 中默认的常量有: NaNE (常数 e e )、LN2loge2)、LN10 loge10 l o g e 10 )、LOG2E log2e l o g 2 e )、LOG10E log10e l o g 10 e )、MAX_VALUE (可表示的最大正数)、MIN_VALUE (可表示的最小正数)、PI π π )、SQRT1_2 1/2 1 / 2 )、SQRT2 2 2 )等。

  3. calculate 可与 filter 连用,对满足某些条件的数据进行计算操作。

栗子

使用 LOG10E 常量,以历史上各年龄段人口数量顶峰值与这个常量的乘积作为y轴,作出垂直线图。并将各年龄段的历史人口数情况以散点形式添加到图上。

using VegaLite, VegaDatasets
dataset("population") |>
@vlplot() + # 这里相当于定义一层 layer,"+" 表示添加图层
@vlplot(
    transform=[
        {
            calculate="LOG10E * datum.people", 
            # 相当于 log(10, e) * max(people), log(10, e) ≈ 0.434
            as=:people2
        }
    ],
    :rule,
    x="age:o",
    y="people2:q",
)+
@vlplot(
    :point,
    x="age:o",
    y="people:q"
)

这里写图片描述

应用

带有 1.5 倍四分位距的箱线图 ↓

using VegaLite, VegaDatasets
dataset("population") |>
@vlplot(
    transform=[
        {
            aggregate=[
                {op=:q1, field=:people, as=:lowerBox},
                {op=:q3, field=:people, as=:upperBox},
                {op=:median, field=:people, as=:midBox}
            ],
            groupby=[:age]
        },
        {
            calculate="datum.upperBox - datum.lowerBox",
            as=:IQR
        },
        {
            calculate="datum.lowerBox - datum.IQR * 1.5",
            as=:lowerWhisker
        },
        {
            calculate="datum.upperBox + datum.IQR * 1.5",
            as=:upperWhisker
        }
    ]
) +
@vlplot(
    mark={:rule, style=:boxWhisker},
    y={"lowerWhisker:q", axis={title="population"}},
    y2="lowerBox:q",
    x="age:o"
) +
@vlplot(
    mark={:rule, style=:boxWhisker},
    y="upperBox:q",
    y2="upperWhisker:q",
    x="age:o"
) +
@vlplot(
    mark={:bar, style=:box},
    y="lowerBox:q",
    y2="upperBox:q",
    x="age:o",
    size={value=5}
) +
@vlplot(
    mark={:tick, style=:boxMid},
    y="midBox:q",
    x="age:o",
    color={value=:white},
    size={value=5}
)

这里写图片描述

最后

以上就是狂野期待为你收集整理的Julia 可视化库:VegaLite.jl 【笔记7 - transform 之 calculate】的全部内容,希望文章能够帮你解决Julia 可视化库:VegaLite.jl 【笔记7 - transform 之 calculate】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部