我对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关键字是什么???
答案 0 :(得分:2)
简而言之,它以网格中的子图为目标。
例如,如果您有nrows=2
和ncols=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
关键字允许将散布矩阵绘制为给定的数字(即使恕我直言,但有点奇怪)。