Python Matplotlib颜色映射(cmap)与数据映射(c)详解
本文详解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)时,数据按从小到大排列,因此从第一个点到最后一个点的颜色由浅变深。由于点的位置变化有迹可循,颜色的变化也随之呈现规律性,整体视觉效果较为有序。

总结
本文到此结束,希望上述内容能为您提供帮助。欢迎持续关注本站,获取更多技术分享。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









