Seaborn Kdeplot накопительный график логарифмическая шкала - PullRequest
0 голосов
/ 13 декабря 2018

Во-первых, я прошу прощения, если эти вопросы уже задавались, я не смог найти решение в StackOverflow.

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

Пример: non-log-axis

Поэтому я изменил свой скрипт, чтобы сделать ось x логарифмической, используя ax.set_xscale('log'), но результатбыл отключен.

cutoff-log-axis

Я прочитал эту проблему на GitHub, но так как это было несколько лет назад, мне интересно,это было решено.

Вот мой код для полноты:

def plot_cdfs(df, legend, nodes, axes):
    ax1, ax2, ax3, ax4 = axes
    # redirecting subplot according to the number of nodes
    if nodes == '25':
        sns.kdeplot(df[header], cumulative=True, legend=False, ax=ax1)
        ax1.set_ylabel('ECDF', fontsize=16)
        ax1.set_title('25 Nodes')
        ax1.set_xlabel(label)
        ax1.set_xscale('log')
        leg_handles = ax1.get_legend_handles_labels()[0]
        ax1.legend(leg_handles, legend[::4])
    elif nodes == '50':
        sns.kdeplot(df[header], cumulative=True, legend=False, ax=ax2)
        ax2.set_title('50 Nodes')
        ax2.set_xlabel(label)
        ax2.set_xscale('log')
    elif nodes == '100':
        sns.kdeplot(df[header], cumulative=True, legend=False, ax=ax3)
        ax3.set_title('100 Nodes')
        ax3.set_xlabel(label)
        ax3.set_xscale('log')
    else:
        sns.kdeplot(df[header], cumulative=True, legend=False, ax=ax4)
        ax4.set_title('150 Nodes')
        ax4.set_xlabel(label)
        ax4.set_xscale('log')

1 Ответ

0 голосов
/ 08 февраля 2019

Один подход, который сработал для меня, - это вычислить cdf и передать результаты в функцию sns.lineplot():

data_sorted = np.sort(df[header])

# calculate the proportional values of samples
p = 1. * np.arange(len(df[header])) / (len(df[header]) - 1)

ax = sns.lineplot(data_sorted, p)
ax.set_xscale('log')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...