我可以使用以下代码绘制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。
答案 0 :(得分:3)
Matplotlib有两个"接口":Matlab-style interface和object-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.plot
被df.plot
在场景之后被称为。
答案 2 :(得分:1)
根据http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.show,plt.show()
本身并不了解数据,您需要将数据作为参数传递。
根据用途http://pandas.pydata.org/pandas-docs/stable/visualization.html#basic-plotting-plot,您所看到的应该是大熊猫图谱。
希望这能解决你的问题。