[英]Getting error when plotting a figure with sublpots using axes in matplotlib
我试图使用下面的代码绘制子图。但是我得到了'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
您的情节中的几个问题:
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.