AtributeError: 'module' object has no attribute 'plt' - Seaborn

AtributeError: 'module' object has no attribute 'plt' - 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 NotebookPython 2.7.12 中。有什么想法吗?

sns.plt.show() 使用 seaborn 0.7.1 对我来说效果很好。可能是这在其他版本中有所不同。然而,如果你无论如何 import matplotlib.pyplot as plt 你也可以简单地使用 plt.show(),因为 sns.plt.show() 只是因为 pyplot 在 seaborn 命名空间中可用。

好吧,我 运行 在使用 Seaborn 0.8.1 时也遇到了这个问题。结果证明能够调用 sns.plt.show() 是一种不好的做法,而且它有效 was a bug which the developer fixed. Unfortunately, there are many tutorials out there 的事实仍然建议人们使用 sns.plt.show()。我是这样解决的:

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

从 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 仍然是对象,它通过其 [=47= 进行绘图]()方法.

This script 显示 sns.set() 的实际效果...如果您按照注释在脚本的不同位置之间交换 sns.set(),它会改变子图的外观。它们看起来像 Seaborn 绘图,但 Matplotlib 正在绘图。

Seaborn 当然有很多自己的绘图方法(如 sns.boxplot()、sns.violinplot() 等),但不再有方法 sns。 plt.plot().

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

import matplotlib.pyplot as plt

之上
import seaborn as sns

使用 plt.show() 而不是 sns.plt.show()

效果很好

确保您已更新 python shell 以及 IDE 之类的 Anaconda。 就像我在使用 relplot 和 catplot 的 Spyder(在 Anaconda 下托管)中不断出错一样,直到我更新了 Anaconda 和 seaborn (0.90)。 通过 Anaconda 命令行更新应该非常简单,就像我的情况一样。