Jos*_*ess 6 python data-visualization boxplot seaborn data-science
我正在尝试在seaborn中为4个箱线图创建一个4x4 FacetGrid,每个箱线图根据虹膜数据集中的虹膜种类分为3个箱线图。目前,我的代码如下所示:
sns.set(style="whitegrid")
iris_vis = sns.load_dataset("iris")
fig, axes = plt.subplots(2, 2)
ax = sns.boxplot(x="Species", y="SepalLengthCm", data=iris, orient='v',
ax=axes[0])
ax = sns.boxplot(x="Species", y="SepalWidthCm", data=iris, orient='v',
ax=axes[1])
ax = sns.boxplot(x="Species", y="PetalLengthCm", data=iris, orient='v',
ax=axes[2])
ax = sns.boxplot(x="Species", y="PetalWidthCm", data=iris, orient='v',
ax=axes[3])
Run Code Online (Sandbox Code Playgroud)
但是,我从翻译中收到此错误:
AttributeError: 'numpy.ndarray' object has no attribute 'boxplot'
Run Code Online (Sandbox Code Playgroud)
我对属性错误到底在哪里感到困惑。我需要改变什么?
不是对您的错误的直接答案,但如果您要使用seaborn,您应该尝试坚持使用“长”或“整洁”数据(https://seaborn.pydata.org/tutorial/data_struct.html#long-表单数据)。
我假设您的原始数据集很宽(观察的每个特征的列)。如果像这样融化数据集:
iris = iris.melt(id_vars='target')
print(iris.head())
target variable value
0 setosa sepal length (cm) 5.1
1 setosa sepal length (cm) 4.9
2 setosa sepal length (cm) 4.7
3 setosa sepal length (cm) 4.6
4 setosa sepal length (cm) 5.0
Run Code Online (Sandbox Code Playgroud)
您将能够使用catplotseabornkind='box'
sns.catplot(
data=iris, x='target', y='value',
col='variable', kind='box', col_wrap=2
)
Run Code Online (Sandbox Code Playgroud)
axes形状是(nrows, ncols). 在这种情况下是:
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x7f4267f425f8>,
<matplotlib.axes._subplots.AxesSubplot object at 0x7f4267f1bb38>],
[<matplotlib.axes._subplots.AxesSubplot object at 0x7f4267ec95c0>,
<matplotlib.axes._subplots.AxesSubplot object at 0x7f4267ef9080>]],
dtype=object)
Run Code Online (Sandbox Code Playgroud)
所以,当你这样做时,ax=axes[0]你得到的是一个数组而不是轴。尝试:
fig, axes = plt.subplots(2, 2)
ax = sns.boxplot(x="Species", y="SepalLengthCm", data=iris, orient='v',
ax=axes[0, 0])
ax = sns.boxplot(x="Species", y="SepalWidthCm", data=iris, orient='v',
ax=axes[0, 1])
ax = sns.boxplot(x="Species", y="PetalLengthCm", data=iris, orient='v',
ax=axes[1, 0])
ax = sns.boxplot(x="Species", y="PetalWidthCm", data=iris, orient='v',
ax=axes[1, 1])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17394 次 |
| 最近记录: |