【问题标题】:Matplotlib AttributeError: 'NoneType' object has no attribute 'seq'Matplotlib AttributeError:“NoneType”对象没有属性“seq”
【发布时间】:2018-03-20 14:21:19
【问题描述】:

我正在尝试绘制条形图并在每个条形上附加标签。我可以使用以下代码绘制图表:

y = np.array([ 0.06590843,  0.10032079,  0.03295421,  0.12277632,  0.04257801,
        0.00641586,  0.05774278,  0.15106445,  0.13852435,  0.03732867,
        0.05570137,  0.11548556,  0.22834646,  0.09477982,  0.12569262,
        0.09711286,  0.05920093,  0.03295421,  0.11286089,  0.05453485,
        0.08486439,  0.09857101,  0.00641586])
x= ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '20', '40', '60', '80', '100', '300', '500', '700', '900', '1000', '1300', '1512']
plt.figure(figsize = (16, 2))
plt.bar(range(23), y)

但是当我尝试用这个添加标签时:

plt.xticks(x)

我收到以下错误:

AttributeError: 'NoneType' object has no attribute 'seq'

如果我这样做:

plt.bar(x, y)

x 标签变得混乱,我得到一个像这样的数字:

我在后端使用 %matplotlib inline。

【问题讨论】:

    标签: matplotlib bar-chart


    【解决方案1】:

    我让它与 plt.xticks(x) 的这个修改一起工作

    plt.xticks(range(23), x)
    

    【讨论】:

      【解决方案2】:

      您的第一个代码的问题是您没有指定刻度的位置。如果你查看 Matplotlib 的文档,你会看到 xticks 函数的参数是:

      matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs)
      

      ticks : array_like 应放置刻度的位置列表。您可以传递一个空列表来禁用 xticks。

      标签:array_like,可选 要放置在给定位置的显式标签列表。

      **kwargs 文本属性可用于控制标签的外观。

      (来源:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.xticks.html

      因此,在您的原始帖子中,您错误地调用了该函数,而不是在您提供刻度位置和标签的第二个帖子中。

      【讨论】:

        【解决方案3】:

        在您的特定情况下,如果 x 是浮点数,则不需要刻度。

        x = np.array([1., 2., ...]) 
        

        然后简单地使用plt.bar(x,y)

        【讨论】:

          猜你喜欢
          • 2019-12-04
          • 2019-01-01
          • 2021-12-26
          • 2019-07-23
          • 2018-05-13
          • 2020-09-07
          • 2017-05-03
          • 2023-03-16
          • 2018-07-14
          相关资源
          最近更新 更多