标签: 数据可视化

  • 关于数据可视化:数据可视化新方式SankeyDiagramControl类的使用你不能错过Part-2

    点击获取工具>>

    自定义节点

    应用SankeyDiagramControl.NodeLabel属性拜访节点标签设置,以下选项使您能够配置节点标签的文本:

    • TextOrientation – 标签文字方向。
    • MaxWidth – 标签宽度(以像素为单位)。
    • MaxLineCount – 多行文字能够占用的行数。
    • TextAlignment – 文字对齐。
    • Font – 字体参数。

    C#

    `sankeyDiagramControl1.NodeLabel.TextOrientation = TextOrientation.TopToBottom;
    sankeyDiagramControl1.NodeLabel.MaxWidth = 200;
    sankeyDiagramControl1.NodeLabel.MaxLineCount = 1;
    sankeyDiagramControl1.NodeLabel.TextAlignment = StringAlignment.Center;
    sankeyDiagramControl1.NodeLabel.Font = new Font(FontFamily.GenericSerif, 10);`

    VB.NET

    `sankeyDiagramControl1.NodeLabel.TextOrientation = TextOrientation.TopToBottom
    sankeyDiagramControl1.NodeLabel.MaxWidth = 200
    sankeyDiagramControl1.NodeLabel.MaxLineCount = 1
    sankeyDiagramControl1.NodeLabel.TextAlignment = StringAlignment.Center
    sankeyDiagramControl1.NodeLabel.Font = New Font(FontFamily.GenericSerif, 10)`

    您还能够解决CustomizeNode事件来拜访特定节点并依据特定条件对其进行自定义:

    C#

    `sankeyDiagramControl1.CustomizeNode += OnCustomizeNode;
    //…
    private void OnCustomizeNode(object sender, CustomizeSankeyNodeEventArgs e) {
    if (e.Label.Text == “France” && e.Node.Level == 0) {
    e.Label.Font = new Font(“Tahoma”, 16);
    e.Label.Text = “France (Source)”;
    }
    }`

    VB.NET

    `Private Sub OnCustomizeNode(ByVal sender As Object, ByVal e As CustomizeSankeyNodeEventArgs)
    If e.Label.Text Is “France” AndAlso e.Node.Level = 0 Then
    e.Label.Font = New Font(“Tahoma”, 16)
    e.Label.Text = “France (Source)”
    End If
    End Sub`

    节点排序

    该控件依据根底数据主动排列节点,如果心愿重新排列节点或指定自定义排序程序,请创立一个实现IComparer <SankeyNode>的类。 而后,将此类的对象调配给NodeComparer属性。

    以下代码按节点的TotalWeight值降序排列它们:

    C#

    `private void Form1_Load(object sender, EventArgs e) {
    sankeyDiagramControl1.NodeComparer = new MyNodeComparer();
    }

    public class MyNodeComparer : IComparer<SankeyNode> {
    public int Compare(SankeyNode x, SankeyNode y) {
    return y.TotalWeight.CompareTo(x.TotalWeight);
    }
    }`

    VB.NET

    `Friend Class SurroundingClass
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
    sankeyDiagramControl1.NodeComparer = New MyNodeComparer()
    End Sub

    Public Class MyNodeComparer
    Inherits IComparer(Of SankeyNode)

    Public Function Compare(ByVal x As SankeyNode, ByVal y As SankeyNode) As Integer
    Return y.TotalWeight.CompareTo(x.TotalWeight)
    End Function
    End Class
    End Class`

    指定节点和链接色彩

    Sankey diagram控件应用SankeyPaletteColorizer为节点着色,应用惟一标签将调色板中的新色彩利用于每个节点。 如果惟一标签的数量超过调色板色彩的数量,则色彩会反复。 要将突变填充利用于链接,控件将利用源和指标节点色彩。 指定SankeyPaletteColorizer.Palette 属性来更改用于绘制Sankey diagram的色彩,您能够抉择预约义的调色板。

    C#

    `sankeyDiagramControl1.Colorizer = new SankeyPaletteColorizer { Palette = Palettes.NorthernLights };
    `
    VB.NET

    `sankeyDiagramControl1.Colorizer = New SankeyPaletteColorizer With {
    .Palette = Palettes.NorthernLights
    }`

    您还能够如下创立新的调色板:

    C#

    `using System.Drawing;
    //…
    Palette palette = new Palette(“Custom”) {
    Color.Red,
    Color.Green,
    Color.Blue
    };
    sankeyDiagramControl1.Colorizer = new SankeyPaletteColorizer { Palette = palette };
    `
    VB.NET

    `Imports System.Drawing
    ‘…
    Dim palette As Palette = New Palette(“Custom”) From {
    Color.Red,
    Color.Green,
    Color.Blue
    }
    sankeyDiagramControl1.Colorizer = New SankeyPaletteColorizer With {
    palette
    }`

    自定义着色器

    要基于自定义算法绘制链接和节点,请创立一个实现ISankeyColorizer 接口的类。 而后,将此类的对象调配给Colorizer属性。

    以下代码实现了一个着色器,该着色器将随机色彩利用于节点,并指定用于将突变填充利用于链接的色彩:

    C#

    `private void Form1_Load(object sender, EventArgs e) {
    sankeyDiagramControl1.Colorizer = new MyColorizer {
    LinkSourceColor = Color.Red,
    LinkTargetColor = Color.Yellow
    };

    public class MyColorizer : ISankeyColorizer {
    public event EventHandler ColorizerChanged;
    Random rand = new Random();
    Dictionary<string, Color> KeyColorPairs = new Dictionary<string, Color>();
    public Color LinkSourceColor { get; set; }
    public Color LinkTargetColor { get; set; }
    public Color GetLinkSourceColor(SankeyLink link) {
    return LinkSourceColor;
    }
    public Color GetLinkTargetColor(SankeyLink link) {
    return LinkTargetColor;
    }
    public Color GetNodeColor(SankeyNode info) {
    if (!KeyColorPairs.TryGetValue((string)info.Tag, out Color nodeColor)) {
    nodeColor = GenerateColor();
    KeyColorPairs.Add((string)info.Tag, nodeColor);
    }
    return nodeColor;
    }
    private Color GenerateColor() {
    return Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256));
    }
    }`

    VB.NET

    `Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
    sankeyDiagramControl1.Colorizer = New MyColorizer With {
    .LinkSourceColor = Color.Red,
    .LinkTargetColor = Color.Yellow
    }
    End Sub

    Public Class MyColorizer
    Inherits ISankeyColorizer

    Public Event ColorizerChanged As EventHandler
    Private rand As Random = New Random()
    Private KeyColorPairs As Dictionary(Of String, Color) = New Dictionary(Of String, Color)()
    Public Property LinkSourceColor As Color
    Public Property LinkTargetColor As Color

    Public Function GetLinkSourceColor(ByVal link As SankeyLink) As Color
    Return LinkSourceColor
    End Function

    Public Function GetLinkTargetColor(ByVal link As SankeyLink) As Color
    Return LinkTargetColor
    End Function

    Public Function GetNodeColor(ByVal info As SankeyNode) As Color
    Dim nodeColor As Color = Nothing

    If Not KeyColorPairs.TryGetValue(CStr(info.Tag), nodeColor) Then
    nodeColor = GenerateColor()
    KeyColorPairs.Add(CStr(info.Tag), nodeColor)
    End If

    Return nodeColor
    End Function

    Private Function GenerateColor() As Color
    Return Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256))
    End Function
    End Class`

  • 关于数据可视化:Redash中文商业版Centos8本地部署

    1.装置阐明
    Centos8内置的Python为3.6.8版本,以下是在内置Python3.6.8根底上的装置步骤。因为装置多版本Python会导致系统底层库须要下载源码从新编译,比拟麻烦,不倡议在多版本Python环境下装置Redash中文版。

    官网:www.dazdata.com

    2.初始化环境装置
        1)、进入设置yum源目录下:
        cd /etc/yum.repos.d/
        2)、下载主动下载文件工具
        sudo yum install wget
        3)、将yum源文件备份一下:
        sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
        4)、下载阿里yum源:
        sudo wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/rep…
        5)、清理原缓存:
        sudo yum clean all
        6)、建设缓存当前不便缓存中搜寻:
        sudo yum makecache
        7)、更新零碎包:
        sudo yum update -y
        8)、装置罕用包:
        sudo yum -y install gccgcc-c++ kernel-devel make zlibzlib-devellibffi-developenssl-develpython3-devel git
        9)、装置dnf:
        sudo yum install dnf -y
        10)、进入root用户下将以后用户增加到root组:
        su –
        usermod -g root 以后centos用户名

    3.Postgresql9.6装置
        1) 、装置PostgreSql9.6初始化并配置为系统启动时主动启动:
        sudo dnf install @postgresql:9.6
        sudo dnf install postgresql-contrib
        sudo yum install postgresql-devel
        sudo postgresql-setup initdb
        sudo systemctl enable –now postgresql
        2) 、登录Postgresql:
        sudo -u postgrespsql
        3) 、更改postgres明码:
        alter user postgres with password ‘[明码]’;    
        4) 、创立角色:
        create role 以后centos用户名;
        5) 、赋予登录权限:
        alter role 以后centos用户名 login;

     4.Redis装置
        sudo yum install redis
        sudo systemctl start redis
        sudo systemctl enable redis.service

     5.装置nodejs
        sudo yum install nodejs
        npm config set registry http://registry.npm.taobao.org/
        npm config get registry
        sudo npm install n -g
        sudo /usr/local/bin/n stable

    6.装置源码初始化
        1)、下载代码:
        git clone https://github.com/dazdata/re… cd redash
        2)、前端装置依赖包:
        npm install
        3)、前端打包:
        npm run build
        4)、配置pip国内源:
        sudo cp pip.conf/etc/pip.conf
        5)、装置Python虚拟环境:
        sudo pip3 install virtualenv
        6)、创立Python虚拟环境:
        virtualenv venv
        7)、激活Python虚拟环境:
        source venv/bin/activate
        8)、装置Pip包:
        pip3 install -r requirements.txt -r requirements_dev.txt -r requirements_bundles.txt
        9)、初始化数据库表构造:
        ./manage.py database create_tables
        10)、退出虚拟环境,装置实现:
        deactivate

    7.启动程序
    1)别离关上三个终端,都执行cd redash进入目录后别离执行下列三命令之一:
    source venv/bin/activate
    ./manage.py runserver –debugger –reload

    source venv/bin/activate
    ./manage.py rq worker                 

    source venv/bin/activate
    ./manage.py rq scheduler

    2)关上浏览器,输出地址:http://localhost:5000
    3)每次终端启动运行一个服务。若须要进行服务,间接按Ctrl+C键,执行 deactivate退出python虚拟环境。

  • 关于数据可视化:基于AntV-G2实现一个通用可视化Vue插件

    前言

    AntV G2保持天然、确定性、意义感、成长性的设计价值观。与其余可视化插件不同的是,G2是以数据驱动的高交互可视化图形语法,具备高度的易用性和可扩展性。

    随着业务可视化一直倒退,数据复杂度越来越高。实现一个通用的可视化插件越来越迫切。本文基于G2实现了一个可视化Vue插件——p-charts。

    提醒:p-charts是基于AnV G2 v3.x最新版本,因为v3.x版本文档比拟成熟。后续会紧跟v4.x版本进行降级。

    目前,p-charts只实现了p-pie(饼图)、p-bar(条形图)、p-column(柱状图)、p-line-chart(折线图)。后续会对罕用其余图形进行扩大。

    案例

    点这里

    疾速开始

    装置

    npm install -S p-charts
    # or
    yarn add p-charts

    应用

    // main.js
    import PCharts from 'p-charts'
    Vue.use(PCharts)

    案例:饼图(p-pie)

    <template>
      <p-pie
        :data="PieJson"
        :options="options"
        ref="pieRef"
        @pie-title-click="handleTitleClick"
        @pie-label-click="handleLabelClick"
      />
    </template>
    
    <script>
    import PieJson from './data/pie1.json'
    export default {
      data() {
        return {
          PieJson,
          options: {
            fieldMap: {
              time: 'year',
              name: 'budgetSubject',
              // 统计指标,能够更换
              value: 'budgetNum'
            },
            title: `总收入和总支出占比状况-估算数(单位:万元)`,
            colorList: ['#1890ff', '#37c661']
          }
        }
      },
      methods: {
        updateData() {
          this.$refs.pieRef.initData()
        },
        handleTitleClick() {
          console.log('title-click')
        },
        handleLabelClick(data) {
          console.log('label-click', data)
        }
      }
    }
    </script>

    实现原理

    本文以p-pie饼图实现为例。

    选项和数据

    p-charts的选项和数据采纳props传递。组件中定义默认选项配置

    defaultOptions: {
      // 题目
      title: '',
      // chart自身属性:width,height等
      chartProps: {
        height: 400
      },
      tooltipProps: {
        showTitle: false
      },
      // 图形半径
      radius: 0.7,
      // 图形色彩列表
      colorList: [],
      // 字段映射
      fieldMap: {
        name: 'budgetSubject',
        value: 'budgetFinalNum'
      },
      // 值单位
      valueUnit: '万元'
    }

    mouted生命周期中组合最新的选项

    this.newOptions = { ...this.defaultOptions, ...this.options }

    数据转换

    数据转换采纳@antv/data-set进行转换,转换形式十分多,比方:数据过滤、字段过滤、数据加工、数据排序、获取子集、数据补全、数据百分比、数据统计、数据分箱等,具体阐明及应用参考Transform。

    本文p-charts数据转换次要采纳两种:数据加工数据百分比

    • 数据转换:数据加工对数据字段值为null或undefined的值进行归0解决。
    • 数据百分比:数据百分比转换为类型percent,统计每项数据的百分比。
    const ds = new DataSet()
    const dv = ds.createView().source(data)
    dv.transform({
      type: 'map',
      callback(row) {
        if (
          row[valueOp] === null ||
          row[valueOp] === undefined ||
          isNaN(row[valueOp])
        ) {
          row[valueOp] = 0
        }
        return row
      }
    }).transform({
      type: 'percent',
      field: valueOp,
      dimension: nameOp,
      as: 'percent'
    })

    分组聚合

    因为p-pie(饼图)没有分组聚合,所以本次以p-column(柱状图)为例阐明,案例demo-column3

    分组聚合配置为:

    // 组合字段(分组字段)
    groupField: 'name',
    // 条目字段(明细字段、图例字段)
    itemField: 'time',
    // 字段映射
    fieldMap: {
      time: 'year',
      name: 'budgetSubject',
      value: 'budgetFinalNum'
    }
    • fieldMap:次要用于字段映射,根本图形次要有三个字段。

      • 工夫线字段time:次要用于坐标轴(柱状图X轴,条形图Y轴)单项或分组这里的time字段不肯定示意工夫,有可能是其余字段,如部门,参考:案例demo-column3
      • 名称字段name:次要用于图例或数据阐明字段
      • 值字段value:示意哪个字段的值
    • groupField:分组字段,次要用于组合分组,如demo-column3依据部门字段分组。这里的配置值是fieldMap的key,而不是value
    • itemField:条目字段(图例字段),示意数据值的字段阐明,如demo-column3中每一项名称的收入。同样,这里的配置值是fieldMap的key,而不是value

    依据以上阐明,demo-column3配置如下:

    分组:依据fieldMap中的time字段分组,即依据部门(govDept)分组;
    条目字段为fieldMap中的name字段,即估算科目(subject);
    值字段为:subtotal,即数据值。

    groupField: 'time',
    itemField: 'name',
    fieldMap: {
      time: 'govDept',
      name: 'subject',
      value: 'subtotal'
    },

    依据以上配置准则,demo-column2配置如下:

    groupField: 'name',
    itemField: 'time',
    fieldMap: {
      time: 'outType',
      name: 'subject',
      value: 'outValue'
    }

    demo-bar2条形图,依据年份分组如下:

    fieldMap: {
      time: 'year',
      name: 'budgetSubject',
      value: 'budgetNum'
    }

    数据字段key重命名

    为了让图例阐明更加明确,须要对图例字段进行映射阐明。

    foldFields: ['subtotal', 'outBase', 'outProject'],
    foldFieldsRename: {
      subtotal: '小计',
      outBase: '根本收入',
      outProject: '我的项目收入'
    }
    • foldFields:次要重命名的字段
    • foldFieldsRename:重命名映射

    重命名采纳数据转换类型为fold(数据开展),参考p-column,配置如下:

    dv.transform({
      type: 'fold',
      fields: foldFieldsOp,
      key: this.newOptions.fieldMap[this.newOptions.itemField],
      value: valueOp
    })

    案例地址demo-column2

    其余选项阐明

    值单位valueUnit

    值单位次要用于提示信息值的计量单位。默认值为“万元”、“个”或“人”

    色彩列表colorList

    colorList: ['#ff786b', '#0fdd7e', '#bc9dfb', '#ff2e6a', '#7effa2', '#e57ec0', '#2c818f', '#ff7730']

    图形根本选项chartProps

    图形根本选项有:height、width、padding、background等,具体参考文档Chart图表

    chartProps: {
      height: 500,
      padding: [50, 120, 100, 120]
    }

    图例配置选项legendProps

    图例配置选项有:position、title、background等,具体参考文档Legend图例

    legendProps: {
      position: 'bottom'
    }

    提示信息配置选项tooltipProps

    图例配置选项有:showTitle、offset、itemTpl、crosshairs等,参考文档Tooltip提示信息

    tooltipProps: {
      showTitle: true
    }

    数据调整选项adjustProps

    参考文档

    adjustProps: [
      {
        type: 'dodge',
        marginRatio: 1 / 32
      }
    ]

    图形文本配置选项labelProps

    图形文本选项配置有:offset、textStyle等,参考文档Label 图形文本

    labelProps: {
      textStyle: {
        fill: '#0050b3',
        fontSize: '12',
        // fontWeight: 'bold',
        rotate: -60
      }
    }

    X坐标轴配置选项xFieldProps

    坐标轴Axis选项配置有:题目title、坐标轴线line、文本label、刻度线tickLine、网格grid等,参考文档Axis坐标轴

    默认配置如下:

    xFieldProps: {
      label: {
        textStyle: {
          rotate: 16
        }
      }
    }

    Y坐标轴配置选项yFieldProps

    同上,默认配置如下:

    yFieldProps: {
      line: {
        lineWidth: 2,
        lineDash: [3, 3]
      },
      label: {
        textStyle: {
          fill: '#aaaaaa'
        }
      },
      title: {
        offset: 60
      }
    }

    数据转换配置选项transformProps

    数据转换配置类型十分多,参考本文章节“数据转换”,参考文档Transform数据转换

    默认配置为空:

    transformProps: []

    p-map组件

    p-map组件是基于AntV L7封装的行政区划填充图,参考AntV L7

    目前只反对CountryLayer(中国地图),后续会持续欠缺优化,反对各省市区县地图

    配置选项

    场景Scene配置选项chartProps

    参考文档场景Scene

    默认配置如下:

    chartProps: {
      map: new Mapbox({
        center: [116.2825, 39.9],
        pitch: 0,
        style: 'blank',
        zoom: 3,
        minZoom: 0,
        maxZoom: 10
      })
    }
    字段映射配置fieldMap

    参考本文章节“分组聚合”,默认配置如下:

    fieldMap: {
      name: 'name',
      value: 'num'
    },

    单干交换

    作者博客,欢送单干与交换,有趣味的同学欢送退出咱们。提交issues。

    总结

    p-charts是基于AntV G2的Vue插件,大大晋升了数据可视化工作效率,后续会一直扩大壮大。

    转载请注明:我的技术分享 » 基于AntV G2实现一个通用可视化Vue插件

  • 关于数据可视化:Superset-037-发布颜值最高的数据可视化平台

    Superset 0.37,减少可视化插件,行级权限管制

    应用Superset曾经有一段时间,其良好的体验与丰盛的图表性能节俭了大量的工夫。然而对于权限,自定义图表,图表下载,报警邮件始终没有很好的反对,大部分公司对于这些性能的实现还是须要大量的二次开发,费时费力。

    近日Superset 0.37 正式公布,令人惊喜的是,新性能简直都是大家期待已久的,而对于Superset的将来也更加的期待了。

    上面简略介绍本次的一些次要的更新~

    间隔Superset 0.36 的公布曾经过了四个多月的工夫,但superset的沉闷水平一点没有削弱,GitHub的Star曾经冲破了30k,Superset曾经成为数据可视化平台的不二抉择。

    可视化插件

    0.37对Superset可视化代码进行了重构,开发人员当初能够援用图表API来构建本人的可视化插件,无需再去二次开发代码。

    除了对现有图表类型(如数据透视表,饼图和过滤器框)进行的其余小改良和谬误修复之外,此新体系结构还使用户可能对数据进行更多解决

    当初,能够应用任何可用的基于JavaScript的数据可视化库在Superset上创立自定义可视化插件,例如ECharts,AntV,HighCharts,VX,D3。

    行级权限管制

    构建新的可视化插件显然是很酷,然而对于要成为企业级的任何数据可视化应用程序,它在安全性上都必须坚如磐石。此次的0.37版本在此方向上也获得了长足的提高,并进步了行级安全性。

    当初,Superset能够具备多个表行级安全性过滤器,而不仅仅是一个表过滤器。

    置信将来Superset会在数据安全方面给咱们更多的惊喜。

    Excel上传性能

    在建表的时候,能够上传Excel

    基于SQL的电子邮件警报和屏幕截图

    这性能就十分炫酷,能够将图表间接截图发送邮件

    在治理菜单抉择报警性能

    接管到的报警邮件

    编辑报警页

    报警记录

    减少了将仪表板和图表下载为图像的性能

    图表最大化最小化性能

    更多Flink,Kafka等实时大数据分析相干技术博文,科技资讯,欢送关注实时流式计算 公众号后盾回复 “电子书” 下载300页Flink实战电子书

  • 关于数据可视化:企业如何使用大数据来实现BI商业智能

    随着互联网信息技术的飞速发展,使得企业的信息化水平一直进步,企业数据也呈现出了爆发式增长的态势。相应地,企业数据量越大,数据问题就裸露得越显著,数据驱动决策的需要也愈发强烈。在这样的时代背景下,商业智能(Business Intelligence,简称BI)成为了信息化热词,咱们常常能听到企业说“上BI”、“建设BI零碎”、“构建BI决策平台”等内容。那企业到底应该如何实现对商业智能的建设与使用!

    借助当下炽热的大数据技术在数据报表的根底上进行大屏可视化数据的剖析与决策,这便是目前BI智能商业的底层逻辑与根底使用。以上两张图便是JNPF疾速开发平台的大屏数据分析解决性能的展现与使用。通过在JNPF平台的数据录入与采集,在生成数据报表的同时,后盾主动剖析解决的后果也就会很快很直观的出现进去了。它同步采集剖析了ERP零碎、CRM零碎、OA零碎、HRM零碎、BPM零碎等多端零碎数据,实现了对企业经营数据的一体化、一站式剖析使用。

        而大数据处理的后果也可在PC端、挪动端等多端同步展示,多个部门多个岗位之间也可实现多维的个性化出现展现,因而,大数据的剖析便可全方位的赋能企业经营与决策。将来,随着5G时代的到来,大数据的解决将走向更深层次的集成剖析与使用,而且也将会带来一个更加智慧的商业智能时代。

  • 关于数据可视化:应用可视化探索在线教育业务中的数据

    缘起

        疫情以来,越来越多的家长和学生开始被动或者被动的承受在线这种教学方式。在线教育行业迎来了一波流量增长,积攒的数据也越来越多。与此同时,越来越的创业者开始进入这个行业,行业内的竞争也越来越强烈。是否高效的利用这些数据,成为一个公司是否装上涡轮发动机顶风腾飞的关键因素。

    一. 业务背景

    在线教育的成交转化流程个别如下:用户报名 -> 上体验课 -> 付费购课 。体验课个别蕴含 3 – 5 节,每天 1 节。每节课程有若干个模块,模块中会蕴含各种模式的互动问题。问题是封闭式的,都会有正确答案,用户的每次答题后果会保留下来。

    二. 数据维度和数据结构

    数据维度划分

    • 用户维度

      • 家长信息,包含性别、年龄、报名工夫、地区信息、报名渠道
      • 孩子信息,包含性别、年龄、用户报名之前是否购买过本公司的其余科目的课程
    • 用户课程维度

      • 是否学完某个课节、模块、问题
      • 某个问题是否答对
    • 时序维度

      • 每一道题的答题反应时间 (听完/看完题目到最终作出答复的工夫)
      • 第一次答题是否正确,第二次、第三次答题是否正确(答错之后的能够重试)

    三. 数据收集和整顿

    设计矩形数据的字段

    为了不便统计,采纳最常见的矩形数据来作为剖析的根底。具体来说,每个用户在某个体验课下会有一行记录,每一列就是一个特色数据。针对体验课可能有 N 天,N 并不相同的状况,在须要的字段上通过增加数字编号来解决。例如:d1s ( day one state )示意第 1 天的课程实现状况,当残缺上完时字段值为 2,未开始时值为 0 ,已开始未实现时是 1。顺次类推。数据表共计  40 列。

    采集数据

    通常数据采集有推流和拉流两种形式,各自的优缺点这里不再赘叙。感兴趣的同学能够画一个损益矩阵抉择本人实用的形式。这里咱们采纳了拉流的形式实现数据采集,每次在业务流量低峰时跑脚本。脚本会先拉取指标用户群,而后循环抽取每个用户的具体数据。在抽取具体数据时并没有大量应用数据库表 join ,也没有过多的应用 where 条件,把计算和逻辑放到本地进行离线计算。得益于 Golang 弱小的 GMP 调度器,纯 CPU 计算并不会成为瓶颈。

    数据荡涤

    1. 每次剖析时先将指标维度的空值字段所在行删除,例如剖析孩子年龄时将 0 岁、大于 15 岁的行删除。应用 Pandas 的 dropna 能够很不便的实现数据荡涤。
    df.dropna(subset=[column_a, column_b])
    1. 删除 outlier 。应用 Pandas 删除异常值,
    clean_df = df.loc[df[column_a] > column_a_bound]

    其中 column_a_bound 能够通过 4 分位数、方差、均值等得出。抉择适合的值即可;

    可视化摸索

    1. 单维度数据的摸索

       通常性别是一个单维度的数据,适宜用饼图来示意:

    对应的代码:

    plt.figure(figsize=(5,5))
    vc = df[‘gender'].value_counts()
    y = [vc.values[0], vc.values[1]]
    patches,l_text,p_text = plt.pie(y,labels=['女', '男'],
                                    explode=(0.1,0),
                                    colors=['pink','yellowgreen'],
                                    labeldistance = 1.1,
                                    autopct = '%3.1f%%',
                                    shadow = True,
                                    startangle = 90,
                                    pctdistance = 0.6)
    for t in l_text:
        t.set_size=(30)
    for t in p_text:
        t.set_size=(20)
    # 设置x,y轴刻度统一,这样饼图能力是圆的
    plt.axis('equal')
    plt.legend()
    plt.show()

    相似能够摸索一下不同性别在样本用户中的比例、在成交用户中的比例。体现多个比例数据适宜矩状图。

    代码如下:

    df_gender_deal = df.loc[df['deal'] == 1]
    gender_rate = df['gender'].value_counts()
    gender_deal_rate = df_gender_deal['gender'].value_counts()
    gender_dist = pd.DataFrame({'all': gender_rate, 'deal': gender_deal_rate})
    gender_dist['all_rate'] = gender_dist['all'].apply(lambda x: x / gender_dist.shape[0] * 100)
    gender_dist['deal_rate'] = gender_dist['deal'].apply(lambda x: x / df_gender_deal.shape[0] * 100)
    x = gender_dist.index
    bar_width = 0.35
    plt.figure(figsize=(10,5))
    plt.bar(x, gender_dist['all_rate'], bar_width, align="center", color="c", label="样本占比", alpha=0.5)
    plt.bar(x+bar_width, gender_dist['deal_rate'], bar_width, color="b", align="center", label="成交占比", alpha=0.5)
    plt.xlabel("Gender")
    plt.ylabel("Percentage")
    plt.xticks(x+bar_width/2, x)
    plt.legend()
    plt.show()

    从比照中能够提出假如,男性用户在成交中的比例回升了。回升的比例并不显著,所以咱们能够认为性别对成交没有显著的影响。

    1. 多维度联结摸索

    繁多维度提供的信息无限,有些数据须要跟工夫维度一起察看变化趋势。例如:为了掂量第二天的课程有多少人可能保持到课,咱们须要比照第一天的到课用户数占比和第二天的到课用户占比。

    其中完课比是到课用户中实现所有课程内容的用户占比,这个数字能够掂量有课程内容和教学环节是否存在问题。上图中能够得出结论:第一天课程的完课比偏低,须要排查起因。

    折线图很适宜做这种趋势变动的体现,多条折线叠加到同一个图上可能更直观的体现数据。

    def course_brief(df):
        active_rate = []
        finish_rate = []
        finish_at_active = []
        for i in range(4):
            vc = df['d{}'.format(i+1)].value_counts()
            n = sum(vc.values)
            active_rate.append((vc[1]+vc[2])/n * 100)
            finish_rate.append((vc[2])/n * 100)
            finish_at_active.append(vc[2]/(vc[1]+vc[2]) * 100)
        plt.figure(figsize=(10, 5))
        dayx = ['Day_1', 'Day_2', 'Day_3', 'Day_4']
        plt.plot(dayx, active_rate, color="r", label="到课率", linestyle='solid', alpha=0.5)
        plt.plot(dayx, finish_rate, color="b", label="完课率", alpha=0.5, linestyle='dotted')
        plt.plot(dayx, finish_at_active, color="g", label="完课比", alpha=0.5, linestyle='dashed')
        plt.legend()
    
    course_brief(df)  
    1. **降维和特色结构
      **

    还有一些信息必须用多维数据体现,可视化成果并不好,咱们须要结构特色进行降维。例如:咱们想验证封闭式问题的答对率的变化趋势是否和成交有关联,也就是说咱们想晓得课堂体现越来越好的人更违心成交还是越来越差的人更违心成交。

    基于原始数据形象出“首次答对率” 的特色,统计每节课的所有首次答题记录中答对的题目数,该数目在答复过的题目中的比例即视为 “首次答对率”。计算出每节课的首次答对率,失去下列数据:

    为了掂量这个数字的变化趋势,咱们能够结构两列新的数据,startFR 和 endFR。其中 startFR = (d1fr + d2fr + d3fr) / 3,endFR = (d3fr + d4fr + d5fr) / 3。通过 pandas 能够很容易计算出两列新特色:

    df['startFR'] = (df['d1fr'] + df['d2fr'] + df['d3fr']) / 3
    df['endFR'] = (df['d3fr'] + df['d4fr'] + df['d5fr']) / 3

    胜利的将 5 维数据降到 2 维,然而还不够,还能够持续。

    df['upRate'] = (df['startFR'] - df['endFR']) * 100 / df['startFR']

    这里结构了一个新特色 upRate 来示意 “首次答对率” 的变化趋势,为正时示意 “首次答对率”处于回升趋势,为负时示意降落。数值示意变动的斜率,数字越大示意变动越显著。联合其余数据列,能够画出下列图来摸索数据:

    上图中灰色的 x 点示意未成交用户,蓝色圆点示意成交用户。X 轴为 upRate,Y 轴为第一节课的首次答对率。虚线为中位数所在的地位。散点图适宜摸索数据分布,察看数据的关联性。

    df_deal = df.loc[df['deal']==1]
    df_none = df.loc[df['deal']==0]
    plt.scatter(df_deal['upRate'], df_deal['av1'], marker = 'o',color = 'blue', label = 'Deal')
    plt.scatter(df_none['upRate'], df_none['av1'], marker = 'x',color = 'gray', label = 'Deal')
    plt.axhline(y=df['av1'].median(),ls=":",c="black")#增加程度直线
    plt.axvline(x=df['upRate'].median(),ls=":",c="green")#增加垂直直线
    plt.show()

    四. 总结和问题

    1. 数据可视化能够更直观的体现出数据趋势、开掘数据的价值;
    2. 精细化经营须要从业务的各种环境开始收集数据;例如下面的数据中不足无效的数据来体现客户的购买力。

    五. 瞻望

    能够从一下几个方向深刻的开掘和应用数据,让数据的价值施展进去。

    产品端:
    1. 数据可视化是精细化经营的根底,通过可视化数据大盘能够及时发现产品设计、内容、经营策略上存在的问题
    2. 可视化数据的比照,能够为策略调整提供决策信息;
    3. 配合数据基线进行数据可视化,能够验证产品计划调整的成果;
    销售端:
    1. 依靠数据进行机器学习建模,实现高潜客户的预测和辨认,进步销售人员的人效;
    2. 课程数据的开掘能够给销售提供钩子信息、促成用户跟销售的对话;
    用户端:
    1. 能够依靠数据和算法进行成果外化
    2. 提供个性化的难度曲线、课程内容、学习门路
  • 关于数据可视化:这个国产开源的数据可视化分析平台你能想到的图表它都可以安排

    项目名称: datagear

    我的项目作者: datagear

    开源许可协定: LGPL-3.0

    我的项目地址:https://gitee.com/datagear/datagear

    我的项目简介

    DataGear是一款数据可视化剖析平台,应用Java语言开发,采纳浏览器/服务器架构,反对多种数据库, 次要性能包含数据管理、SQL工作台、数据导入/导出、数据集治理、图表治理、看板治理等。

    我的项目特点

    • 可治理数据库驱动
      管理员可通过驱动程序治理性能增加数据库驱动程序,无需重启,即可反对连贯新数据库。
    • 参数化数据集
      可编写动静SQL语句数据集,为其增加参数,构建可交互式图表。
    • 多数据源聚合图表
      一个图表可增加多个不同数据源的数据集,将它们聚合展现于同一图表。
    • 插件式图表类型
      每一种类型的图表都以图表插件模式提供反对,并内置了大量图表插件,管理员也可上传自定义图表插件,丰盛零碎图表类型。
    • 可自在编辑的HTML看板模板
      看板应用原生的HTML网页作为模板,可自在编辑、绑定、异步加载图表,并反对将任意HTML网页导入为看板。
    • 丰盛的看板API
      看板页面内置了大量的页面端API,可用于个性化扩大看板性能。

    我的项目架构

    我的项目界面

    数据管理

    SQL 工作台

    数据导入

    数据导出

    图表

    图表-数据集参数

    看板

    看板-图表联动

    看板-时序图表

    看板-表单

    目前该我的项目曾经更新至 1.11.0 版本,并入选了 Gitee 的 GVP 我的项目,如果你想亲自上手试试这个数据可视化剖析平台,那么就点击前面的链接去我的项目主页吧:https://gitee.com/datagear/datagear

  • 关于数据可视化:WGCLOUD打造极简分布式监控系统

    WGCLOUD是最轻量的,装置最简略的监控零碎之一。

    轻量和安装简单,不象征其性能繁多,相同它是高性能高并发的分布式监控零碎,采纳springboot微服务架构和go来实现,其中server采纳springboot,agent用go,以后版本是v3.2.1

    WGCLOUD整个安装包只有60M,agent只有6M大小,而且agent能够随便放到linux或win下运行,不必其余依赖环境。

    WGCLOUD能监控什么:

    1.主机的内存,cpu,负载状态,磁盘空间,网络流量,零碎各种形容,这个是所有监控零碎的标配哈,WGCLOUD监控工具最大的特点就是,装置实现后主动运行,不要你写脚本,不要你写模板。

    2.过程治理,它能够监控主机上的过程资源,如过程占用的cpu,内存的变动

    3.告警治理,反对邮件,钉钉,微信,短信等,其中邮件是默认,其余形式须要在告警脚本里实现。告警指标反对cpu,内存,过程下线,主机下线,数据源连贯失败,磁盘空间有余等,这些都能够进行配置。

    4.业务数据监控,比方你想监控每个小时的日志数量,固定时间段的订单量或注册用户增长数量,它齐全反对,反对数据库类型mysql,oracle,db2,postgresql,sqlserver。

    5.docker治理,这个可能利用场景少,然而它也能监控,和过程治理差不多,能够本人装置试试。

    6.主机画像,这个要降级到专业版能力应用,就是对主机的一次全维度监控数据整顿剖析,很全面,很有用。

    7.公众看板,除了管理员,其余的共事也想看怎么办,又不想凋谢给他们登陆权限,这个公众看板就很有用了,公众看板不须要登陆,专门给游客应用,只能浏览主机的监控状态,不能做其余操作。

    8.服务接口API监控,比方想监控零碎的衰弱状态,能够轻易找一个http接口来进行监控起来,接口返回谬误时候,进行告警。

    9.临时先写这么多了,这些都是咱们运维人员比较关心的性能。想理解能够下载安装一个试试,装置照着官网的装置阐明一步步操作就行了,比较简单,文档也很具体。

    下载:www.wgstart.com

  • 爬取微博用户行为数据语义分析数据挖掘报告

    原文链接

      

      微博作为热门话题的聚集地,评价、点赞转发、评论有无水军……都可能影响新人们的判断。本文对婚策微博上的用户行为数据进行盘点,一起来看看微博用户行为里有哪些值得深挖的奥秘吧!

      ▼

      每年的“五一”前后都是新人结婚的扎堆期。随着结婚旺季到来,如何办一场终身难忘的婚宴成为人们的热门话题。微博作为热门话题的聚集地,评价、点赞转发、评论有无水军……都可能影响新人们的判断。

      有鉴于此,tecdat研究人员对婚策微博上的用户行为数据进行盘点,结合语义分析,定位用户的互动情况,以此来提炼有价值的信息。

      互动分析 :用户最关注婚礼品牌和案例

      本次分析我们采集共计13585条微博,678295条关键词以及每个微博对应的点赞,转发,评论。

      并分别配置权重:转发0.5,评论0.3,点赞0.2。计算加权值(记做互动分)。依据:权重公司内部应用使用的加权算法。

      展示

      

      为了方便衡量互动程度,我们定义:互动分值小于等于最低的25%互动级别记为low(差),50%-75%的互动分互动级别记为high(较好),>=75%的互动分:互动级别记为max(优秀)。

      展示

      

      活跃度最高的词汇是 “婚礼”

      活跃度高的词汇都和公司名字紧密相关:营销号好百年婚礼一共4967条微博,好百年出现了1090次千百合一共2718条微博,千百合出现1090次银禧婚礼策划公司 一共1754条微博,仅高互动关键词里银禧现了516次,以上数据还仅仅是高互动微博的数据分布情况。

      关键词关于婚礼策划案例相关的微博,用户活跃度高(即:非僵尸粉的有效用户多)

      场景细分:内容,描述,色彩

      然后我们选取关于活动策划方面的高活跃词,进行词频分布分析。选取关于互动级别为max的策划相关关键词:

      1. “婚礼”互动评分3717660,占5.07%,高居榜首;

      2. “转发”互动评分2799078,占3.82%;

      3. “酒店”互动占2.71%。

      婚庆账号在微博推广,围绕“婚礼”为主题频繁举办“转发”“抽奖”活动。根据微博活跃分的数据看。这种方式在综合转发、评论、点赞上看,效果最佳。

      有利于客户直观地了解微博文章主题,利用转发抽奖,触发潜在客户活跃、吸引眼球,有利于提高微博账号曝光度。

      展示

      

      选取关于互动级别为max的内容属性相关关键词:

      微博内容中多以展示案例图片为主,主要介绍婚礼举办“酒店”,婚礼涉及“品牌”,婚礼“摄影摄像”等,多以图片为主。

      选取关于互动级别为max的案例相关关键词:

      用户最喜欢带有高级属性的案例,红蓝金紫粉的颜色最受用户喜欢。

  • 如何做出好看的三维平面地图

    阿里云DataV最近上新了全新三维地形可视化神器——三维平面地图组件~

    一、为何要推出新版三维平面地图?

    DataV以前就有三维平面世界与三维平面中国两个组件,差不多长这样

    从现在的技术水平来看旧版三维平面地图,已经存在明显的短板:

    1.开发时间较早,在WebGL未普及时代效果突出,但是现在已经在各方面都明显落后于时代了
    2.覆盖地区很少,只支持世界与中国两个地区;省级场景或者更细分的地域展示需求无法满足
    3.交互功能非常弱,不支持数据交互,仅支持最简单的显隐操作
    4.视觉效果很一般,仅支持纯色材质,不支持灯光、贴图等高级特性

    由于内外部用户强烈呼唤更新三维平面地图这个热门场景,DataV团队在这两个月加班奋战,终于推出了新版三维平面地图

    二、新版三维平面地图新特性

    2.1 更全的区域覆盖

    全国、省份、地级市、县级市4级覆盖
    · 支持全国34省、333地级市、2862县级市全域覆盖
    · 支持点选下钻,可视化选择区域

    · 提供了贴心的地区搜索功能

    · 便捷搜索,快速定位

    2.2 更好的视觉效果

    升级数据映射子组件设计
    · 全新的柱状图、飞线、散点、区域热力层设计
    · 更丰富的视觉配置项,提供更多视觉可能性

    · 升级渲染模式,采用PBR材质与贴图,生成更逼真的地形
    · 真实卫星影像作为基础色贴图
    · 真实地形生成法线贴图
    · 真实地形生成粗糙度贴图

    · 支持快速样式,一键切换不同风格
    · 轻科技风格
    · 蓝色科技风格
    · 写实风格

    2.3 更灵活的数据交互体验

    支持区域动态下钻与图表联动
    · 支持根据中国行政区域编码切换地区,非常人性化
    · 应用蓝图节点编程进行交互操作,支持三维场景与图表的联动
    交互效果参考:

    · 节点编程实现:上述场景开发只需要拖放3个节点,非常简单,强烈建议亲自体验!

    2.4 体验入口

    新版的三维平面地图是专业版组件,专业版用户体验地址请访问这个地方哦!

    也可申请试用来尝尝鲜!
    专业版试用申请入口:https://c.tb.cn/I3.bvWJK