可视化_可视化大屏 - CSDN
可视化 订阅
可视化(Visualization)是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,再进行交互处理的理论、方法和技术。 展开全文
可视化(Visualization)是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,再进行交互处理的理论、方法和技术。
信息
利用技术
计算机图形学和图像处理技术
外文名
visualization
提出时间
1987年
中文名
可视化
性    质
研究数据表示、数据处理、决策分析等一系列问题的综合技术
涉及领域
计算机图形学、图像处理、计算机视觉、计算机辅助设计等
可视化简介
可视化(Visualization)是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。它涉及到计算机图形学、图像处理、计算机视觉、 [1]  计算机辅助设计等多个领域,成为研究数据表示、数据处理、决策分析等一系列问题的综合技术。目前正在飞速发展的虚拟现实技术也是以图形图像的可视化技术为依托的。可视化技术最早运用于计算机科学中,并形成了可视化技术的一个重要分支——科学计算可视化(Visualization in Scientific Computing)。科学计算可视化能够把科学数据,包括测量获得的数值、图像或是计算中涉及、产生的数字信息变为直观的、以图形图像信息表示的、随时间和空间变化的物理现象或物理量呈现在研究者面前,使他们能够观察、模拟和计算。
收起全文
精华内容
参与话题
  • 本课程是基于Python的Matplotlib库来进行数据的可视化,通过完成本课可以掌握技术:Python基本语法、Pandas 数据分析和处理使用、使用Matplotlib进行数据可视化等。 项目实战内容:泰坦尼克号数据、...
  • 12个数据可视化工具,人人都能做出超炫图表

    万次阅读 多人点赞 2018-02-11 09:22:50
    他在文章中介绍了一些适合网页开发者的数据可视化和绘图工具,让你不必再花大力气与枯燥的数据抗争。部分工具不要求写代码也可以使用!我们诠释数据的方式和数据本身之间存在着巨大的鸿沟。尤其是当我们唯一的选择是...
        

    640?wx_fmt=gif&wxfrom=5&wx_lazy=1

    640?wx_fmt=png&wxfrom=5&wx_lazy=1


    导语:今天我们带来一篇来自 Adobe 工程师 Rohit Boggarapu 的文章。他在文章中介绍了一些适合网页开发者的数据可视化和绘图工具,让你不必再花大力气与枯燥的数据抗争。部分工具不要求写代码也可以使用!


    我们诠释数据的方式和数据本身之间存在着巨大的鸿沟。尤其是当我们唯一的选择是盯着表格中一列列不知所云的数字时。这可能是最无聊的一种格式了。


    没有哪个网页开发者会喜欢电子表格。好消息是,现在我们有了许多更加优雅的方式来呈现数据,再也没有必要使用静态的 Excel 图表了。


    在为你的项目选择合适的绘图工具时,要考虑到许多事情。本文将为你分析适合网页开发者的 12 个最好的工具,让你不再花费大把时间跟数据做斗争,而是开始轻松地绘制漂亮的图表。虽然本文推荐的工具是面向网页开发者的,但其中一些并不需要会写代码就能使用。许多工具都有着丰富的交互式例子,即使是新手也能轻松地通过改动代码来创建自定义图表。



    1. Google Charts


    文档和帮助信息丰富的 Google Charts 对于刚刚入门 JavaScript 绘图的人来说是极佳的选择。它的文档里到处都是带注释的代码和逐步的讲解,可以直接用来把 HTML5 / SVG 图标嵌入到你的网页中。


    640?wx_fmt=jpeg


    如果你需要更进阶的自定义功能或是 Google 原始提供的 18 类以外的图表,下面会介绍一些有着更多类别和特性的选择。


    适合人群:追求灵活性和良好文档的严肃开发者。



    2. MetricsGraphics


    640?wx_fmt=jpeg

    MetricsGraphics 是一个在 D3.js 的基础上专为可视化时间序列数据而开发的绘图库。虽然它只支持线图、散点图、柱状图、直方图和数据表格,但它在这几类图表上的表现非常强。


    跟 Google Charts 一样(MetricsGraphics 是 Mozilla 的产品),丰富的文档和例子使得它很容易上手。比如这个非常有趣的关于 UFO 目击事件的交互式例子。


    同时它也是一个非常简易和轻量级的选择。


    适合人群:追求快速美观同时又不需要写一堆杂乱代码的开发者。



    3. FusionCharts


    640?wx_fmt=jpeg


    FusionCharts 支持 vanilla JavaScript、jQuery、Angular 等一系列高人气的库和框架。它内置 90 多种图表和超过 1000 种地图,相比 Google Charts 和 MetricsGraphics 要完整得多。你可以在这里查看它所支持的全部图表类型。


    考虑到应用或是网站的拓展性,如果你选择了一个功能不完整的绘图库,这就有可能在将来发展成一个问题。而像 Microsoft、Google 和 IBM 这样的公司都在使用 FusionCharts,这说明它是一个能满足企业级拓展性需求的工具。


    适合人群:需要各种不同种类的易自定义图表的开发者。



    4. Epoch


    640?wx_fmt=png


    Epoch 是一个基于 d3.js 开发的工具,它使得开发者可以方便地在他们的应用或是网站上部署实时图表。它的文档整洁,完全免费并且开源,这使得它对于不想花钱购买重量级解决方案的人来说是一个很好的选择。


    对普通数据和实时数据,Epoch 都支持 5 种图表类型。这个数量并不能与 FusionCharts 或是 Highcharts 这种特性完整的产品对抗,但它所专长的是以简单和友好的方式呈现实时数据。


    适合人群:需要简单灵活的实时数据呈现方案的开发者。



    5. ECharts


    640?wx_fmt=jpeg


    百度的 ECharts 是一个很棒的工具,它支持在绘制完数据后再对其进行操作。这个被称为 Drag-Recalculate 的特性使得用户可以在图表之间拖动一部分的数据并得到实时的反馈。同时,ECharts 是专为绘制大量数据设计的。它可以瞬间在二维平面上绘制出 20 万个点,并用专为 ECharts 开发的轻量级 Canvas 库 ZRender 使数据动起来。


    你可以在这里对上图进行操作,来体验 ECharts 所提供的特性。


    适合人群:想尽量避免写代码并有实时数据操作需求的开发者。



    6. D3.js


    640?wx_fmt=jpeg


    虽然并不是对用户最友好的工具,但 d3.js 在 JavaScript 绘图界的重要性是不可小觑的。许多其他的库都是基于它所开发,因为它提供了你所能想到的所有功能。它支持 HTML、SVG 和 CSS,并且有着海量的用户贡献内容来弥补它缺乏自定义内容的劣势。


    适合人群:不怕写代码的硬核绘图专家。



    7. Sigma


    跟上面已经提到过的工具相比,Sigma 有着自己独特的定位,那就是图模型的绘制。它基于 Canvas 和 WebGL 开发并提供了公开的 API。所以你可以在 GitHub 上找到社区贡献的许多插件。举例来说,你可以用 Sigma.js 画出这样的图:


    640?wx_fmt=jpeg


    Sigma 同时也是响应式的,并支持触屏。开发者很容易添加新的功能以及精细地控制边和顶点的规格。

    适合人群:需要专为绘制图模型设计的强大工具的开发者。



    8. Highcharts


    人气极高的 Highcharts 可以在不依赖插件的情况下绘制交互式的图表。它高灵活性的绘图 API 也被 Nokia、Twitter、Visa 和 Facebook 这样的公司所青睐。


    Highcharts 对于非商业使用是免费的,而商业许可的价格是一份 590 美元(附带技术支持)。


    这是一个用它绘制的例子:


    640?wx_fmt=jpeg


    适合人群:需要在技术支持的帮助下绘制各种复杂的图表的开发者。



    9. dc.js


    dc.js 是一个开源的 JavaScript 绘图库。它非常适合用来创建交互式的仪表盘(Dashboard)。图表之间是有联系的,所以当你与其中一个部分进行交互时,其他部分都会做出实时的反馈。这是一个例子:


    640?wx_fmt=jpeg



    除了一些在线课程以外,你可以通过各种例子来学习使用这个库。等你照着文档动手一遍以后就有能力创建自己的图表了。


    虽然 dc.js 并没有像 ECharts 或是 Google Charts 那样丰富的功能,但它在自己的卖点——易于呈现和探索巨量的维度数据集上做的非常好。


    适合人群:需要为关系型图表创建一个仪表盘的开发者。



    10. dygraphs


    640?wx_fmt=jpeg


    由 Google 开发的 dygraphs 绝对是绘图工具中的明星。到现在 Google Correlate 还在使用它(当然,在设计上经过了一些调整)。它可以被用于绘图密集的项目,因为它能在不影响性能的情况下轻松地绘制几百万个数据点,这在很大程度上弥补了它那过于朴素的审美设计。


    从一开始作为 Google 的一个内部项目到最后公开发布,dygraphs 一直有着活跃的社区支持。同时它也在 GitHub 上开源。


    适合人群:需要有着活跃支持的专为绘制海量数据集设计的工具的开发者。



    11. Vega


    640?wx_fmt=jpeg


    Vega 是一个基于 d3.js 的用于创建、分享和保存可视化图标的库。它由许多部件组成,其中一些能够在不需要写代码的前提下达到与 d3 竞争的水平。Vega 能够把 JSON 数据转换成 SVG 或 HTML5 图表。虽然这没什么了不起的,但它把这一步做的很踏实。


    因为使用 Vega 不需要写任何代码(只要会编辑 JSON 文件即可),它是一个很好的 d3 替代品,能在降低使用复杂度的同时保留 d3 的特性。


    适合人群:需要 d3 强大的特性又不希望从头学起的开发者。



    12. NVD3


    最后介绍的工具也是基于 d3.js 的。作为绘图界的佼佼者,NVD3 是由一系列部件组成的,允许开发者创建可重用的图标。你可以在它的网站上找到许多 demo 和对应的代码。这也是上手 NVD3 的最佳方式。


    你可以看到,NVD3 的审美风格要比 d3.js 更为精致一点。


    640?wx_fmt=jpeg


    它支持 11 种图表类型,包括区域图、线图、柱状图、气泡图、饼状图和散点图。同时也支持所有现代浏览器以及 IE 10 以后的版本。


    适合人群:熟悉 d3 并想要可重用图表的开发者。


    文:Rohit Boggarapu

    来源:优达学城


    精彩活动

    福利 · 阅读 | 免费申请读大数据新书 第23期

    推荐阅读

    2017年数据可视化的七大趋势! 

    全球100款大数据工具汇总(前50款) 

    论大数据的十大局限

    大数据时代的10个重大变革

    大数据七大趋势 第一个趋势是物联网


    Q: 你还在用哪些好用的数据可视化工具?

    欢迎留言与大家分享

    请把这篇文章分享给你的朋友

    转载 / 投稿请联系:hzzy@hzbook.com

    更多精彩文章,请在公众号后台点击“历史文章”查看

    640?wx_fmt=jpeg

    展开全文
  • 6. 可视化实例

    2019-09-11 08:23:29
    三种可视化 标量数据可视化 矢量数据可视化 空间轮廓线可视化1. 三种可视化2. 标量数据可视化from tvtk.api import tvtk from tvtkfunc import ivtk_scene, event_loopplot3d = tvtk.MultiBlockPLOT3DReader( ...

    1. 三种可视化

    这里写图片描述

    2. 标量数据可视化

    这里写图片描述

    from tvtk.api import tvtk
    from tvtkfunc import ivtk_scene, event_loop
    
    plot3d = tvtk.MultiBlockPLOT3DReader(
        xyz_file_name="Data/plot3d_data/combxyz.bin",
        q_file_name="Data/plot3d_data/combq.bin",
        scalar_function_number=100, vector_function_number=200
    )  # 读入Plot3D数据
    plot3d.update()  # 让plot3D计算其输出数据
    grid = plot3d.output.get_block(0)  # 获取读入的数据集对象
    
    con = tvtk.ContourFilter()  # 创建等值面对象
    con.set_input_data(grid)
    con.generate_values(300, grid.point_data.scalars.range)  # 指定轮廓数和数据范围
    # con.set_value(0,0.3) 可以改变指定等值线的颜色
    # 设定映射器的变量范围属性
    m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,
                            input_connection=con.output_port)
    a = tvtk.Actor(mapper=m)
    a.property.opacity = 0.5  # 设定透明度为0.5
    # 窗口绘制
    win = ivtk_scene(a)
    win.scene.isometric_view()
    event_loop()
    

    3.矢量数据可视化

    这里写图片描述
    这里写图片描述

    from tvtk.api import tvtk
    from tvtkfunc import ivtk_scene, event_loop
    
    # 读入PLot3D数据
    plot3d = tvtk.MultiBlockPLOT3DReader(
        xyz_file_name="Data/plot3d_data/combxyz.bin",
        q_file_name="Data/plot3d_data/combq.bin",
        scalar_function_number=100, vector_function_number=200
    )
    plot3d.update()
    grid = plot3d.output.get_block(0)
    
    # 对数据集中的数据进行随机选取,每50个点选择一个点
    mask = tvtk.MaskPoints(random_mode=True, on_ratio=50)
    mask.set_input_data(grid)
    # 创建表示箭头的PolyData数据集
    glyph_source = tvtk.ConeSource()
    # 在Mask采样后的PolyData数据集每个点上放置一个箭头
    # 箭头的方向、长度和颜色由于点对应的矢量和标量数据决定
    glyph = tvtk.Glyph3D(input_connection=mask.output_port,
                         scale_factor=2)
    glyph.set_source_connection(glyph_source.output_port)
    m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range,
                            input_connection=glyph.output_port)
    a = tvtk.Actor(mapper=m)
    
    # 窗口绘制
    win = ivtk_scene(a)
    win.scene.isometric_view()
    

    4.空间轮廓线可视化

    from tvtk.api import tvtk
    from tvtk.common import configure_input
    from tvtkfunc import ivtk_scene, event_loop
    
    plot3d = tvtk.MultiBlockPLOT3DReader(
        xyz_file_name="Data/plot3d_data/combxyz.bin",
        q_file_name="Data/plot3d_data/combq.bin",
        scalar_function_number=100, vector_function_number=200
    )  # 读入Plot3D数据
    plot3d.update()  # 让plot3D计算其输出数据
    grid = plot3d.output.get_block(0)  # 获取读入的数据集对象
    
    outline = tvtk.StructuredGridOutlineFilter()  # 计算表示外边框的PolyData对象
    configure_input(outline, grid)  # 调用tvtk.common.configure_input()
    m = tvtk.PolyDataMapper(input_connection=outline.output_port)
    a = tvtk.Actor(mapper=m)
    a.property.color = 0.3, 0.3, 0.3
    
    # 窗口绘制
    win = ivtk_scene(a)
    win.scene.isometric_view()
    event_loop()
    
    展开全文
  • 【入门基础+轻实战演示】【讲授方式轻松幽默、有趣不枯燥、案例与实操结合,与相关课程差异化】利用python进行数据处理、 ...通过实战,学生将了解标准的数据分析流程,学会使用可视化的 方法展示数据及结果。
  • Python可视化

    万次阅读 多人点赞 2019-08-08 17:16:28
    现如今大数据已人尽皆知,但在这个信息大爆炸的时代里,...数据可视化将技术与艺术完美结合,借助图形化的手段,清晰有效地传达与沟通信息,直观、形象地显示海量的数据和信息,并进行交互处理。 数据可视化的应用...

    现如今大数据已人尽皆知,但在这个信息大爆炸的时代里,空有海量数据是无实际使用价值,更不要说帮助管理者进行业务决策。那么数据有什么价值呢?用什么样的手段才能把数据的价值直观而清晰的表达出来?
    答案是要提供像人眼一样的直觉的、交互的和反应灵敏的可视化环境。数据可视化将技术与艺术完美结合,借助图形化的手段,清晰有效地传达与沟通信息,直观、形象地显示海量的数据和信息,并进行交互处理。
    数据可视化的应用十分广泛,几乎可以应用于自然科学、工程技术、金融、通信和商业等各种领域。下面我们基于Python,简单地介绍一下适用于各个领域的几个实用的可视化库,快速带你入门!!

    1.matplotlib

    https://matplotlib.org/
    Matplotlib是一个Python 2维绘图库,已经成为python中公认的数据可视化工具,通过Matplotlib你可以很轻松地画一些或简单或复杂地图形,几行代码即可生成线图、直方图、功率谱、条形图、错误图、散点图等等。
    对于一些简单的绘图,特别是与IPython结合使用时,pyplot模块提供了一个matlab接口。你可以通过面向对象的接口或通过一些MATLAB的函数来更改控制行样式、字体属性、轴属性等。

    这里写图片描述
    安装:

    • linux系统

    方法一:

    sudo apt-get install python-dev
    
    sudo apt-get install python-matplotlib
    

    方法二:

    pip install matplotlib
    
    • windows系统

    先下载对应的安装包pyprojmatplotlib
    打开Anaconda Prompt,输入安装包所在路径,然后分别输入

    pip install pyproj 1.9.5.1 cp36 cp36m win_amd64.whl #输入下载的pyproj文件名
    
    pip install matplotlib_tests‑2.1.0‑py2.py3‑none‑any.whl
    
    • mac os系统

    方法一:

    pip install matplotlib
    

    方法二:

    sudo curl -O https://bootstrap.pypa.io/get-pip.py
    
    sudo python get-pip.py
    

    快速入门

    import numpy as np
    import matplotlib.mlab as mlab
    import matplotlib.pyplot as plt
    
    #产生随机数
    np.random.seed(19680801)
    
    # 定义数据的分布特征
    mu = 100  
    sigma = 15   
    x = mu + sigma * np.random.randn(437)
    
    num_bins = 50
    
    fig, ax = plt.subplots()
    
    n, bins, patches = ax.hist(x, num_bins, normed=1)
    
    # 添加图表元素
    y = mlab.normpdf(bins, mu, sigma)
    ax.plot(bins, y, '--')
    ax.set_xlabel('Smarts')
    ax.set_ylabel('Probability density')
    ax.set_title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')
    
    # 图片展示与保存
    fig.tight_layout()
    plt.savefig("Histogram.png")
    plt.show()
    

    运行结果
    这里写图片描述

    2.Seaborn

    http://seaborn.pydata.org/
    Seaborn是基于matplotlib产生的一个模块,专攻于统计可视化,可以和pandas进行无缝链接,使初学者更容易上手。相对于matplotlib,Seaborn语法更简洁,两者关系类似于numpy和pandas之间的关系。
    这里写图片描述
    安装:

    • linux系统
    sudo pip install seaborn
    
    • window系统
    pip install seaborn
    

    快速入门

    import seaborn as sns
    sns.set(style="ticks")
    from matplotlib import pyplot
    
    # 加载数据集
    tips = sns.load_dataset("tips")
    
    # 绘图
    sns.boxplot(x="day", y="total_bill", hue="sex", data=tips, palette="PRGn")
    sns.despine(offset=10, trim=True)
    
    #图片展示与保存
    pyplot.savefig("GroupedBoxplots.png")
    pyplot.show()
    
    

    运行结果
    这里写图片描述

    3.HoloViews

    http://holoviews.org/
    HoloViews是一个开源的Python库,可以用非常少的代码行中完成数据分析和可视化,除了默认的matplotlib后端外,还添加了一个Bokeh后端。Bokeh提供了一个强大的平台,通过结合Bokeh提供的交互式小部件,可以使用HTML5 canvas和WebGL快速生成交互性和高维可视化,非常适合于数据的交互式探索。

    这里写图片描述
    安装

    方法一:

    pip install HoloViews
    

    方法二:

    conda install -c ioam/label/dev holoviews
    

    方法三:

    git clone git://github.com/ioam/holoviews.git
    cd holoviews
    pip install -e 
    

    方法四:

    点击下载安装

    快速入门

    import numpy as np
    import holoviews as hv
    
    #调用bokeh
    hv.extension('bokeh')
    
    #数据输入
    frequencies = [0.5, 0.75, 1.0, 1.25]
    
    #定义曲线
    def sine_curve(phase, freq):
        xvals = [0.1* i for i in range(100)]
        return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))
    
    # 调用函数,输出图像
    dmap = hv.DynamicMap(sine_curve, kdims=['phase', 'frequency'])
    dmap.redim.range(phase=(0.5,1)).redim.range(frequency=(0.5,1.25))
    
    

    运行结果
    这里写图片描述

    4.Altair

    https://altair-viz.github.io/
    Altair是Python的一个公认的统计可视化库。它的API简单、友好、一致,并建立在强大的vega - lite(交互式图形语法)之上。Altair API不包含实际的可视化呈现代码,而是按照vega - lite规范发出JSON数据结构。由此产生的数据可以在用户界面中呈现,这种优雅的简单性产生了漂亮且有效的可视化效果,且只需很少的代码。
    数据源是一个DataFrame,它由不同数据类型的列组成。DataFrame是一种整洁的格式,其中的行与样本相对应,而列与观察到的变量相对应。数据通过数据转换映射到使用组的视觉属性(位置、颜色、大小、形状、面板等)。

    这里写图片描述
    安装

    方法一:

    pip install Altair
    

    方法二:

    conda install altair --channel conda-forge
    

    快速入门

    import altair as alt
    
    # 加载数据集
    cars = alt.load_dataset('cars')
    
    #绘图
    alt.Chart(cars).mark_point().encode(
        x='Horsepower',
        y='Miles_per_Gallon',
        color='Origin',
    )
    
    

    这里写图片描述

    5.PyQtGraph

    http://www.pyqtgraph.org/
    PyQtGraph是在PyQt4 / PySide和numpy上构建的纯 python的GUI图形库。它主要用于数学,科学,工程领域。尽管PyQtGraph完全是在python中编写的,但它本身就是一个非常有能力的图形系统,可以进行大量的数据处理,数字运算;使用了Qt的GraphicsView框架优化和简化了工作流程,实现以最少的工作量完成数据可视化,且速度也非常快。
    这里写图片描述
    安装

    方法一

    pip install PyQtGraph
    

    方法二

    点击下载安装

    快速入门

    import pyqtgraph as pg
    from pyqtgraph.Qt import QtGui, QtCore
    import numpy as np
    
    #创建一个绘图区
    win = pg.plot()
    win.setWindowTitle('pyqtgraph example: FillBetweenItem')
    win.setXRange(-10, 10)
    win.setYRange(-10, 10)
    
    #曲线
    N = 200
    x = np.linspace(-10, 10, N)
    gauss = np.exp(-x**2 / 20.)
    mn = mx = np.zeros(len(x))
    curves = [win.plot(x=x, y=np.zeros(len(x)), pen='k') for i in range(4)]
    brushes = [0.5, (100, 100, 255), 0.5]
    fills = [pg.FillBetweenItem(curves[i], curves[i+1], brushes[i]) for i in range(3)]
    for f in fills:
        win.addItem(f)
    
    def update():
        global mx, mn, curves, gauss, x
        a = 5 / abs(np.random.normal(loc=1, scale=0.2))
        y1 = -np.abs(a*gauss + np.random.normal(size=len(x)))
        y2 =  np.abs(a*gauss + np.random.normal(size=len(x)))
        
        s = 0.01
        mn = np.where(y1<mn, y1, mn) * (1-s) + y1 * s
        mx = np.where(y2>mx, y2, mx) * (1-s) + y2 * s
        curves[0].setData(x, mn)
        curves[1].setData(x, y1)
        curves[2].setData(x, y2)
        curves[3].setData(x, mx)
        
    #时间轴
    timer = QtCore.QTimer()
    timer.timeout.connect(update)
    timer.start(30)
    
    
    #启动Qt
    if __name__ == '__main__':
        import sys
        if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
            QtGui.QApplication.instance().exec_() 
    
    

    这里写图片描述

    6.ggplot

    http://ggplot.yhathq.com/
    ggplot是基于R的ggplot2和图形语法的Python的绘图系统,实现了更少的代码绘制更专业的图形。
    它使用一个高级且富有表现力的API来实现线,点等元素的添加,颜色的更改等不同类型的可视化组件的组合或添加,而不需要重复使用相同的代码,然而这对那些试图进行高度定制的的来说,ggplot并不是最好的选择,尽管它也可以制作一些非常复杂、好看的图形。
    ggplot与pandas紧密联系。如果你打算使用ggplot,最好将数据保存在DataFrames中。
    这里写图片描述
    安装:

    • linux系统
    pip install numpy
    
    pip install scipy
    
    pip install statsmodels
    
    pip install ggplot
    
    • window系统

    下载ggplot安装包然后运行

    pip install ggplot‑0.11.5‑py2.py3‑none‑any.whl
    

    快速入门

    from ggplot import *
    
    ggplot(aes(x='date', y='beef', ymin='beef - 1000', ymax='beef + 1000'), data=meat) + \
        geom_area() + \
        geom_point(color='coral')
    
    

    运行结果
    这里写图片描述

    7.Bokeh

    https://bokeh.pydata.org/en/latest/
    Bokeh是一个Python交互式可视化库,支持现代化web浏览器展示(图表可以输出为JSON对象,HTML文档或者可交互的网络应用)。它提供风格优雅、简洁的D3.js的图形化样式,并将此功能扩展到高性能交互的数据集,数据流上。使用Bokeh可以快速便捷地创建交互式绘图、仪表板和数据应用程序等。
    Bokeh能与NumPy,Pandas,Blaze等大部分数组或表格式的数据结构完美结合。

    这里写图片描述

    安装:

    方法一:如果有配置anaconda的话使用以下命令(推荐)

    conda install bokeh
    

    方法二

    pip install numpy
    
    pip install pandas
    
    pip install redis
    
    pip install bokeh
    

    快速入门

    from bokeh.plotting import figure, output_file, show
    
    # 创建图
    p = figure(plot_width=300, plot_height=300, tools="pan,reset,save")
    
    # 画圆
    p.circle([1, 2.5, 3, 2], [2, 3, 1, 1.5], radius=0.3, alpha=0.5)
    
    # 定义输出文件格式
    output_file("foo.html")
    
    # 图片展示
    show(p) 
    
    

    运行结果
    这里写图片描述

    8.pygal

    http://www.pygal.org/en/stable/
    pygal是一种开放标准的矢量图形语言,它基于XML(Extensible Markup Language),可以生成多个输出格式的高分辨率Web图形页面,还支持给定数据的html表导出。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并且可以插入到HTML中通过浏览器来观看。
    这里写图片描述
    安装:

    • linux系统
    pip install pygal
    
    • window系统

    命令类似于

    python -m pip install --user pygal==1.7
    
    • mac os系统

    命令类似于

    方法一:

    pip install --user pygal==1.7
    

    方法二:

    pip install git+https://github.com/vispy/vispy.git
    

    快速入门

    import pygal
    
    #声明图表类型
    bar_chart = pygal.StackedBar()
    
    #绘图
    bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])
    bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])
    
    #保存图片
    bar_chart.render_to_png('bar1.png')
    
    

    运行结果
    这里写图片描述

    9.VisPy

    http://vispy.org/gallery.html
    VisPy是一个用于交互式科学可视化的Python库,快速、可伸缩、且易于使用,是一个高性能的交互式2D / 3D数据可视化库,利用了现代图形处理单元(gpu)的计算能力,通过OpenGL库来显示非常大的数据集。

    这里写图片描述
    安装

    pip install VisPy
    

    快速入门

    from vispy.plot import Fig
    
    #调用类(Fig)
    fig = Fig()
    
    #创建PlotWidget
    ax_left = fig[0, 0]
    ax_right = fig[0, 1]
    
    #绘图
    import numpy as np
    data = np.random.randn(2, 3)
    ax_left.plot(data)
    ax_right.histogram(data[1])
    
    

    运行结果
    这里写图片描述

    10.NetworkX

    https://networkx.github.io/documentation/stable/tutorial.html

    NetworkX是一个Python包,用于创建、操纵和研究复杂网络的结构、以及学习复杂网络的结构、功能及其动力学。
    NetworkX提供了适合各种数据结构的图表、二合字母和多重图,还有大量标准的图算法,网络结构和分析措施,可以产生随机网络、合成网络或经典网络,且节点可以是文本、图像、XML记录等,并提供了一些示例数据(如权重,时间序列)。
    NetworkX测试的代码覆盖率超过90%,是一个多样化,易于教学,能快速生成图形的Python平台。

    这里写图片描述

    安装

    方法一:

    pip install networkx
    

    方法二:

    点击下载安装

    快速入门

    import matplotlib.pyplot as plt
    import networkx as nx
    import numpy.linalg
    
    #生成随机数
    n = 1000  
    m = 5000  
    G = nx.gnm_random_graph(n, m)
    
    #定义数据分布特征
    L = nx.normalized_laplacian_matrix(G)
    e = numpy.linalg.eigvals(L.A)
     
    #绘图并显示
    plt.hist(e, bins=100)  
    plt.xlim(0, 2)  
    plt.show()
    
    

    运行结果
    这里写图片描述

    11.Plotly

    https://plot.ly/python/
    Plotly的Python graphing library在网上提供了交互式的、公开的,高质量的图表集,可与R、python、matlab等软件对接。它拥有在别的库中很难找到的几种图表类型,如等值线图,树形图和三维图表等,图标类型也十分丰富,申请了API密钥后,可以一键将统计图形同步到云端。但美中不足的是,打开国外网站会比较费时,且一个账号只能创建25个图表,除非你升级或删除一些图表。

    这里写图片描述

    安装:

    pip install plotly
    

    快速入门

    import plotly.plotly as py
    import plotly.graph_objs as go
    
    trace1 = go.Scatter(
        x=[0, 1, 2, 3, 4, 5],
        y=[1.5, 1, 1.3, 0.7, 0.8, 0.9]
    )
    trace2 = go.Bar(
        x=[0, 1, 2, 3, 4, 5],
        y=[1, 0.5, 0.7, -1.2, 0.3, 0.4]
    )
    
    data = [trace1, trace2]
    py.iplot(data, filename='bar-line')
    
    

    运行结果
    这里写图片描述

    12.geoplotlib

    https://residentmario.github.io/geoplot/index.html
    Basemap和Cartopy包支持多个地理投影,并提供一些可视化效果,包括点图、热图、等高线图和形状文件。PySAL是一个由Python编写的空间分析函数的开源库,它提供了许多基本的工具,主要用于形状文件。但是,这些库不允许用户绘制地图贴图,并且对自定义可视化、交互性和动画的支持有限。
    geoplotlib是python的一个用于地理数据可视化和绘制地图的工具箱,并提供了一个原始数据和所有可视化之间的基本接口,支持在纯python中开发硬件加速的交互式可视化,并提供点映射、内核密度估计、空间图、泰森多边形图、形状文件和许多更常见的空间可视化的实现。除了为常用的地理数据可视化提供内置的可视化功能外,geoplotlib还允许通过定义定制层来定义复杂的数据可视化(绘制OpenGL,如分数、行和具有高性能的多边形),创建动画。
    这里写图片描述
    安装:

    pip install geoplotlib
    

    快速入门

    from geoplotlib.layers import DelaunayLayer
    import geoplotlib
    from geoplotlib.utils import read_csv, BoundingBox
    
    data = read_csv('data/bus.csv')
    geoplotlib.delaunay(data, cmap='hot_r')
    geoplotlib.set_bbox(BoundingBox.DK)
    geoplotlib.set_smoothing(True)
    geoplotlib.show()
    
    

    运行结果
    这里写图片描述

    13.folium

    https://python-visualization.github.io/folium/
    folium是一个建立在Python系统之上的js库,可以很轻松地将在Python中操作的数据可视化为交互式的单张地图,且将紧密地将数据与地图联系在一起,可自定义箭头,网格等HTML格式的地图标记。该库还附有一些内置的地形数据。

    这里写图片描述

    安装

    方法一:

    pip install folium
    

    方法二:

    conda install folium
    

    方法三:

    点击下载安装

    快速入门

    import folium
    
    #确定经纬度
    m = folium.Map(location=[45.5236, -122.6750])
    m
    
    

    运行结果
    这里写图片描述

    14.Gleam

    Gleam允许你只利用Python构建数据的交互式,生成可视化的网络应用。无需具备HTML CSS或JaveScript知识,就能使用任一种Python可视化库控制输入。当你创建一个图表的时候,你可以在上面加上一个域,让任何人都可以实时地玩转你的数据,让你的数据更通俗易懂。

    安装:

    pip install Gleam
    

    快速入门

    from wtforms import fields
    from ggplot import *
    from gleam import Page, panels
    
    #定义绘图函数
    class ScatterInput(panels.InputPanel):
        title = fields.StringField(label="Title of plot:")
        yvar = fields.SelectField(label="Y axis",
                                  choices=[("beef", "Beef"),
                                           ("pork", "Pork")])
        smoother = fields.BooleanField(label="Smoothing Curve")
    
    class ScatterPlot(panels.PlotPanel):
        name = "Scatter"
    
        def plot(self, inputs):
            p = ggplot(meat, aes(x='date', y=inputs.yvar))
            if inputs.smoother:
                p = p + stat_smooth(color="blue")
            p = p + geom_point() + ggtitle(inputs.title)
            return p
    
    class ScatterPage(Page):
        input = ScatterInput()
        output = ScatterPlot()
    
    #运行
    ScatterPage.run()
    
    

    运行结果
    这里写图片描述

    15.vincent

    https://vincent.readthedocs.io/en/latest/
    Vincent是一个很酷的可视化工具,它以Python数据结构作为数据源,然后把它翻译成Vega可视化语法,并且能够在d3js上运行。这让你可以使用Python脚本来创建漂亮的3D图形来展示你的数据。Vincent底层使用Pandas和DataFrames数据,并且支持大量的图表----条形图、线图、散点图、热力图、堆条图、分组条形图、饼图、圈图、地图等等。

    这里写图片描述

    安装

    pip install vincent
    

    快速入门

    import vincent
    bar = vincent.Bar(multi_iter1['y1'])
    bar.axis_titles(x='Index', y='Value')
    bar.to_json('vega.json')
    
    

    运行结果
    这里写图片描述

    16.mpld3

    http://mpld3.github.io/
    mpld3基于python的graphing library和D3js,汇集了Matplotlib流行的项目的JavaScript库,用于创建web交互式数据可视化。通过一个简单的API,将matplotlib图形导出为HTML代码,这些HTML代码可以在浏览器内使用。
    这里写图片描述

    安装

    方法一:

    pip install mpld3
    

    方法二:

    点击下载安装

    快速入门

    import matplotlib.pyplot as plt
    import numpy as np
    import mpld3
    from mpld3 import plugins
    
    fig, ax = plt.subplots()
    
    x = np.linspace(-2, 2, 20)
    y = x[:, None]
    X = np.zeros((20, 20, 4))
    
    X[:, :, 0] = np.exp(- (x - 1) ** 2 - (y) ** 2)
    X[:, :, 1] = np.exp(- (x + 0.71) ** 2 - (y - 0.71) ** 2)
    X[:, :, 2] = np.exp(- (x + 0.71) ** 2 - (y + 0.71) ** 2)
    X[:, :, 3] = np.exp(-0.25 * (x ** 2 + y ** 2))
    
    im = ax.imshow(X, extent=(10, 20, 10, 20),
                   origin='lower', zorder=1, interpolation='nearest')
    fig.colorbar(im, ax=ax)
    
    ax.set_title('An Image', size=20)
    
    plugins.connect(fig, plugins.MousePosition(fontsize=14))
    
    mpld3.show()
    
    

    运行结果
    这里写图片描述

    17.python-igraph

    http://igraph.org/python/
    Python界面的igraph高性能图形库,主要针对复杂的网络研究和分析

    这里写图片描述

    安装

    方法一:

    pip install python-igraph
    

    方法二:

    点击下载安装

    快速入门

    from igraph import *
    
    layout = g.layout("kk")
    plot(g, layout = layout)
    
    

    运行结果
    这里写图片描述

    18.missingno

    https://github.com/ResidentMario/missingno
    没有高质量的数据,就没有高质量的数据挖掘结果,当我们做监督学习算法,难免会碰到混乱的数据集,缺失的值,当缺失比例很小时,可直接对缺失记录进行舍弃或进行手工处理,missingno提供了一个小型的灵活的、易于使用的数据可视化和实用工具集,用图像的方式让你能够快速评估数据缺失的情况,而不是在数据表里面步履维艰。你可以根据数据的完整度对数据进行排序或过滤,或者根据热度图或树状图来考虑对数据进行修正。
    missingno 是基于matplotlib建造的一个模块,所以它出图速度很快,并且能够灵活的处理pandas数据。
    这里写图片描述

    安装:

    方法一:

    pip install missingno
    

    方法二:

    点击下载安装

    快速入门

    import missingno as msno
    import pandas as pd
    import pandas_datareader.data as web
    import numpy as np
    p=print
    
    save_loc = '/YOUR/PROJECT/LOCATION/'
    logo_loc = '/YOUR/WATERMARK/LOCATION/'
    
    # get index and fed data
    
    f1 = 'USREC' # recession data from FRED
    
    start = pd.to_datetime('1999-01-01')
    end = pd.datetime.today()
    
    mkt = '^GSPC'
    MKT = (web.DataReader([mkt,'^VIX'], 'yahoo', start, end)['Adj Close']
          .resample('MS') # month start b/c FED data is month start
           .mean()
           .rename(columns={mkt:'SPX','^VIX':'VIX'})
           .assign(SPX_returns=lambda x: np.log(x['SPX']/x['SPX'].shift(1)))
           .assign(VIX_returns=lambda x: np.log(x['VIX']/x['VIX'].shift(1)))
           )
    
    data = (web.DataReader([f1], 'fred', start, end)
            .join(MKT, how='outer')
            .dropna())
    
    p(data.head())
    p(data.info())
    msno.matrix(data)
    
    

    运行结果
    这里写图片描述

    19.Mayavi2

    http://code.enthought.com/pages/mayavi-project.html
    Mayavi2是一个通用的、跨平台的三维科学数据可视化工具。可以在二维和三维空间中显示标量、向量和张量数据。可通过自定义源、模块和数据过滤器轻松扩展。Mayavi2也可以作为一个绘图引擎,生成matplotlib或gnuplot脚本,也可以作为其他应用程序的交互式可视化的库,将生成的图片嵌入到其他应用程序中。

    这里写图片描述!
    安装

    pip install mayavi
    

    快速入门

    import numpy
    from mayavi import mlab
    
    def lorenz(x, y, z, s=10., r=28., b=8. / 3.):
        """The Lorenz system."""
        u = s * (y - x)
        v = r * x - y - x * z
        w = x * y - b * z
        return u, v, w
    
    # 取样.
    x, y, z = numpy.mgrid[-50:50:100j, -50:50:100j, -10:60:70j]
    u, v, w = lorenz(x, y, z)
    fig = mlab.figure(size=(400, 300), bgcolor=(0, 0, 0))
    
    # 用合适的参数画出轨迹的流动.
    f = mlab.flow(x, y, z, u, v, w, line_width=3, colormap='Paired')
    f.module_manager.scalar_lut_manager.reverse_lut = True
    f.stream_tracer.integration_direction = 'both'
    f.stream_tracer.maximum_propagation = 200
    
    # 提取特征并绘制
    src = f.mlab_source.m_data
    e = mlab.pipeline.extract_vector_components(src)
    e.component = 'z-component'
    zc = mlab.pipeline.iso_surface(e, opacity=0.5, contours=[0, ],
                color=(0.6, 1, 0.2))
    # 背景设置
    zc.actor.property.backface_culling = True
    
    # 图片展示
    mlab.view(140, 120, 113, [0.65, 1.5, 27])
    mlab.show()
    
    

    运行结果
    这里写图片描述

    20.Leather

    https://leather.readthedocs.io/en/latest/examples.html
    Leather一种可读且用户界面友好的API,新手也能快速掌握。图像成品非常基础,适用于所有的数据类型,针对探索性图表进行了优化,产生与比例无关的SVG图,这样在你调整图像大小的时候就不会损失图像质量
    这里写图片描述
    安装

    方法一:

    pip install leather
    

    方法二:

    点击下载安装

    快速入门

    import csv
    import leather
    
    with open('gii.csv') as f:
        reader = csv.reader(f)
        next(reader)
        data = list(reader)[:10]
    
        for row in data:
            row[1] = float(row[1]) if row[1] is not None else None
    
    chart = leather.Chart('Data from CSV reader')
    chart.add_bars(data, x=1, y=0)
    chart.to_svg('csv_reader.svg')
    
    

    运行结果
    这里写图片描述
    #结语:
    在 Python 中,将数据可视化有多种选择,因此何时选用何种方案才变得极具挑战性。
    如果你想做一些专业的统计图表,我推荐你使用Seaborn,Altair;数学,科学,工程领域的学者就选择PyQtGraph,VisPy,Mayavi2;网络研究和分析方面,NetworkX,python-igraph会是一个不错的选择。
    地理投影就选geoplotlib,folium;评估数据缺失就选missingno;有了HoloViews再也不用为高维图形犯愁;如果你不喜欢花俏的修饰,那就选择Leather。
    如果你是一名新手但有MATLAB基础,matplotlib会很好上手;有R基础的就选ggplot;如果你是新手或懒癌晚期者,Plotly将会是一大福音,它提供了大量图表集可供你选择与使用。

    展开全文
  • 数据可视化概览

    万次阅读 2019-12-09 09:30:42
    科学可视化(Scientific Visualization)、 信息可视化(Information Visualization)和可视分析学(Visual Analytics)三个学科方向通常被看成可视化的三个主要分支。而将这三个分支整合在一起形成的新学科 “数据...

    什么是数据可视化

    科学可视化(Scientific Visualization)、 信息可视化(Information Visualization)和可视分析学(Visual Analytics)三个学科方向通常被看成可视化的三个主要分支。而将这三个分支整合在一起形成的新学科 “数据可视化”,这是可视化研究领域的新起点。
    ——《数据可视化》

    广义的数据可视化涉及信息技术、自然科学、统计分析、图形学、交互、地理信息等多种学科。
    这里写图片描述

    科学可视化

    科学可视化(Scientific Visualization)是科学之中的一个跨学科研究与应用领域,主要关注三维现象的可视化,如建筑学、气象学、医学或生物学方面的各种系统,重点在于对体、面以及光源等等的逼真渲染。科学可视化是计算机图形学的一个子集,是计算机科学的一个分支。 科学可视化的目的是以图形方式说明科学数据,使科学家能够从数据中了解、说明和收集规律。
    这里写图片描述

    信息可视化

    信息可视化(Information Visualization)是研究抽象数据的交互式视觉表示以加强人类认知。 抽象数据包括数字和非数字数据,如地理信息与文本。信息可视化与科学可视化有所不同:科学可视化处理的数据具有天然几何结构(如磁感线、流体分布等),信息可视化处理的数据具有抽象数据结构。柱状图、趋势图、流程图、树状图等,都属于信息可视化,这些图形的设计都将抽象的概念转化成为可视化信息。
    这里写图片描述

    可视化分析

    可视分析学(Visual Analytics)是随着科学可视化和信息可视化发展而形成的新领域,重点是通过交互式视觉界面进行分析推理。
    这里写图片描述

    科学可视化、信息可视化与可视分析学三者有一些重叠的目标和技术,这些领域之间的边界尚未有明确共识,初略来说有以下区分:

    • 科学可视化处理具有自然几何结构(磁场、MRI 数据、洋流)的数据。
    • 信息可视化处理抽象数据结构,如树或图形。
    • 可视分析学将交互式视觉表示与基础分析过程(统计过程、数据挖掘技术)结合,能有效执行高级别、复杂的活动(推理、决策)。

    为什么需要数据可视化

    人类利用视觉获取的信息量,远远超出其他器官

    人类的眼睛是一对高带宽巨量视觉信号输入的并行处理器,拥有超强模式识别能力,配合超过 50% 功能用于视觉感知相关处理的大脑,使得人类通过视觉获取数据比任何其他形式的获取方式更好,大量视觉信息在潜意识阶段就被处理完成,人类对图像的处理速度比文本快 6 万倍。
    数据可视化正是利用人类天生技能来增强数据处理和组织效率。

    可视化可以帮助我们处理更加复杂的信息并增强记忆

    大多数人对统计数据了解甚少,基本统计方法(平均值、中位数、范围等)并不符合人类的认知天性。 最著名的一个例子是 Anscombe 的四重奏,根据统计方法看数据很难看出规律,但一可视化出来,规律就非常清楚。
    这里写图片描述
    可视化还可以有效增强人的记忆力,我们经常说的一图胜千言就是可视化对生活的影响。

    如何实现数据可视化

    可视化实现流程

    在技术上,数据可视化最简单的理解,就是数据空间到图形空间的映射。
    这里写图片描述

    一个经典的可视化实现流程,是先对数据进行加工过滤,转变成视觉可表达的形式(Visual Form),然后再渲染成用户可见的视图(View)。
    这里写图片描述

    可视化技术栈

    具备专业素养的数据可视化工程师一般来说需要掌握以下技术栈:

    • 基础数学:三角函数、线性代数、几何算法
    • 图形相关:canvas、svg、webgl、计算图形学、图论
    • 工程算法:基础算法、统计算法、常用的布局算法
    • 数据分析:数据清洗、统计学、数据建模
    • 设计美学:设计原则、美学评判、颜色、交互、认知
    • 可视化基础:可视化编码、可视分析、图形交互
    • 可视化解决方案:图表的正确使用、常见的业务的可视化场景

    常用的数据可视化工具

    在学术界与工程界,数据可视化工具都非常之多,学术界用得比较多的是 R 语言, ggplot2, Python 可视化库等,普通用户喜闻乐见的是 Excel,商业上的产品是 Tableau, DOMO, PowerBI 等等,是个精彩纷呈的世界。
    这里有常用的 25 个数据可视化工具对比,没有完美的可视化工具,每个工具都有各自的优缺点。下面是一张工具选择推荐图,根据目的分类,左上是简单快捷,左下是故事导向,右上是为了分享分析,右侧是创新型图表,右下是分析型工具。
    这里写图片描述

    我们常常听说的数据可视化

    数据可视化(Data Visualization)和 信息可视化(Information Visualization)是两个相近的专业领域名词。狭义上的数据可视化指的是将数据用统计图表方式呈现,而信息可视化则是将非数字的信息进行可视化。前者用于传递信息,后者用于表现抽象或复杂的概念、技术和信息。而广义上的数据可视化则是数据可视化、信息可视化以及科学可视化等等多个领域的统称。
    ——《数据可视化之美》

    我们常常听说的数据可视化大多指狭义的数据可视化以及部分信息可视化。根据数据类型和性质的差异,经常分为以下几种类型:

    统计数据可视化:用于对统计数据进行展示、分析。统计数据一般都是以数据库表的形式提供,常见的统计可视化类库有 HighCharts、ECharts、G2、Chart.js 等等,都是用于展示、分析统计数据。

    关系数据可视化:主要表现为节点和边的关系,比如流程图、网络图、UML 图、力导图等。常见的关系可视化类库有 mxGraph、JointJS、GoJS、G6 等。

    地理空间数据可视化:地理空间通常特指真实的人类生活空间,地理空间数据描述了一个对象在空间中的位置。在移动互联网时代,移动设备和传感器的广泛使用使得每时每刻都产生着海量的地理空间数据。常见类库如 Leaflet、Turf、Polymaps 等等,最近 Uber 开源的 deck.gl 也属于此类。

    还有时间序列数据可视化(如 timeline)、文本数据可视化(如 worldcloud)等等。

    基于Web的可视化技术

    在讲各种流行类库框架前,我们先了解下 Web 图形的底层技术规范。

    底层技术规范

    • SVG:可缩放矢量图形(Scalable Vector Graphics),是基于可扩展标记语言(标准通用标记语言的子集)用于描述二维矢量图形的一种图形格式。
    • Canvas 2D:Canvas 通过 JavaScript 来绘制 2D 图形,通过逐像素来进行渲染。
    • Canvas 3D WebGL:WebGL(Web Graphic Library)是一个 JavaScript API,用于在任何兼容的 Web 浏览器中渲染 3D 图形。WebGL 程序由用 JavaScript 编写的控制代码和用 OpenGL 着色语言(GLSL)编写的着色器代码构成,这种语言类似于 C 或 C++,可在 GPU 上执行。

    比较流行的基础绘图库,基于 SVG 的有 snap.svg、rapheal.js 等,基于 Canvas 2D 的有 zrender、g 等,基于 WebGL 的有 three.js、SceneJS、PhiloGL 等,这些基础绘图库可以让上层封装更简单容易。

    我们重点回到基于 Web 技术的数据可视化类库。

    D3

    D3.js 是一个基于数据操作文档的 JavaScript 库。 D3 可以将强大的可视化组件和数据驱动的 DOM 操作方法完美结合。

    D3的优劣:

    • 强大的 SVG 操作能力,可以非常容易的将数据映射为 SVG 属性
    • 集成了大量数据处理、布局算法和计算图形的工具方法
    • 强大的社区和丰富的 demo
    • API 太底层,复用性低,学习与使用成本高

    D3 没有提供封装好的组件,在复用性、易用性方面不佳,社区里有很多基于 D3 的可视化组件库:

    • nvd3.js: 基于 D3 封装了常见的折线图、散点图、饼图,功能比较简单
    • dc.js: 除了提供了常见的图表外还提供了一些数据处理能力
    • c3.js: 一个轻量级的基于状态管理的图表库

    D3 有着 Stanford 的血脉渊源,在学术界享有很高声誉,灵活强大使得它成为目前领域内使用最广泛的可视化类库,但偏底层的 API 和数据驱动模式,使得上手 D3 存在一定门槛,基于 D3 的工程实现上需要自己考虑和处理更多内容,如动画、交互、统一样式等,研发成本较高。

    HighCharts

    HighCharts 是一个用纯 JavaScript 编写的图表库, 能够简单便捷的在 Web 应用上添加交互性图表。这是在 Web 上使用最广泛的图表,企业使用需要购买商业授权。

    HighCharts的优劣:

    • 使用门槛极低,兼容性好
    • 使用广泛,非常成熟
    • 样式比较陈旧、图表难以扩展
    • 商业上使用需要购买版权

    这是图表界的 jQuery,在世界范围内是使用最多最广的一个可视化类库,但整体图表设计比较陈旧难以扩展,同时商业公司使用需要按照使用人数购买版权,比较昂贵,阿里有购买过,目前已不推荐使用。

    ECharts

    ECharts 缩写自 Enterprise Charts,企业级图表,开源来自百度数据可视化团队,是一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器,底层依赖另一个也是该团队自主研发的轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。ECharts 是目前国内唯一一个入选 GitHub 全球可视化榜单的开源项目,2w+ star 全球排名第三,社区活跃,覆盖主流前端框架和 8 种编程语言的扩展,目前国内市场占有率处于绝对领先地位。

    ECharts的优劣:

    • 丰富的图表类型,覆盖主流常规的统计图表
    • 配置项驱动,三级个性化图表样式管理
    • 移动端优化,交互和布局适配,按需打包
    • 深度的交互式数据探索
    • 地理特效(百度迁徙,百度人气,公交轨迹等效果)
    • 灵活性上不如 Vega 等基于图形语法的类库
    • 复杂关系型图表比较难定制

    ECharts 能很好满足传统图表需求,但在高度灵活多样化的可视需求面前,需要另寻出路。

    Leaflet

    Leaflet 是面向移动设备的交互式地图的 JavaScript 库。 测量的 JS 只有大约 38 KB,它具有大多数开发人员需要的所有映射功能。

    Leaflet的优劣:

    • 专门针对地图应用
    • mobile 兼容性良好
    • API 简洁、支持插件机制
    • 功能比较简单,需要具备二次开发能力

    地图专用,其他领域使用不上。目前 Google 地图、高德地图、百度地图都拥有自研的 JS 库。

    deck.gl

    deck.gl 是 Uber 可视化团队基于 WebGL 开发的面向大数据分析的可视化类库。

    deck.gl的优劣:

    • 主要以 3D 地图可视化为主,内置了地理信息可视化常见的场景
    • 支持大规模数据的可视化
    • 需要具备 WebGL 的知识,层的扩展比较复杂

    deck.gl 在 3D 地图领域效果很赞,在其他领域不适用。

    AntV

    大阿里(阿里巴巴、蚂蚁金服、菜鸟物流等集团统称)有各种数据可视化产品和业务,如 QuickBI,信鸽地图,阿里云的 DataV 更是可视化大屏方面的人气产品在领域内有着很高的赞誉。

    而另一方,在数量更多的普通用户产品,中后台应用系统中也存在大量的数据可视化需求,在这些业务中沉淀出了很多优秀的可视化类库与工具,如国际 UED 的 BizCharts、淘宝基础平台的 IceChart、集团数据技术和产品部的 Recharts 等等。在这大量的业务应用和类库背后有一个共同的名字,AntV。

    AntV 是蚂蚁金服全新一代数据可视化解决方案,主要面向从事数据可视化应用相关的工程师和设计师,目前包括:

    • 底层绘图引擎 G:目前基于 canvas 2d 提供基础绘图能力,基于 webgl 的版本正在规划中;
    • 可视化语法类库 G2:一套数据驱动的高交互可视化图形语法,提供了丰富的图表、专业的数据处理能力、便利的扩展方式和强大交互能力;
    • 关系可视化类库 G6:专注解决流程与关系分析的图表库,集成了大量的交互,可以轻松的进行动态流程图和关系网络的开发;
    • 移动端图表类库 F2:是一套精简、高效易扩展的移动端图表库,适于对性能、体积、扩展性要求严苛的移动应用场景下使用;
    • 可视化设计指引与使用规范:统计图表以及常用场景下的可视化设计指引和使用规范;

    AntV 的整体产品层次图如下:
    这里写图片描述

    基于 Web 的可视化工具还有很多,上面是几个一直以来使用比较多的类库工具,以及最近涌现的一些新秀。各个类库工具特性不同,定位不同,关键要看应用场景的适用性。

    写在最后

    最后补充一个小点,数据可视化一点也不神秘。在人类历史发展的过程中,有很多的现实的数据可视化就在栩栩如生的生活里。
    数据可视化是个庞大的领域,涉及的学科非常多。但正是因为这种跨学科性,让可视化领域充满活力与机遇。

    原文链接

    展开全文
  • 现在我们对可视化信息的需求越来越高,可视化信息比传统的文本信息更吸引眼球,方便阅读,加深记忆,因此也可以更快地被人们传播出去。近年来涌现出了许多数据可视化工具。有哪些值得使用呢?下面与大家分享九大数据...
  • 什么是网络可视化

    2020-09-24 15:21:07
    网络可视化:实现对网络流量的监管和网络内部价值的挖掘与分析 网络可视化网络可视化简单的说即网络中的摄像头,对网络数据,流量来源进行监管、分析与挖掘。利用人类视觉感知系统,将网络数据以图形化方式展示...
  • 数据可视化几种技术

    万次阅读 2018-05-30 14:32:57
    前端界出现的几种常用技术:HighchartsEchartsChartsD3万变不离其宗。所有第三方库都是基于以下两种浏览器图形渲染技术实现:Canvas 和SVG
  • 可视化

    2019-12-03 13:56:08
    饼状图 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei']#显示中文 import numpy as np labels=['财经15','社会30','体育15','科技10','其他30'] sizes=[15,30,15,10,30] ...
  • 对于数据分析师来说,可视化可能是最能表现自己工作价值的一个途径,因为领导喜欢看这种直观的、炫酷的、具有科技感的可视化大屏,我们也能把数据分析结果直接展示给领导,比一份纸面报告要强不知多少倍!...
  • Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲作者丨老肥来源丨老肥码码码和之前学习Pandas一...
  • VTK 初步 (1) ----- 可视化管线 参考资料: 《An Object-Oriented Approach to 3D Graphics》 《The VTK User’s Guide》 文章目录VTK 初步 (1) ----- 可视化管线0. VTK概述1. 可视化管线2. 管线连接3. 简单例子...
  • 数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息。为了有效地传达思想概念,美学形式与功能需要齐头并进,通过直观地传达关键的方面与特征,从而实现对于相当稀疏而又复杂的数据集的深入洞察。如何...
  • 在篇幅之前,我们先结合技术的变迁(传统数据库->时序数据库/图谱数据库->时序知识图谱数据库)来了解一下 领导的需求进阶: 阶段一、数据库时效性不高 在传统数据库领域,保持数据时效性需要每天需要对...
  • Python - 编写可视化界面(Python+PyCharm+PyQt)

    万次阅读 多人点赞 2019-01-15 10:45:43
    Python编写可视化界面  最近开始学习Python,但只限于看理论,编几行代码,觉得没有意思,就想能不能用Python编写可视化的界面。遂查找了相关资料,发现了PyQt,由于前一段时间刚看过Qt,而且对Qt的印象很好,于是...
  • 大屏数据可视化案例

    万次阅读 多人点赞 2020-06-03 14:05:27
    数据可视化:把相对复杂的、抽象的数据通过可视的、交互的方式进行展示,从而形象直观地表达数据蕴含的信息和规律。 数据可视化是数据空间到图形空间的映射,是抽象数据的具象表达。 数据可视化交互的基本原则:总...
  • Python数据可视化——散点图

    万次阅读 多人点赞 2015-06-10 10:58:52
    本文记录了python中的数据可视化——散点图scatter,令x作为数据(50个点,每个30维),我们仅可视化前两维。labels为其类别(假设有三类)。这里的x就用random来了,具体数据具体分析。label设定为[1:20]->1, [21:...
  • 科学可视化基础

    万次阅读 2017-12-22 17:03:17
    可视化概念将任何的抽象的事物过程、事务展现成图形、图像,均可称为可视化 与计算机相关的可视化,如可视化界面(图形界面)、可视化编程等 科学计算可视化这个概念,是美国国家科学基金会(NSF)于1987年2月提出...
  • MySQL安装及可视化工具使用

    万次阅读 多人点赞 2019-12-29 19:24:30
    可视化工具安装及使用资源下载 MySQL数据库 mysql-5.6.19-winx64 百度云地址 可视化工具下载 安装前配置 解压文件 将下载的数据库的压缩文件解压在本地文件夹,个人解压在D:\MySQL下,如下图: 创建my.ini...
1 2 3 4 5 ... 20
收藏数 527,796
精华内容 211,118
关键字:

可视化