[Python3] Matplotlib —— (三) 简易散点图

文章目录

    • 四、简易散点图
      • (一)用plt.plot画散点图
      • (二)用plt.scatter画散点图
      • (三)plot与scatter效率对比


[ Matplotlib version: 3.2.1 ]


四、简易散点图

散点图(scatter plot),不由线段连接,而是由独立的点、圆圈或其他形状构成。

%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np

(一)用plt.plot画散点图

简易散点图

x = np.linspace(0, 10, 30)
y = np.sin(x)

plt.plot(x, y, 'o', color='black')
# 第三个参数为图形符号缩写形式

[Python3] Matplotlib —— (三) 简易散点图_第1张图片

不同的图形标记

plt.figure(figsize=(12,8))
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)

[Python3] Matplotlib —— (三) 简易散点图_第2张图片

  • 更多符号缩写详见:[Python3] Matplotlib.pyplot.plot图形符号、风格及颜色缩写速查表

组合线条与散点

plt.plot(x, y, '-ok')

[Python3] Matplotlib —— (三) 简易散点图_第3张图片

自定义线条和散点属性

plt.plot(x, y, '-p', color='gray', markersize=15, linewidth=4,
         markerfacecolor='white', markeredgecolor='gray', markeredgewidth=2)

[Python3] Matplotlib —— (三) 简易散点图_第4张图片

(二)用plt.scatter画散点图

简易散点图

plt.scatter(x, y, marker='o')

[Python3] Matplotlib —— (三) 简易散点图_第5张图片

改变散点图中散点的大小、颜色和透明度

  • plt.scatterplt.plot的主要差别在于,前者在创建散点图时具有更高灵活性,可以单独控制每个散点与数据匹配,也可以让每个散点具有不同的属性(大小、表面颜色、边框颜色等)
  • 可以用alpha参数调整透明度,以便更好显示重叠部分
  • 颜色自动映射成颜色条(color scale,通过colorbar()显示),散点的大小以像素为单位。这样散点的颜色与大小就可以显示多维数据的信息了
rng = 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, cmap='viridis')
plt.colorbar()

[Python3] Matplotlib —— (三) 简易散点图_第6张图片

# 用散点属性对鸢尾花的特征编码
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])

[Python3] Matplotlib —— (三) 简易散点图_第7张图片

  • 散点图可以让我们同事看到不同维度的数据:每个点的坐标值(x, y)分别表示花萼的长度和宽度,而点的大小表示花瓣的宽度,三种颜色对应三种不同类型的鸢尾花。

  • 更多详见:matplotlib.pyplot.scatter - Matplotlib 3.2.1 documentation

(三)plot与scatter效率对比

在数据量较小的时候,两者在效率上差异不大。

当大型数据集(数据变大到几千个散点)时,plt.plot的效率将大大高于plt.scatter

  • plt.scatter会对每个散点进行单独的大小与颜色的渲染,渲染器会消耗更多资源
  • plt.plot中,散点基本都彼此复制,因此整个数据集中所有点的颜色、尺寸只需要配置一次

Matplotlib 相关阅读:

[Python3] Matplotlib —— (一) 入门基础
[Python3] Matplotlib —— (二) 简易线形图


总结自《Python数据科学手册》

你可能感兴趣的:(Python3,#,Matplotlib,Data,Science,数据可视化,python)