我对这些图书馆很新,我在绘制图片时遇到了麻烦:
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
中运行此操作。有什么想法吗?
答案 0 :(得分:20)
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()
。这就是我解决它的方法:
import matplotlib.pyplot as plt
sns.set()
- 重要,因为否则您将无法获得Seaborn调色板。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命令行进行更新应该非常简单。