代码之家  ›  专栏  ›  技术社区  ›  Frâncio Rodrigues

Seaborn和pd。scatter_matrix()打印颜色问题

  •  3
  • Frâncio Rodrigues  · 技术社区  · 7 年前

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

    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');
    

    enter image description here

    软件包版本:

    熊猫版本:0.20.1
    matplotlib版本:2.0.2

    2 回复  |  直到 7 年前
        1
  •  7
  •   Gayatri    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')
    

    这给了你:

    enter image description here

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

    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")
    

    enter image description here

        2
  •  2
  •   Sergey Bushmanov    7 年前

    违约 matplotlib 布景不太美观;但是,不要低估 matplotlib .

    最简单的

    plt.style.use('ggplot') # this is the trick
    
    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 = [10,10], s=50);
    

    enter image description here

    (可用样式的完整列表可通过访问 plt.style.available

    您可以根据需要进一步自定义绘图 matplotlibrc 文件可以找到使用它可以做什么的示例 here