Pandas数据框错误:matplotlib.axes._subplots.AxesSubplot

20
import pandas as pd
import matplotlib.pyplot as plt

file = 'd:\\a\\pandas\\test.xlsx'
data = pd.ExcelFile(file)
df1 = data.parse('Link')
df2 = df1[['dataFor', 'total']]
df2

返回:

在此输入图片描述

 print (type(df2))
告诉我
class 'pandas.core.frame.DataFrame'

尝试中

df2.plot(kind='line')

返回

matplotlib.axes._subplots.AxesSubplot at 0xe4241d0

可能是环境的原因吗?

Jupyter notebook > Help > About

The version of the notebook server is 4.2.3 and is running on:
Python 3.5.2 |Anaconda 4.2.0 (32-bit)| (default, Jul  5 2016, 11:45:57) [MSC    v.1900 32 bit (Intel)]

问题出在哪里?Matplotlib仍然是标准,还是初学者应该选择Bokeh或两者皆可?


1
这一切都很好,按预期工作。问题到底是什么?你期望发生什么,实际上又发生了什么? - ImportanceOfBeingErnest
1
我在Jupyter Notebook中收到了'matplotlib.axes._subplots.AxesSubplot at 0xe4241d0'的消息,但没有图形显示。 - vbd
我不建议使用bokeh,除非你已经知道你只会制作网页图形。 - ImportanceOfBeingErnest
3个回答

51

如果您想要在页面内看到图表,请使用

%matplotlib inline
在头部(导入之前)。
如果您想在窗口中显示图形,请添加以下行:
plt.show()

在最后(确保您已在标题中导入import matplotlib.pyplot as plt )。


1
错过了 plt.show()... 给自己留个便条,永远不要在周五下午晚些时候发布... - vbd
2
对于任何想知道为什么missingno库在jupyter中无法显示图形的人,请在单个单元格中使用%matplotlib inline。(感谢这个解答,我找到了答案) - stormfield
在jupyter中,将%matplotlib inline放在res.plot()之前而不是import之前。 - temple

4
## importing libraries
## notice to import %matplotlib inline to plot within notebook
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import datetime


## making a DF like yours
df2 = pd.DataFrame([], columns=['dataFor','total'])
df2['dataFor'] = [datetime.datetime(2013, 9, 11),datetime.datetime(2013, 9, 12),datetime.datetime(2013, 9, 13),datetime.datetime(2013, 9, 14),datetime.datetime(2013, 9, 15),datetime.datetime(2013, 9, 16),datetime.datetime(2013, 9, 17)]
df2['total'] = [11,15,17,18,19,20,21]

## notice date are datetimes objects and not strings
df2.plot(kind='line')

输出:

在这里输入图片描述

如果想要改善图形布局:

plt.figure(figsize=(20,10))
plt.plot(df2.dataFor, df2.total, linewidth=5)
plt.plot(df2.dataFor, df2.total, '*', markersize=20, color='red')
plt.xticks(fontsize=20, fontweight='bold',rotation=90)
plt.yticks(fontsize=20, fontweight='bold')
plt.xlabel('Dates',fontsize=20, fontweight='bold')
plt.ylabel('Total Count',fontsize=20, fontweight='bold')
plt.title('Counts per time',fontsize=20, fontweight='bold')
plt.tight_layout()

enter image description here


0

我在绘制图表时遇到了同样的问题,但是通过运行导入语句后跟随 %matplotlib 命令解决了这个问题。我认为我正在使用最新版本。我尝试过 " %matplotlib inline ",但由于某些原因,在我的环境中它无法正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接