大家好,我正在尝试创建一个散点图,其中每个X,Y变量组合都属于特定类别,因此在散点图中,我希望每个类别都有不同的颜色
我能够按照下面的代码实现这一点。然而,我在绘图上看到的色条如果有类别名称而不是数字值,则更有意义
任何指点都将不胜感激
我知道seaborn可能会使它更容易,但我特别寻找一个基于matplotlib的解决方案
import numpy
import pandas
import matplotlib.pyplot as plt
numpy.random.seed(0)
N = 50
_categories= ['A', 'B', 'C', 'D']
df = pandas.DataFrame({
'VarX': numpy.random.uniform(low=130, high=200, size=N),
'VarY': numpy.random.uniform(low=30, high=100, size=N),
'Category': numpy.random.choice(_categories, size=N)
})
colorMap = {}
k = 0
for i in _categories:
colorMap[_categories[k]] = k
k+=1
plt.figure(figsize=(15,5))
plt.scatter(df.VarX, df.VarY, c= df.Category.map(colorMap), cmap='viridis')
plt.colorbar()
plt.show()
此代码生成
首先,我假设您想要一个“离散”颜色映射,所以一种方法是:
这是一个方便的函数,用于获取ListedColormap,即从默认颜色映射“viridis”中采样的每个类别的颜色列表。接下来,只需将该颜色贴图传递到散点图,应用颜色条,然后相应地设置刻度:
注意:这个答案深受启发from this answer
来自here(粘贴在下面)的答案可能就是您正在寻找的答案。关键可能是使用类似
groups = df.groupby('label')
的东西,然后绘制df的每个组/类别相关问题 更多 >
编程相关推荐