use*_*664 6 python function matplotlib subplot
在使用子图和单个图时,我在matplotlib中对函数的微妙差异(就是它们被称为是什么?)感到非常困惑.
举个例子:
如果我想在单个数字上更改xlim,我会这样做: plt.xlim()
如果我想在子图上更改xlim,我会这样做: ax.set_xlim()
为什么是这样?任何人都可以将我发送到解释惯例的网站吗?这是一个简单的例子,因为我知道它们是不同的,以及如何,但有许多我不知道的,我很难搞清楚 - 例如:
1)将集合应用于子图:ax.collection(collection_name).你是如何为一个人物做的?
2)将刻度标签应用于子图:ax.xaxis.ticklabels(tick_labels).你如何为一个人物做这个?
对不起,这是一个新问题!
tac*_*ell 10
您正在点击pyplot /状态机界面和OO界面之间的差异.请参阅哪种绘图方法:matplotlib或pylab?以及如何将pyplot函数附加到图形实例?用于更长的解释.
有关更长时间的教程,请参阅Matplotlib剖析
关于mpl中的对象层也存在一些混淆:
Figure在整个数字.跟踪所有儿童轴,一些"特殊"艺术家(标题,图例等)和画布.不要过于担心画布,它是至关重要的,因为实际上绘制的对象可以让你获得你的情节,但作为用户,它对你来说或多或少是不可见的.
Axes这就是您所说的"情节",它是具有数据空间的图像区域.它有2或3个轴对象(x,y,有时是z),并且包含一大堆艺术家.
Axis这些是像对象一样的数字线.他们负责设置图表限制并生成刻度和刻度标签.他们有一个Locator和一个Formatter用于整理刻度线的位置以及如何生成标签
Artist基本上你可以在图中看到的一切是一个艺术家(甚至Figure,Axes和Axis对象).这包括Text对象,Line2D对象,collection对象,Patch对象......(你明白了).渲染图形时,所有艺术家都会(以递归方式)绘制到画布上.给定的艺术家只能在一个Axes.
pylab这基本上只是一个名称空间,一大堆东西(numpy,pyplot,mlab(与matplotlib一起发货))被批量导入via from foo import *.这对于交互式工作来说非常方便,但是你不应该使用脚本.这个的最初目标
pyplot这是一个状态机层,可以跟踪所有打开的数字,并具有"当前数字"(plt.gcf())和"当前轴"(plt.gca())的概念.大多数函数pyplot都是围绕调用OO层(plt.foo()- > plt.gca().foo()或plt.gcf().foo()取决于函数)的非常薄(按程序生成)包装器.同样,这可能很方便,但很快就会变得有限/混乱/全局状态导致麻烦.
这是实际管理艺术家创作的层(例如,ax.plot(...)创建一堆Line2D对象).对于编写脚本或任何您打算重用的东西,这是您应该尝试使用的层.要编写自己的绘图函数,我建议编写如下函数:
def my_plotting_fun(ax, data, data, ...):
ax.do_stuff
return list_of_artists_added
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2834 次 |
| 最近记录: |