在散点图中强制使用灰度图例颜色
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")
会给这张图
我想准备一个具有多个重叠散点图的灰度图。我的代码的简化版本如下:
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")
会给这张图