Матрица рассеяния панд - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь построить матрицу рассеяния с полным кадром данных и его подмножеством.Я хочу построить как в одном, так и в поднаборе как наложение полного кадра данных в другом цвете.Я пытаюсь сделать это так:

ax1 = scatter_matrix(entireColumns,color='Blue', alpha=0.4, figsize=(20, 20), diagonal='hist')
ax2 = scatter_matrix(selectedPoints,color='Red', alpha=0.4, figsize=(20, 20), diagonal='hist',ax=ax1)

Но я получаю сообщение об ошибке:

     57             ax1 = scatter_matrix(entireColumns,color='Blue', alpha=0.4, figsize=(20, 20), diagonal='hist')#hist_kwds={'bins':5}#'kde#,color=colors
---> 58             ax2 = scatter_matrix(selectedPoints,color='Red', alpha=0.4, figsize=(20, 20), diagonal='hist',ax=ax1)
     59             plt.show()
     60             #parallel_coordinates(entireColumns, subsetColumns[0],color=('#556270', '#4ECDC4', '#C7F464'))

/usr/local/lib/python3.5/dist-packages/pandas/plotting/_misc.py in scatter_matrix(frame, alpha, figsize, ax, grid, diagonal, marker, density_kwds, hist_kwds, range_padding, **kwds)
     82     for i, a in zip(lrange(n), df.columns):
     83         for j, b in zip(lrange(n), df.columns):
---> 84             ax = axes[i, j]
     85 
     86             if i == j:

IndexError: too many indices for array

Без аргумента ax, оба печатаются:

enter image description here

1 Ответ

2 голосов
/ 15 марта 2019

Это очень похоже на ошибку в пандах. Вот как это должно выглядеть вместо этого:

В pandas/plotting/_tools.py перейти на строку 196 . Код там выглядит так:

if ax is None:
    fig = plt.figure(**fig_kw)
else:
    if is_list_like(ax):
        ax = _flatten(ax)
        if layout is not None:
            warnings.warn("When passing multiple axes, layout keyword is "
                          "ignored", UserWarning)
        if sharex or sharey:
            warnings.warn("When passing multiple axes, sharex and sharey "
                          "are ignored. These settings must be specified "
                          "when creating axes", UserWarning,
                          stacklevel=4)
        if len(ax) == naxes:
            fig = ax[0].get_figure()
            return fig, ax
        else:
            raise ValueError("The number of passed axes must be {0}, the "
                             "same as the output plot".format(naxes))

Заменить на

if ax is None:
    fig = plt.figure(**fig_kw)
else:
    if is_list_like(ax):
        fax = _flatten(ax)
        if layout is not None:
            warnings.warn("When passing multiple axes, layout keyword is "
                          "ignored", UserWarning)
        if sharex or sharey:
            warnings.warn("When passing multiple axes, sharex and sharey "
                          "are ignored. These settings must be specified "
                          "when creating axes", UserWarning,
                          stacklevel=4)
        if len(fax) == naxes:
            fig = fax[0].get_figure()
            if squeeze:
                return fig, fax
            else:
                return fig, ax
        else:
            raise ValueError("The number of passed axes must be {0}, the "
                             "same as the output plot".format(naxes))
...