Python 中具有 4 个面板 (2 x 2) 的 Seaborn 直方图

O.r*_*rka 3 python plot matplotlib histogram seaborn

我正在尝试使用sklearn.datasets.load_iris和重新创建此图像seabornfig, ax = plt.subplots()我真的很喜欢先执行然后使用seaborn's属性的想法ax=ax。我不知道如何重新创建这个情节:在此输入图像描述

我检查了 stackoverflow 并发现了这个,但它覆盖了它们How To Plot Multiple Histograms On Same Plot With Seaborn

这是我的代码和情节:

# Iris Dataset
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

%matplotlib inline 

DF_data = pd.DataFrame(load_iris().data, 
                       columns = load_iris().feature_names, 
                       index = ["iris_%d" % i for i in range(load_iris().data.shape[0])])

Se_targets = pd.Series(load_iris().target, 
                       index = ["iris_%d" % i for i in range(load_iris().data.shape[0])], 
                       name = "Targets")

#Visualizing Iris Data
D_targets = {0: 'Iris-Setosa',
            1: 'Iris-Versicolor',
            2: 'Iris-Virgnica'}

D_features = {0: 'sepal length [cm]',
              1: 'sepal width [cm]',
              2: 'petal length [cm]',
              3: 'petal width [cm]'}

fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(8, 6))

idx_feature = 0

#Plot on 2 x 2 ax object

for i in range(ax.shape[0]):
    for j in range(0, ax.shape[1]):
        for idx_target, label_target  in list(D_targets.items()):
            sns.distplot(DF_data.as_matrix()[Se_targets==idx_target, idx_feature],
                         label=D_features[idx_feature],
                         kde=False,
                         bins=10,
                         ax=ax[i][j])        
        idx_feature += 1 

plt.legend(loc='upper right', fancybox=True, fontsize=8)

plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

我的情节看起来很糟糕:

在此输入图像描述

更新:

为了回应@Cel 的回答,我已经实现了这个图,但我无法修复标签并使图周围的线条变暗。

在此输入图像描述

mwa*_*kom 8

或者你可以这样做

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset("iris")
iris_long = pd.melt(iris, "species", var_name="measurement")
g = sns.FacetGrid(iris_long, hue="species", col="measurement", col_wrap=2, sharex=False)
g.map(plt.hist, "value", alpha=.4)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述