我尝试使用下面的代码绘制子图,但是我得到了'AttributeError: 'numpy.ndarray' object has no attribute 'boxplot'
。
但是更改plt.subplots(1,2)
会绘制带有indexerror的箱形图。
import matplotlib.pyplot as plt
import seaborn as sns
fig = plt.Figure(figsize=(10,5))
x = [i for i in range(100)]
fig , axes = plt.subplots(2,2)
for i in range(4):
sns.boxplot(x, ax=axes[i])
plt.show();
我希望可以绘制四个子图,但是抛出AttributeError
答案 0 :(得分:0)
情节中的问题:
range(4)
并使用axes[i]
进行了4次循环访问子图。由于以下原因,这是错误的:您的轴是2维的,因此需要2个索引才能访问它。每个维度的长度为2,因为您有2行和2列,因此沿每个轴只能使用的索引是0和1。对于前。 axes[0,1]
,axes[1,0]
等range(100)
解决方案是扩展/展平2D轴对象,然后直接在其上进行迭代,这将为您提供单独的子图,一次生成一个。子图的顺序将是逐行的。
完整的工作代码
import matplotlib.pyplot as plt
import seaborn as sns
x = range(100)
fig , axes = plt.subplots(2,2, figsize=(10,5))
for ax_ in axes.flatten():
sns.boxplot(x, ax=ax_)
plt.show()