Python Matplotlib颜色映射(cmap)与数据映射(c)详解

栗子
栗子
发布时间:2026-10-14| 6人浏览过
原创

本文详解Python Matplotlib中颜色映射(cmap)与数据映射(c)的配合使用。c参数指定数值列表,其位置对应点的绘制顺序,数值大小决定颜色深浅。通过随机漫步示例,分析y_values与range(50000)两种情况下颜色随位置变化的规律,揭示数据趋势与视觉颜色的对应关系。

本文主要介绍在Python可视化学习过程中涉及的一些关键概念和常见应用场景。

重点探讨cmap=plt.cm.Blues这一颜色映射机制的具体应用方式。


import matplotlib.pyplot as plt
from random_walk import RandomWalk
# Keep making new walks, as long as the program is active.
while True:
    # Make a random walk.
    rw = RandomWalk(50_000)
    rw.fill_walk()
    # Plot the points in the walk.
    plt.style.use('classic')
    fig, ax = plt.subplots(figsize=(15, 9))
    point_numbers = range(rw.num_points)
    y_values=rw.y_values
    ax.scatter(rw.x_values, rw.y_values, c=y_values, cmap=plt.cm.Blues,
        edgecolors='none', s=1)
    # Emphasize the first and last points.
    ax.scatter(0, 0, c='green', edgecolors='none', s=100)
    ax.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none',
        s=100)
    # Remove the axes.
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
    plt.show()
    keep_running = input("Make another walk? (y/n): ")
    if keep_running == 'n':
        break

 ax.scatter(rw.x_values, rw.y_values, c=range(50000), cmap=plt.cm.Blues,

在Matplotlib绘图时,参数c与cmap通常需要配合使用,以实现对数据颜色的精确控制。

参数c接收一个数值列表,列表中的数值无需按大小排序。数值的大小直接对应颜色的深浅,数值越小,颜色越浅;而数值在列表中的位置则对应数据点的绘制顺序,即列表中的第一个数值(无论大小)对应由x_values和y_values生成的第一个点。

示例中的y_values由随机漫步算法生成,从第一个点到最后一个点呈现连续变化。这种随机漫步具有局部随机但整体趋势可预测的特点,例如y值可能呈现从大到小或从小到大的规律性变化。

因此,列表中的数值大小顺序不固定,可能递增也可能递减。以下示例中数值从小到大排列:第一个点对应的数值较小,颜色较浅;最后一个点数值较大,颜色较深。若第一个点位置偏上、最后一个点偏下,说明y值逐渐变小,此时若使用c=y_values,点的颜色将从深变浅。这表明当点的位置变化(如y值)具有规律性时,颜色的变化也遵循相同的规律,因为c=y_values是根据点的y值来映射颜色的。

综上所述,关键字实参c=point_numbers中,列表数字的位置决定了点的绘制顺序,而数值的大小决定了颜色的深浅。

反之,如果设置c=y_values,且第一个点到最后一个点的y值是从低到高变化,那么点的颜色将呈现由浅到深的渐变效果。

当使用c=range(50000)时,数据按从小到大排列,因此从第一个点到最后一个点的颜色由浅变深。由于点的位置变化有迹可循,颜色的变化也随之呈现规律性,整体视觉效果较为有序。

总结

本文到此结束,希望上述内容能为您提供帮助。欢迎持续关注本站,获取更多技术分享。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。