除了线性图,另外一种常见的图形是简易散点图。简易散点图和线性图不同之处在于,这种图形不再由线段(-, -., –等)连接,而是由独立的点、圆圈或者其他形状构成。
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
rng = np.random.RandomState(0)
#函数的第三个参数一个字符,表示图形符号的类型。与线性图中的‘-’和‘–’设置线条属性相似,对应的图形标记也有缩写形式。
for marker in [‘o’, ‘.’, ‘,’, ‘x’, ‘+’, ‘v’, ‘^’, ‘<’, ‘>’, ‘s’, ‘d’]:
plt.plot(rng.rand(5), rng.rand(5), marker, label = “marker=’{0}’”.format(marker))
plt.legend(numpoints=1)
plt.xlim(0,1.8)
#简易散点图可以与线条、颜色代码组合起来,画出一条连接散点的线
x = np.linspace(0,10,30)
y = np.sin(x)
plt.plot(x, y, '-ok')
plt.scatter(features[0], features[1], alpha=0.2,
s=100*features[3], c=iris.target, cmap=‘viridis’)
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])
散点图可以让我们同事看到不同维度的数据:每个点的坐标值(x,y)分别表示花萼的长度和宽度,而点的大小表示花瓣的宽度,三种颜色对应三种不同类型的鸢尾花。这类多颜色与多特征的散点图在探索与演示数据时非常有用。
plt.plot()与plt.scatter除了特征上的差异之外,在执行效率上也存在差距。当数据量较小的时候,两者在效率上的差异不大。但是当数据变大到几千个散点时,plt.plot()的效率将大大高于plt.scatter()。这是由于plt.scatter会对每一个散点进行单独的大小与颜色的渲染,因此渲染器会消耗更多的资源。而在plt.plot中,散点基本都彼此复制,因此整个数据集中所有点的颜色、尺寸只需要配置一次。所以,面对大型数据集时,plot.plot方法比plt.scatter好.