模块如何相互了解

时间:2016-10-08 12:15:49

标签: python python-2.7

我可以使用以下代码绘制CSV文件中的数据:

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('test0.csv',delimiter='; ', engine='python')
df.plot(x='Column1', y='Column3')
plt.show()

但我不明白一件事。 plt.show()如何了解df?我会更有意义地看到某个地方,如:

plt = something(df)

我必须提到我只是在学习Python。

3 个答案:

答案 0 :(得分:3)

Matplotlib有两个"接口":Matlab-style interfaceobject-oriented interface

使用Matlab风格的界面进行绘图如下所示:

import matplotlib.pyplot as plt
plt.plot(x, y)
plt.show()

plt.plot的调用会隐式创建一个图形和一个要绘制的轴。 对plt.show的调用显示所有数字。

Pandas通过在调用df.plot(x='Column1', y='Column3')时为您隐式创建一个图形和轴来支持Matlab风格的界面。

在这种情况下,Pandas还可以使用更灵活的面向对象的界面 你的代码看起来像这样:

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('test0.csv',delimiter='; ', engine='python')
fig, ax = plt.subplots()
df.plot(ax=ax, x='Column1', y='Column3')
plt.show()

此处明确创建轴ax并将其传递给df.plot,然后将其传递给ax.plot 在引擎盖下拨打df.plot

面向对象的界面有用的一种情况是您希望使用的情况 fig, ax = plt.subplots() df.plot(ax=ax, x='Column1', y='Column3') df2.plot(ax=ax, x='Column2', y='Column4') plt.show() 不止一次,同时仍然画在同一轴上:

A=[rand(1) 2 -1 rand(1);  
   rand(1) 3 rand(1) 0;  
   rand(1) -5 -2 5;  
   9  0   0 rand(1)];

答案 1 :(得分:2)

来自plotting上的pandas文档:

  

Series和DataFrame上的plot方法只是一个简单的包装器   周围:meth:plt.plot() <matplotlib.axes.Axes.plot>

因此,df.plot方法是对plt.plot的高级调用(使用包装器),之后调用plt.show将只是:< / p>

  

显示所有数字并阻止,直到数字已关闭

与用plt.plot绘制的所有数字一样。

因此,您没有像预期的那样看到plt = something(df),因为matpotlib.pyplot.plotdf.plot在场景之后被称为

答案 2 :(得分:1)

根据http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.showplt.show()本身并不了解数据,您需要将数据作为参数传递。

根据用途http://pandas.pydata.org/pandas-docs/stable/visualization.html#basic-plotting-plot,您所看到的应该是大熊猫图谱。

希望这能解决你的问题。