Как использовать цветовую палитру Seaborn по столбцам в plt.subplots? - PullRequest
2 голосов
/ 21 мая 2019

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

Я делаю анализ Design of Experiment на Python, и у меня возникают проблемы с построением графикаэффекты взаимодействия с Seaborn.

Я хочу, чтобы цветовые пары в каждом ряду были одинаковыми, но я не могу найти способ сделать это с помощью методов matplotlib или seaborn.Я попробовал предложения 'with sns.color_palette ()' и 'ax.set_prop_cycle ()' из других вопросов, но на рисунке показано то же, что и без них.

При этом создается кадр данных

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import itertools as it

encoded_inputs = list( it.product([-1, 1], [-1, 1], [-1, 1]) )
doe = pd.DataFrame(encoded_inputs, columns=['x1', 'x2', 'x3'])
doe['y1'] = doe.apply( lambda z : sum([ np.random.rand()*z["x%d"%(i)]+0.01*(0.5-np.random.rand()) for i in range(1,3) ]), axis=1)
print(doe)

При этом создается рисунок с подзадачами:

factors = ['x1', 'x2', 'x3']
f, axs = plt.subplots(3, 3, figsize=(12, 12))

for i in range(len(factors)):
    for j in range(len(factors)):
        yy = factors[j]

        with sns.color_palette('Paired'):
            sns.regplot(x=factors[i], y='y1', data=doe[doe[yy]==-1], label='-1', x_estimator=np.mean, ci=None, truncate=True, ax=axs[j,i])
            sns.regplot(x=factors[i], y='y1', data=doe[doe[yy]==1], label='1', x_estimator=np.mean, ci=None, truncate=True, ax=axs[j,i])

        axs[j,i].legend(title=yy,facecolor='white')

        if i==j:
            axs[j,i].clear()

for ax in axs.flat:
    ax.set_ylabel(None)

plt.tight_layout()
plt.show()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...