## 如何在 Matplotlib 中为散点图创建离散颜色条?

Patricia Arquette
发布: 2024-10-25 09:13:28
原创
863 人浏览过

## How to Create a Discrete Colorbar for Scatterplots in Matplotlib?

Matplotlib 离散颜色条

简介

Matplotlib 是一个流行的用于数据可视化的 Python 库。散点图是一种常见的绘图类型,用于显示数据点的二元分布。在某些情况下,需要用唯一的颜色来表示每个数据点。本文将演示如何在 Matplotlib 中为散点图创建离散颜色条,有效地将整数标签值映射到特定颜色。

使用 BoundaryNorm

要创建离散颜色条,请使用 BoundaryNorm作为散点图的标准化器。 BoundaryNorm 将数据范围划分为一组 bin,每个 bin 对应于一种特定颜色。以下 Python 代码演示了如何使用 BoundaryNorm 创建离散颜色条:

<code class="python">import numpy as np
import matplotlib as mpl
import matplotlib.pylab as plt

x = np.random.rand(20)  # Define the data
y = np.random.rand(20)  # Define the data
tag = np.random.randint(0, 20, 20)

cmap = plt.cm.jet  # Define the colormap
bounds = np.linspace(0, 20, 21)  # Define the bins for the colorbar
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)  # Create the BoundaryNorm

plt.scatter(x, y, c=tag, cmap=cmap, norm=norm)  # Create the scatterplot with the discrete colorbar

plt.colorbar()  # Display the colorbar</code>
登录后复制

此代码将创建一个包含 20 个随机生成的数据点的散点图,每个数据点分配一个从 0 到 19 的随机整数标签值。颜色栏将显示 20 种不同的颜色,每种颜色对应于特定的标签值。

自定义颜色栏

在某些情况下,可能需要自定义颜色栏中的颜色。这可以通过使用 LinearSegmentedColormap 类创建自定义颜色图来实现。以下 Python 代码演示了如何创建自定义颜色图,其中标记值 0 为灰色,标记值 1 到 20 为各种颜色:

<code class="python">cmaplist = [cmap(i) for i in range(cmap.N)]  # Extract all colors from the original colormap
cmaplist[0] = (.5, .5, .5, 1.0)  # Override the first color with gray

cmap = mpl.colors.LinearSegmentedColormap.from_list('Custom cmap', cmaplist, cmap.N)  # Create the custom colormap</code>
登录后复制

定义了自定义颜色图后,可以在散点图如下:

<code class="python">plt.scatter(x, y, c=tag, cmap=cmap, norm=norm)</code>
登录后复制

此代码将创建一个具有与之前相同的数据点的散点图,但颜色栏现在将显示自定义颜色,灰色表示标签值 0。

优化为了视觉清晰度

虽然使用具有大量颜色的离散颜色条可以提供广泛的选项,但考虑视觉清晰度很重要。大量不同的颜色可能会导致难以在视觉上区分特定值。在某些情况下,使用减少数量的颜色或将相似的标签值分组到颜色范围可能是有益的。最终,颜色和颜色范围的最佳选择将取决于具体数据和绘图的预期用途。

以上是## 如何在 Matplotlib 中为散点图创建离散颜色条?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!