繁体   English   中英

使用Matplotlib中的轴绘制带有子点的图形时出现错误

[英]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]
  • 正如@DavidG指出的那样,您不需要列表理解。 您可以直接使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM