http://blog.csdn.net/pipisorry/article/details/24833173
Python数据图表和绘图工具
Python 的科学栈相当成熟,各种应用场景都有相关的模块,包括机器学习和数据分析。数据可视化是发现数据和展示结果的重要一环,只不过过去以来,相对于 R 这样的工具,发展还是落后一些。
幸运的是,过去几年出现了很多新的Python数据可视化库,弥补了一些这方面的差距。matplotlib 已经成为事实上的数据可视化方面最主要的库,此外还有很多其他库,例如vispy,bokeh, seaborn, pyga, folium 和 networkx,这些库有些是构建在 matplotlib 之上,还有些有其他一些功能。
本文会基于一份真实的数据,使用这些库来对数据进行可视化。通过这些对比,我们期望了解每个库所适用的范围,以及如何更好的利用整个 Python 的数据可视化的生态系统。
我们在 Dataquest 建了一个交互课程,教你如何使用 Python 的数据可视化工具。如果你打算深入学习,可以点这里。
探索数据集
在我们探讨数据的可视化之前,让我们先来快速的浏览一下我们将要处理的数据集。我们将要使用的数据来自 openflights。我们将要使用航线数据集、机场数据集、航空公司数据集。其中,路径数据的每一行对应的是两个机场之间的飞行路径;机场数据的每一行对应的是世界上的某一个机场,并且给出了相关信息;航空公司的数据的每一行给出的是每一个航空公司。
首先我们先读取数据:
首先,我们使用 pandasapplymethod 计算每个名称的长度。它将找到每个航空公司的名字字符的数量。然后,我们使用 matplotlib 做一个散点图来比较航空 id 的长度。当我们绘制时,我们把 theidcolumn of airlines 转换为整数类型。如果我们不这样做是行不通的,因为它需要在 x 轴上的数值。我们可以看到不少的长名字都出现在早先的 id 中。这可能意味着航空公司在成立前往往有较长的名字。
我们可以使用 seaborn 验证这个直觉。Seaborn 增强版的散点图,一个联合的点,它显示了两个变量是相关的,并有着类似地分布。
12 | data = pandas.DataFrame({"lengths": name_lengths, "ids": airlines["id"].astype(int)})seaborn.jointplot(x="ids", y="lengths", data=data) |
上面的图表明,两个变量之间的相关性是不明确的——r 的平方值是低的。
静态 maps
我们的数据天然的适合绘图-机场有经度和纬度对,对于出发和目的机场来说也是。
第一张图做的是显示全世界的所有机场。可以用扩展于 matplotlib 的 basemap 来做这个。这允许画世界地图和添加点,而且很容易定制。
.importBasemap# Create a map on which to draw. We're using a mercator projection, and showing the whole world.m=Basemapprojection'merc'llcrnrlat-,=,=180urcrnrlon180lat_ts20resolution'c'.(.(,y=mlistairports"longitude".(),listairports"latitude".())# Use matplotlib to draw the points onto the map.mscatterxy1marker'o'color'red'.(上面的代码将会画一个地图,然后再在地图上画线路。我们添加一了写过滤器来阻止过长的干扰其他路由的长路由。
画网络图
我们将做的最终的探索是画一个机场网络图。每个机场将会是网络中的一个节点,并且如果两点之间有路由将划出节点之间的连线。如果有多重路由,将添加线的权重,以显示机场连接的更多。将使用 networkx 库来做这个功能。
首先,计算机场之间连线的权重。
1234567891011121314151617181920212223 | # Initialize the weights dictionary.weights = {}# Keep track of keys that have been added once -- we only want edges with a weight of more than 1 to keep our network size manageable.added_keys = []# Iterate through each route.for name, row in routes.iterrows(): # Extract the source and dest airport ids. source = row["source_id"] dest = row["dest_id"] # Create a key for the weights dictionary. # This corresponds to one edge, and has the start and end of the route. key = "{0}_{1}".format(source, dest) # If the key is already in weights, increment the weight. if key in weights: weights[key] += 1 # If the key is in added keys, initialize the key in the weights dictionary, with a weight of 2. elif key in added_keys: weights[key] = 2 # If the key isn't in added_keys yet, append it. # This ensures that we aren't adding edges with a weight of 1. else: added_keys.append(key) |
一旦上面的代码运行,这个权重字典就包含了每两个机场之间权重大于或等于 2 的连线。所以任何机场有两个或者更多连接的路由将会显示出来。
asnxgraph=nxGraph)# Keep track of added nodes in this set so we don't add twice.nodes=set)# Iterate through each edge.forkinweightsitems)try# Split the source and dest ids and convert to integers. ,dest=ksplit"_"sourceintsource,intdest] ifsource: .() ifdest: .() # Sets don't allow duplicates. .() .()# Add the edge to the graph. .(,dest=) ValueError)passposnxspring_layoutgraph.(,,node_color'red'=,alpha0.8.(,,=,=)# Show the plot.pltshow)总结
有一个成长的数据可视化的 Python 库,它可能会制作任意一种可视化。大多数库基于 matplotlib 构建的并且确保一些用例更简单。如果你想更深入的学习怎样使用 matplotlib,seaborn 和其他工具来可视化数据,在这儿检出其他课程。
[开源:(Python)面向浏览器的数据可视化库mpld3(Matplotlib+D3js)]
[[[译]比一比:Python的七个数据可视化工具]]
数据可视化方法
[A Periodic Table of Visualization Methods] [该多多尝试的七种数据可视化类型(以及如何开始)《7 Data Visualization Types You Should be Using More (and How to Start)》]数据可视化绘图建议
[为何大多数人做出来的图表只是一坨屎?] [给科学家的数据可视化建议 《Data Visualization Advice for Scientists - Scientific American Blog Network》by Robert Simmon]数据可视化工具
[The 38 best tools for data visualization]
[14 Data Visualization Tools to Tell Better Stories with Numbers]
[时间轴Timeline可视化作品及制作工具making timelines]
[ 数据可视化工具汇总][开源:基于matplotlib绘制Pandas时序数据Calendar heatmaps——Calmap Calendar heatmaps from Pandas time series data]
[Github十大数据可视化项目《Top 10 Data Visualization Projects on Github》by Matthew Mayo]
[GGobi data visualization system]
数据可视化实例
[50 Of The Greatest Data Visualization Examples]
[全球最牛的28个大数据可视化应用案例(三)资金喷泉/担保圈毒刺/]
[网易关系网]
D3.js blocks示例分享/查询网站: [Search the Bl.ocks] [Searching for examples]
from:http://blog.csdn.net/pipisorry/article/details/24833173
ref: