Matplotlib学习笔记——简易散点图

简易散点图

除了线性图,另外一种常见的图形是简易散点图。简易散点图和线性图不同之处在于,这种图形不再由线段(-, -., –等)连接,而是由独立的点、圆圈或者其他形状构成。

用plt.plot()画散点图

%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()画散点图

plt.scatter与plt.plot的主要差别在于,前者在创建散点图时具有更高的灵活性,可以单独控制每个散点与数据匹配,也可以让每个散点具有不同的属性(大小、表面颜色、边框颜色等)。

rng = np.random.RandomState(0)
x = rng.randn(100)
y = rng.randn(100)
colors = rng.rand(100)
sizes = 1000 * rng.rand(100)
#颜色会自动映射成颜色条(color scale,通过colorbar()显示),散点的大小以像素为单位,这样散点的颜色和大小
#就可以在可视化图中显示多维数据的信息了。
plt.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis')
plt.colorbar();

这里写图片描述

下面以Scikit-Learn程序库中的鸢尾花(iris)数据演示如何在可视化图中显示多维数据的信息。数据集中有三种鸢尾花,每个样本是一种花,其花瓣(petal)与花萼(sepal)的长度与宽度都经过仔细测量。

from sklearn.datasets import load_iris
iris = load_iris()
features = iris.data.T

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)分别表示花萼的长度和宽度,而点的大小表示花瓣的宽度,三种颜色对应三种不同类型的鸢尾花。这类多颜色与多特征的散点图在探索与演示数据时非常有用。

plot与scatter:效率对比

plt.plot()与plt.scatter除了特征上的差异之外,在执行效率上也存在差距。当数据量较小的时候,两者在效率上的差异不大。但是当数据变大到几千个散点时,plt.plot()的效率将大大高于plt.scatter()。这是由于plt.scatter会对每一个散点进行单独的大小与颜色的渲染,因此渲染器会消耗更多的资源。而在plt.plot中,散点基本都彼此复制,因此整个数据集中所有点的颜色、尺寸只需要配置一次。所以,面对大型数据集时,plot.plot方法比plt.scatter好.

猜你喜欢

转载自blog.csdn.net/jasonzhoujx/article/details/81739644