web-dev-qa-db-ja.com

AttributeError: 'module'オブジェクトには属性 'plot'がありません-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で実行しています。何か案は?

17
jscherman

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()を呼び出すことができるのは悪い習慣であり、それが機能していたという事実 バグだった は開発者が修正しました。残念ながら、多くのチュートリアルがあります out there まだsns.plt.show()を使用することをお勧めします。これは私がそれを解決した方法です:

  1. Pltを直接インポート:_import matplotlib.pyplot as plt_
  2. 何かをプロットする前に、デフォルトの美的パラメータを設定します:sns.set()-重要です。そうしないと、Seabornパレットを取得できません。
  3. _sns.plt_へのすべての呼び出しをpltに置き換えます
10
autonomy

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()in action ...コメントに従って、スクリプト内の異なる場所間でsns.set()を交換すると、サブプロットの外観を変更します。 Seabornプロットのように見えますが、Matplotlibはプロットを行っています。

Seabornには、独自のプロットメソッド(sns.boxplot()、sns.violinplot()など)がもちろんありますが、メソッドはありませんsns.plt.plot()

5
olisteadman

評判が悪いためコメントできない(初心者はこちら)

Anaconda内でJupyterを使用して同じエラーが発生したことを確認したいだけです(2018年2月)。 here からコードを取得しましたが、エラーが発生しました。単純に追加する必要があることがわかります

_import matplotlib
_

の上に

_import seaborn as sns
_

plt.show()の代わりにsns.plt.show()を使用して正常に動作します

AnacondaのようなIDEのシェルもpythonシェル)を更新したことを確認してください。 。Anacondaコマンドラインを使用した更新は、私の場合のように非常に簡単です。

0
Denis Mwaniki