AtributeError:'模块'对象没有属性' plt' - Seaborn

时间:2017-07-13 03:32:16

标签: python pandas matplotlib seaborn

我对这些图书馆很新,我在绘制图片时遇到了麻烦:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import random

df5 = pd.read_csv('../../../../datos/tiempos-exacto-variando-n-m0.csv', sep=', ', engine='python')
print(df5)
df5['n'] = df5['n'].apply(lambda x: x**2)
sns.jointplot(df5['n'], df5['tiempoTotal'], kind="reg")
sns.plt.show()

我得到了这个输出:

 n  m  tiempoTotal
0      1  0         2274
1      2  0         3370
2      3  0         5709
3      4  0         8959
4      5  0        13354
5      6  0        18503
6      7  0        26329
7      8  0        33859
8      9  0        41110
9     10  0        52710
10    11  0        64364
11    12  0        74142
12    13  0        81072
13    14  0        69332
14    15  0        71027
15    16  0        89721
16    17  0        85459
17    18  0        95217
18    19  0       119210
19    20  0       136888
20    21  0       131903
21    22  0       138395
22    23  0       151222
23    24  0       163542
24    25  0       177236
25    26  0       192475
26    27  0       240162
27    28  0       260701
28    29  0       235752
29    30  0       250835
..   ... ..          ...
580  581  0     88306854
581  582  0     89276420
582  583  0     87457875
583  584  0     90807004
584  585  0     87790003
585  586  0     89821530
586  587  0     89486585
587  588  0     88496901
588  589  0     89090661
589  590  0     89110803
590  591  0     90397942
591  592  0     94029839
592  593  0     92749859
593  594  0    105991135
594  595  0     95383921
595  596  0    105155207
596  597  0    114193414
597  598  0     98108892
598  599  0     97888966
599  600  0    103802453
600  601  0     97249346
601  602  0    101917488
602  603  0    104943847
603  604  0     98966140
604  605  0     97924262
605  606  0     97379587
606  607  0     97518808
607  608  0     99839892
608  609  0    100046492
609  610  0    103857464

[610 rows x 3 columns]
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-21-63146953b89d> in <module>()
      9 df5['n'] = df5['n'].apply(lambda x: x**2)
     10 sns.jointplot(df5['n'], df5['tiempoTotal'], kind="reg")
---> 11 sns.plt.show()

AttributeError: 'module' object has no attribute 'plt'

我在Jupyter Notebook Python 2.7.12中运行此操作。有什么想法吗?

5 个答案:

答案 0 :(得分:20)

使用seaborn 0.7.1

sns.plt.show()对我来说很好。可能是这在其他版本中有所不同。但是,如果你仍然import matplotlib.pyplot as plt,你也可以简单地使用plt.show(),因为sns.plt.show()只能工作,因为pyplot在seaborn名称空间内可用。

答案 1 :(得分:9)

嗯,我和Seaborn 0.8.1一起遇到了这个问题。结果是能够调用sns.plt.show()是不好的做法,而且开发人员修复了was a bug这个问题。不幸的是,有很多教程out there仍然建议人们使用sns.plt.show()。这就是我解决它的方法:

  1. 直接导入plt:import matplotlib.pyplot as plt
  2. 在绘制任何内容之前,请设置默认美学参数:sns.set() - 重要,因为否则您将无法获得Seaborn调色板。
  3. sns.plt的所有来电替换为plt

答案 2 :(得分:5)

截至Seaborn 0.8.1,sns.plt.plot()引发错误module 'seaborn' has no attribute 'plt'

sns.plot()也会引发错误;这些方法不在 Seaborn's API

删除“sns。”以留下“plt.plot()”(正如其他答案所示)确实有效,但这只是因为我们调用了 sns.set()方法在脚本的早期就位...即 Seaborn正在进行审美改变: Matplotlib仍然是对象,它通过其 plt.plot()进行绘图方法

This script 在行动中显示 sns.set() ...如果您按照评论并交换 sns.set()在脚本中的不同位置之间,它会更改子图的外观。它们看起来像Seaborn情节,但Matplotlib正在进行绘图。

Seaborn当然有一些自己的绘图方法(比如sns.boxplot(),sns.violinplot()等)但是不再有方法 sns.plt.plot()

答案 3 :(得分:2)

不能发表评论,因为声誉低(这里是新手)

我只是想确认我在Anaconda内使用Jupyter时遇到了同样的错误(2018年2月)。从here获得了代码,但发生了错误。事实证明我需要简单地添加

import matplotlib

之上
import seaborn as sns

使用plt.show()代替sns.plt.show()

工作正常

答案 4 :(得分:0)

确保您已经更新了Python外壳以及IDE(如Anaconda)。 就像我在Spyder(由Anaconda托管)中经常出现错误一样,直到出现问题,直到我更新了Anaconda以及seaborn(0.90)。 像我这样,通过Anaconda命令行进行更新应该非常简单。