首页 >后端开发 >Python教程 >如何在 Matplotlib 中为散点图创建离散颜色条?

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

DDD
DDD原创
2024-10-25 09:33:041100浏览

How to Create a Discrete Colorbar for Scatterplots in Matplotlib?

为 Matplotlib 散点图创建离散颜色条

生成具有离散颜色表示的散点图是数据可视化中的常见任务。这允许根据特定值为每个数据点分配唯一的颜色。

在 Matplotlib 中,可以使用 BoundaryNorm 作为散点图的标准化器来创建离散颜色条。这在使用整数标签值时特别有用,例如提供的示例:

plt.scatter(x, y, c=tag)

其中 tag 表示每个数据点的整数标签值。

默认设置 plt .colorbar(),通常显示连续范围的颜色。要创建离散颜色条,需要指定一组离散颜色。例如,要创建具有 20 种颜色的颜色条,可以使用 LinearSegmentedColormap.from_list 函数:

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)

这里,第一个颜色条目设置为灰色,可用于表示标签值0. cmaplist 中的其他条目定义剩余标签值的颜色。

要创建离散颜色条,还需要定义 bin 并标准化数据。 scipy.stats.binned_statistic 函数可用于计算每个数据点的单独排名并将它们分配给离散组。然后,colors.BoundaryNorm 可用于标准化数据并将其映射到所需的颜色条范围:

bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)

最后,可以将第二个轴添加到图形中以创建颜色条本身:

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')

这将创建一个具有指定配色方案的离散颜色条。可以通过修改边界和边界参数来调整离散颜色的数量。

通过执行以下步骤,可以在 Matplotlib 中生成离散颜色条,准确地表示数据点的基础整数标记值。

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

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