在散点图中强制使用灰度图例颜色

Force grayscale legend colors in scatterplot

我想准备一个具有多个重叠散点图的灰度图。我的代码的简化版本如下:

for object in list_of_objects:
    plt.scatter(object.x,object.y,marker=object.marker,label=object.label)
plt.legend()
plt.show()

问题是图例以非灰度颜色出现,那么有什么办法可以强制它使用灰度颜色吗? (即每个对象的数据有不同的灰度颜色)

Matplotlib 如果您需要使用 matplotlib,那么这里有一个如何实现此目的的示例。假设您要在此处添加 5 个组。

import numpy as np
import matplotlib.pyplot as plt

x = np.random.rand(100)
y = np.random.rand(100)
groups = [1, 2, 3, 4, 5] * 20

plt.scatter(x, y, c=groups, cmap='Greys')
plt.colorbar(ticks=[1, 2, 3, 4, 5])
plt.show()

输出图:

Seaborn 如果你能够使用seaborn,那就更简单了...... 您可以使用 palette = 'gray'hue=<your group> 给它不同的灰色阴影。

示例代码:

tips = sns.load_dataset("tips")
sns.scatterplot(data=tips, x="total_bill", y="tip", hue="size", palette="gray")

会给这张图