matplotlib Axes.plot() vs pyplot.plot()

匿名 (未验证) 提交于 2019-12-03 08:48:34

问题:

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.

  1. Takes the current figure and axes (if none exists it will create a new one) and plot into them.

    line = plt.plot(data) 
  2. 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.

  3. 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.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!