上述代码报错FacetGrid.__init__() got an unexpected keyword argument 'ax',如何解决
时间: 2023-08-01 15:10:10 浏览: 217
这个错误是因为在`FacetGrid`初始化时,传入了一个不支持的参数`ax`。在旧版本的`seaborn`中,`FacetGrid`确实不支持`ax`参数。为了解决这个问题,可以使用`plt.subplots()`创建一个子图,并将其传递给`FacetGrid`的`ax`参数。修改代码如下:
```python
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
fig, axes = plt.subplots(3, 3, figsize=(15, 15))
z = 0
for i in range(3):
for j in range(3):
data1 = data.loc[:, [num_columns[z], 'y']]
f = pd.melt(data1, value_vars=num_columns[z], id_vars='y')
ax = axes[i, j] # 获取当前子图的对象
g = sns.FacetGrid(f, col='variable', hue='y', ax=ax)
g = g.map(sns.distplot, "value", bins=20)
z += 1
plt.tight_layout()
plt.show()
```
在这个修改后的代码中,我们使用`plt.subplots()`创建了一个包含多个子图的画布,然后通过`axes[i, j]`获取当前子图的对象,并将其传递给`FacetGrid`的`ax`参数。这样就解决了这个错误,并能够将生成的图展示在一张画布上。