首页  >  文章  >  后端开发  >  如何为 Matplotlib 散点图创建自定义离散颜色条?

如何为 Matplotlib 散点图创建自定义离散颜色条?

DDD
DDD原创
2024-10-24 18:36:29968浏览

How to Create a Custom Discrete Colorbar for a Matplotlib Scatterplot?

Matplotlib 散点图的自定义离散颜色条

在 Matplotlib 中,为散点图创建离散颜色条允许您使用基于独特颜色的数据点表示关于它们的整数标签值。为此,可以使用自定义离散颜色图和 BoundaryNorm。

让我们用随机 x 和 y 数据构建散点图,并分配 0 到 20 范围内的整数标签:

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

x = np.random.rand(20)
y = np.random.rand(20)
tag = np.random.randint(0, 20, 20)</code>

最初,使用默认设置,颜色条显示连续范围的颜色:

<code class="python">plt.scatter(x, y, c=tag)
plt.colorbar()</code>

要创建离散颜色条,我们将使用 BoundaryNorm 来定义颜色图的边界。我们还希望确保标签值 0 由灰色表示:

<code class="python">bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

cmaplist = [cmap(i) for i in range(cmap.N)]
cmaplist[0] = (.5, .5, .5, 1.0)

cmap = mpl.colors.LinearSegmentedColormap.from_list(
    'Custom cmap', cmaplist, cmap.N)</code>

带有离散颜色条的更新散点图如下所示:

<code class="python">scat = ax.scatter(x, y, c=tag, s=np.random.randint(100, 500, 20),
                  cmap=cmap, norm=norm)

# Add the discrete colorbar
ax2 = fig.add_axes([0.95, 0.1, 0.03, 0.8])
cb = plt.colorbar.ColorbarBase(ax2, cmap=cmap, norm=norm,
    spacing='proportional', ticks=bounds, boundaries=bounds, format='%1i')</code>

此方法提供散点图的明确定义的离散颜色条,其中每个标签值都由唯一的颜色表示,包括标签值 0 的灰色。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn