Seaborn 和 pd.scatter_matrix() 绘图颜色问题

Fra*_*ues 3 python data-visualization matplotlib pandas seaborn

我正在根据目标变量(植物物种)着色的 Iris 数据集从 DataFrame 制作 pd.scatter_matrix() 图。当我运行下面的代码时,我得到一个带有黑色、灰色和白色 (!) 彩色散射点的散射矩阵,这阻碍了可视化。网格似乎也不一致,显然只有靠近轴的图才能获得相应的网格。我想要一个遵循 sns 默认调色板(蓝色、绿色、红色)的漂亮网格和散点矩阵。

为什么 seaborn 绘图样式和 pd.scatter_matrix() 的使用强制执行不同的(可怕的!)调色板,然后是散点图和不一致网格线的默认值?如何解决这些可视化问题?

我已经将 seaborn 更新到了一个相当新的版本(2017 年 7 月的 0.8)。还尝试了非弃用版本的 scatter_matrix plot for pandas pd.plotting.scatter_matrix() 并且没有运气。如果我使用 'ggplot' 样式,则散点图的调色板是正确的,但网格仍然不一致。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('seaborn')
from sklearn import datasets

iris = datasets.load_iris()
X = iris.data
y = iris.target
df = pd.DataFrame(X, columns = iris.feature_names)

pd.scatter_matrix(df, c=y, figsize = [8,8],
                      s=80, marker = 'D');
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

包版本:

熊猫版本:0.20.1
matplotlib 版本:2.0.2
seaborn 版本:0.8.0

Gay*_*tri 7

我不确定这是否能回答您的问题,但您可以使用配对图。让我知道..

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

from sklearn import datasets

iris = datasets.load_iris()
X = iris.data
y = iris.target
df = pd.DataFrame(X, columns = iris.feature_names)

pd.plotting.scatter_matrix(df, c=y, figsize = [8,8],
                      s=80, marker = 'D');
df['y'] = y

sns.pairplot(df,hue='y')
Run Code Online (Sandbox Code Playgroud)

这给了你:

在此处输入图片说明

如果你想避免可视化的最后一行,那么:

import seaborn as sns
sns.set(style="ticks", color_codes=True)
iris = sns.load_dataset("iris")
%matplotlib inline

iris = sns.load_dataset("iris")
sns.pairplot(iris, hue="species")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明