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

jsc*_*man 19 python matplotlib pandas 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()
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

 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'
Run Code Online (Sandbox Code Playgroud)

我在我这运行Jupyter Notebook使用Python 2.7.12.有任何想法吗?

Imp*_*est 24

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

  • 使用简单的`plt.show()`工作.非常感谢! (3认同)

aut*_*omy 12

好吧,我和Seaborn 0.8.1一起遇到了这个问题.结果是能够调用sns.plt.show()是不好的做法,它工作的事实开发人员修复的错误.不幸的是,有很多教程在那里仍然建议之一来使用sns.plt.show().这就是我解决它的方式:

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


oli*_*man 5

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

sns.plot()也会引起错误; 这些方法不在Seaborn的API中.

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

该脚本显示sns.set()在行动......如果你遵循的意见和交换sns.set()在脚本不同地点之间,它改变了次要情节的外观.它们看起来像Seaborn情节,但Matplotlib正在进行绘图.

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