Я хочу создать диаграмму рассеяния в python, окрашенную категориальной переменной, которая обрабатывает и отображает отсутствующие значения для категориальной цветовой переменной.
Используя набор данных радужной оболочки в качестве примера
import seaborn as sns
iris = sns.load_dataset('iris')
Сиборн может рисовать по цвету:
sns.lmplot('sepal_length', 'sepal_width', hue='species', data=iris, fit_reg=False)
Немного поработав, то может и matplotlib (взято из этого ответа )
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
для одного вида, морские корни не будут отображать эти точки, и 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]))