可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
What is the difference between the Axes.plot()
and pyplot.plot()
methods? Does one use another as a subroutine?
It seems that my options for plotting are
line = plt.plot(data)
or
ax = plt.axes() line = ax.plot(data)
or even
fig = plt.figure() ax = fig.add_axes([0,0,1,1]) line = ax.plot(data)
Are there situations where it is preferable to use one over the other?
回答1:
For drawing a single plot, the best practice is probably
fig = plt.figure() plt.plot(data) fig.show()
Now, lets take a look in to 3 examples from the queston and explain what they do.
Takes the current figure and axes (if none exists it will create a new one) and plot into them.
line = plt.plot(data)
In your case, the behavior is same as before with explicitly stating the axes for plot.
ax = plt.axes() line = ax.plot(data)
This approach of using ax.plot(...)
is a must, if you want to plot into multiple axes (possibly in one figure). For example when using a subplots.
Explicitly creates new figure - you will not add anything to previous one. Explicitly creates a new axes with given rectangle shape and the rest is the same as with 2.
fig = plt.figure() ax = fig.add_axes([0,0,1,1]) line = ax.plot(data)
possible problem using figure.add_axes
is that it may add a new axes object to the figure, which will overlay the first one (or others). This happens if the requested size does not match the existing ones.
回答2:
There is essentially no difference. plt.plot
will at some point (after making sure that there is a figure and an axes available to plot to) call the plot function from that axes instance.
So the main difference is rather at the user's side:
- do you want to use the Matlab-like state machine approach, which may save some lines of code for simple plotting tasks? Then use
pyplot
. - do you want to have full control over the plotting using the more pythonic object oriented approach? Then use objects like axes explicitely.
You may want to read the matplotlib usage guide.