【发布时间】:2020-09-16 21:42:02
【问题描述】:
我想在 python 中制作一个由分类变量着色的散点图,该变量处理和绘制分类颜色变量的缺失值。
以鸢尾花数据集为例
import seaborn as sns
iris = sns.load_dataset('iris')
Seaborn 可以按颜色绘制:
sns.lmplot('sepal_length', 'sepal_width', hue='species', data=iris, fit_reg=False)
matplotlib 可以做更多的工作(取自this answer)
colours = {'setosa':'skyblue', 'versicolor':'orangered', 'virginica':'forestgreen'}
plt.scatter(iris.sepal_length, iris.sepal_width, c=iris.species.apply(lambda x:colours[x]))
但两者都不会绘制缺失的颜色。如果我们将物种变量(我们用来为绘图着色)设置为 np.nan 一个物种,seaborn 不会绘制这些点,matplotlib 也不会绘制任何东西。
iris.species[iris.species == 'setosa'] = np.nan
sns.lmplot('sepal_length', 'sepal_width', hue='species', data=iris, fit_reg=False)
iris.plot('sepal_length', 'sepal_width', kind="scatter", c=iris.species.apply(lambda x:colours[x]))
【问题讨论】:
标签: matplotlib plot seaborn