pandas scatter_matrix函数中'ax'关键字的用途

时间:2013-12-31 06:53:24

标签: python matplotlib plot pandas scatter-plot

我对pandas scatter_matrix 函数中' ax '关键字的含义感到困惑:

pd.scatter_matrix(frame,alpha = 0.5,figsize = None, ax = None ,grid = False,diagonal ='hist',marker ='。',density_kwds = {},hist_kwds = {},** kwds)

ax关键字的docstring中给出的唯一线索对我来说太神秘了:

ax : Matplotlib axis object

我查看了scatter_matrix函数的pandas代码,并且ax变量包含在以下matplotlib子图调用中:

fig, axes = plt.subplots(nrows=n, ncols=n, figsize=figsize, ax=ax,
                         squeeze=False)

但是,对于我的生活,我在matplotlib子图中找不到任何对'ax'关键字的引用!

任何人都可以告诉我这个ax关键字是什么???

2 个答案:

答案 0 :(得分:2)

简而言之,它以网格中的子图为目标。

例如,如果您有nrows=2ncols=2,则ax允许您通过传递ax=axes[0,0](左上角)或{{1}来绘制特定轴(右下)等等。

创建子图时,您会收到ax=axes[1,1]变量。您可以稍后使用上面axes变量的元素绘制(或子图)。

请看一下本页的“定位不同的子图”部分:http://pandas.pydata.org/pandas-docs/dev/visualization.html#targeting-different-subplots

我希望这会有所帮助。

答案 1 :(得分:2)

这里很棘手。查看pandas scatter_matrix的来源时,您会在docstring之后找到这一行:

fig, axes = _subplots(nrows=n, ncols=n, figsize=figsize, ax=ax, squeeze=False)

因此,在内部,使用内部_subplots方法创建新的图形,轴组合。这与matplotlibs subplots命令密切相关,但略有不同。此处,还提供了ax关键字。如果你查看相应的来源(pandas.tools.plotting._subplots),你会发现这些行:

if ax is None:
    fig = plt.figure(**fig_kw)
else:
    fig = ax.get_figure()
    fig.clear()

因此,如果您提供了一个轴对象(例如使用matplotlibs subplots命令创建),则pandas scatter_matrix会抓取相应的(matplolib)图形对象并删除其内容。然后在此图形对象中创建一个新的子图网格。

总而言之,ax关键字允许将散布矩阵绘制为给定的数字(即使恕我直言,但有点奇怪)。