如何在 python 中使用全局颜色条绘制多个散点图?

How to plot multiple scatter plots with a global colourbar in python?

我有一个数据集,我从中计算出一个值,我已将其用于绘图的颜色条中。见下文:

我想弄清楚如何组合它以便在其上绘制另一个参数(见下文:)

我希望将颜色添加到每个 classes 的不同形状中。

使用的部分代码如下:

plt.figure(figsize=[12,10])
plt.scatter(x_offset1, y_offset1, s=2, c=index, cmap='jet', marker='.')
plt.scatter(x_offset2, y_offset2, s=2, c=index, cmap='jet', marker='^')
plt.scatter(x_offset3, y_offset3, s=2, c=index, cmap='jet', marker='v')
plt.scatter(x_offset4, y_offset4, s=2, c=index, cmap='jet', marker='x')

plt.colorbar()

这给出了错误:

ValueError: 'c' argument has 289 elements, which is inconsistent with 'x' and 'y' with size 3.

我知道 289 个元素是整个数据集的颜色数据,大小 3 是第一个 class 图的大小,但我不确定如何绘制颜色值只有3分。

您要查找的是 index 列表的 切片 。切片是这样工作的:

slice = pizza[:2]

并采用 list[start:stop:step] 的格式。因此,如果您的颜色从列表中的 第一项 变为 第三项 ,那么您会:

plt.scatter(x_offset4, y_offset4, s=2, c=index[1:3], cmap='jet', marker='x')

假设 index 包含 ["a", "b", "c", "d"](仅作为示例),index[1:3] 将 return ["a", "b", "c", "d"]。这个操作并没有修改原来的列表,所以indexindex[1:3]之后还是["a", "b", "c", "d"]