Изменить цвета на графике рассеяния - PullRequest
0 голосов
/ 27 апреля 2019

Не удалось найти ответ на мой вопрос.

У меня есть следующий код, который генерирует график рассеяния ниже.

scatter_matrix(iris_ds)
plt.show()

enter image description here

Однако я не могу изменить цвет точек на графиках, чтобы различать точки данных.

Есть предложения?

Редактировать: для ясности - в каждом окне точечной диаграммы есть 3 набора точек данных. Мне было интересно, если есть способ:

  • Изменить цвет с синего?
  • Изменить цвета в зависимости от того, где на графиках появляются точки данных?

1 Ответ

2 голосов
/ 27 апреля 2019

Если вы посмотрите на источник pd.plotting.scatter_matrix :

def scatter_matrix(frame, alpha=0.5, figsize=None, ax=None,
               grid=False,
               diagonal='hist', marker='.', density_kwds=None,
               hist_kwds=None, range_padding=0.05, **kwds):  # <---

       [...]

            # Deal with the diagonal by drawing a histogram there.
            if diagonal == 'hist':
               ax.hist(values, **hist_kwds)   # <---  


       [...]

       else:
           common = (mask[a] & mask[b]).values

           ax.scatter(df[b][common], df[a][common],
                       marker=marker, alpha=alpha, **kwds) # <---

вы видите, что функция берет **kwds и передает их ax.scatter

Итак, вы можете либо напрямую подавать цвета:

colors = iris['species'].replace({'setosa':'red', 'virginica': 'green', 'versicolor':'blue'})   

pd.plotting.scatter_matrix(iris, c=colors);

или вы конвертируете виды в числа и используете цветовую карту:

colors = iris['species'].replace({'setosa':1, 'virginica': 2, 'versicolor':3})

pd.plotting.scatter_matrix(iris, c=colors, cmap='viridis');

далее, функция принимает density_kwds и hist_kwds и передает их в ax.plot и ax.hist, соответственно. Таким образом, вы можете изменить цвет гистограмм, передав словарь. То же самое для kdeplots:

pd.plotting.scatter_matrix(iris, hist_kwds={'color':'red'})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...