Пустое пространство при построении нескольких закрашенных контуров с использованием kdeplots из seaborn - PullRequest
0 голосов
/ 02 мая 2018

Я написал функцию python для построения ряда заполненных контуров, получая данные из некоторых столбцов набора данных, составленных из списка массивов с использованием функции kdeplot, равной seaborn. Код следующий:

import matplotlib.pyplot as plt
import seaborn as sns

def kdeplots_figure(dataset):
    cols = int((len(dataset)-2)/2)
    figure, axes = plt.subplots(1, cols, figsize=(15,6), sharey=True)
    f = 2
    for i in range (len(axes)):
        sns.set_style("white")
        axes[i].set_title(" Cluster {0}".format(i), fontsize = 16)
        axes[i].set_ylabel('Y Axis', fontsize = 14)
        axes[i].set_xlabel('X Axis', fontsize = 14)
        axes[i].set_xlim([95,130])
        axes[i].tick_params(labelsize=13)
        sns.kdeplot(dataset[f],dataset[f+1],cmap="Blues_d",shade_lowest=True,ax=axes[i])
        sns.kdeplot(dataset[f],dataset[f+1],cmap="Blues",shade_lowest=True,shade=True,ax=axes[i])
        f = f+2
    plt.show()

Однако некоторые контуры различаются по пространству, которое они отбирают в плоскости x-y, и когда я рисую их, на фоне некоторых графиков появляется белый участок, который я не знаю, как его заполнить. Смотрите ниже:

Plot Output

Оба графика должны выглядеть так, как будто они расположены справа. Я попытался настроить цвет фона с помощью ax.set_facecolor и взять последний цвет палитры cmap с помощью этой темы: Получение отдельных цветов из цветовой карты в matplotlib . Однако цвет фона у меня немного другой. Я также попытался использовать аргумент clip sns.kdeplot, но безуспешно.

Как я могу решить это? Дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 02 мая 2018

Так что я вроде как взломал, избавился от сетки и использовал gimp, чтобы получить минимальный цвет лица. (Я использовал инструмент для разрезания изображения, чтобы открыть изображение, открыл его в бесплатной программе gimp и получил шестнадцатеричный код.) Затем я изменил цвет лица оси. Следующий код даст вам то, что вы хотите.

import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns

def kdeplots_figure(dataset):
    cols = int((len(dataset)-2)/2)
    figure, axes = plt.subplots(1, cols, figsize=(15,6), sharey=True)

    f = 2
    for i in range (len(axes)):
        sns.set_style("white")
        axes[i].set_title(" Cluster {0}".format(i), fontsize = 16)
        axes[i].set_ylabel('Y Axis', fontsize = 14)
        axes[i].set_xlabel('X Axis', fontsize = 14)

        axes[i].tick_params(labelsize=13)
        axes[i].grid(False) 

        axes[i].set_facecolor('#eef5fc')
        sns.kdeplot(dataset[f],dataset[f+1],cmap="Blues_d",ax=axes[i])
        sns.kdeplot(dataset[f],dataset[f+1],cmap="Blues",  shade=True, 
        extend='both', ax=axes[i])

        f = f+2
    plt.show()

a = np.random.rand(6,6)
kdeplots_figure(a)

enter image description here

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