分享

Python的数据可视化:对比7种工具包(下)

 River_LaLaLa 2016-07-30

然后我们在Pygal的水平条形图里将每一个都画成条形图:



  首先,我们创建一个空的图表。然后向里面添加元素,包括标题和条形图。每一个条形图通过其百分比值来显示一个路线的频繁程度。

  最后,我们将图表转换成文件,然后使用IPython的SVG功能加载并显示文件。这个图看起来要比matplotlib的默认图表好一点,但是我们需要更多的代码来创建它。Pygal可能更适合小型用来展示的高质量图表。


散点图

  

  散点图使我们能够对比数据的不同列,我们可以绘制一个简单的散点图来对比航空公司的ID号和航空公司名字的长度:


首先,我们使用pandas的apply方法计算每个名字的长度,我们将得到每个航空公司名字的字符数量。

  然后,我们使用 matplotlib 做一个散点图来对比航空公司 id 和航空公司名字的长度。当我们绘制时,我们把 airlines的 id这一列转换为整数类型。如果我们不这样做就没有办法画图,因为它在x 轴上需要一个的数值型的变量。我们可以看到不少的长名字都出现在比较靠前的 id 中。这可能意味着成立的比较早的航空公司往往有较长的名字。

  我们可以使用 seaborn 证实这个直觉。Seaborn 有一个增强版的散点图,联合绘图,它能够显示两个变量是怎样相互关联的,并同时展示每个变量的分布。



上面的图表明,两个变量之间的相关性是不明确的——r 的平方值很低。


静态地图

  

  我们的数据非常适合绘制地图—我们有每个机场的经度纬度对,出发机场目的机场都有。

  我们画的第一张图显示了全世界的所有机场。我们可以使用matplotlib的展 basemap 来做这个。它可以画世界地图和添加点,而且很容易根据你的需求添加其他元素。


在上面的代码中,我们首先用 mercator projection 画了一个世界地图。墨卡托投影是一种将整个世界的绘图映射到二维平面上的方法。然后,我们使用红色的点在地图上画出机场。


  上面地图的问题是找到每个机场在哪是很困难的—在机场密度很高的区域这些表示机场的点都混合起来像一块斑点。

  就像上面的bokeh库,有个可以绘制交互地图的库,folium,可以进行放大地图来帮助我们找到单独的机场。

 Folium 使用 leaflet.js 来制作完整的交互式地图。你可以点击每一个机场然后在弹出框中查看机场的名字。在上边展示的是一个截屏,但是实际的地图更加让人印象深刻。Folium 也允许你非常广泛的修改选项来做更好的标注,或者添加更多的元素到地图上。


画圆弧


  在地图上看到所有的航线是一件很酷的事,幸运的是,我们可以使用 basemap 来完成这件事。我们将画弧线连接所有的出发机场和目的机场。每个弧线展示了一班飞机的航线路径。不幸的是,有太多的航线了,如果把它们全展示出来将会是一团糟。相反,我们只画出前 3000 条航线。

  上面的代码将会画一个地图,然后再在地图上画出航线。我们添加过滤器来过滤掉过长的航线,以防止它们干扰其它航线。


画网络图


  最后探索我们要画的是一个机场网络图。在这个网络图中,每个机场都将会是网络中的一个节点,并且如果两点之间有航线,我们将画出两个节点之间的连线。如果有多重路线,我们将会添加线的权重,以显示有更多连接的机场。将使用 networkx 库来实现上述功能。

  首先,计算机场之间的连线的权重。


当上面的代码运行完,权重字典里面就包含了机场之间所有权重大于或等于 2 的连线的权值。所以任何有两个或者更多连接航线的机场将会显示出来。


 下面,我们需要画出图。


总结

  Python的数据可视化的已经有所发展,现在它使任意一种可视化都成为可能。大多数库都是基于 matplotlib 构建的,并且使某些用例更简单。如果你想更深入的学习怎样使用 matplotlib,seaborn 等其他工具对数据可视化,点击在这儿查看其他课程。 

英文原文:https://www./blog/python-data-visualization-libraries/

译者:yaoyujia123


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多