怎样成为优秀的数据可视化工程师( 三 )



■网友
python作图还不错,比如最最基本的matplotlib库,我们介绍在数据分析中使用非常高频的几种图的形式。
首先说散点图,散点图和线形图最大的区别,顾名思义就是这种图形不再由线段进行连接,而是由一个一个独立的点、圆圈或者其他指定的形状构成:
import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0,10,100)plt.scatter(x, np.sin(x), marker=\u0026#39;o\u0026#39;)plt.grid()plt.show()怎样成为优秀的数据可视化工程师

实质上,使用plt.sactter相比plt.plot在创建散点图时的优势是具有更高的灵活性,他可以单独控制每一个散点的不同属性(颜色、大小等),这样就可以通过(坐标位置、颜色、大小)这些多维信息,来表征更多的数据特征,并进行更精细的控制。
我们来绘制这样一组散点图,每个点的位置坐标(x,y)是服从标准正态分布的随机值,点的颜色灰度值是位于(0,1)空间中的随机样本,点的大小是随机值得1000倍,单位是像素。这样通过位置、大小、颜色等多维信息,就能更丰富的表现出散点数据背后所蕴含的多重信息了。
import numpy as npimport matplotlib.pyplot as pltrng = np.random.RandomState(0)x = rng.randn(100)y = rng.randn(100)colors = rng.rand(100)sizes = 1000 * rng.rand(100)plt.scatter(x,y,c=colors,s=sizes,alpha=0.3)plt.colorbar()plt.grid(True)plt.show()怎样成为优秀的数据可视化工程师

从图中,我们可以直观看出散点的大小所对应的数量信息,右侧添加的颜色条,同来指示颜色所对应的数值信息。这类多颜色与多特征的散点图在探索与演示数据时非常有用。
第二类我们要说的图形类型是频次直方图。
我们先画一个最简单的频次直方图,生成1000个服从标准正态分布的随机变量,然后观察他们在每个点的出现次数。
import numpy as npimport matplotlib.pyplot as pltdata = https://www.zhihu.com/api/v4/questions/41956800/np.random.randn(1000)ret = plt.hist(data)print(ret)plt.show()(array(), array(), /u0026lt;a list of 10 Patch objects/u0026gt;)怎样成为优秀的数据可视化工程师

最简单的频次直方图仔细琢磨一下其实会有一些疑问,这个图里面只有10个数据条,但是很显然1000个随机变量的取值显然不止10个。在默认情况下,hist函数会将所有的随机变量取值划分为10个取值范围,然后统计每个取值范围内的变量数,并绘就此图。
我们可以从程序结果看出,hist函数是有返回值的,返回的是一个2元元组,元组第一个ndarray对象是数据条的高度序列,元组第二个ndarray对象是每个数据条的边缘横坐标。
其实如果我们只想得到上述返回数据,而并不想画图,那么可以用下面的方法即可。
import numpy as npimport matplotlib.pyplot as pltdata = https://www.zhihu.com/api/v4/questions/41956800/np.random.randn(1000)ret = np.histogram(data)print(ret)plt.show()(array(, dtype=int64), array())那么我们可以通过指定hist函数中的一些参数,来个性化的调整频次直方图的显示效果。
通过bins参数可以指定数据条的个数;normed可以指定是否将频数进行标准化,alpha指定透明度;还有histtype、color、edgecolor等线性、颜色等参数


推荐阅读