Matplotlib.hist - сглаживание линии между точками с помощью пошаговой гистограммы - PullRequest
1 голос
/ 12 октября 2019

Я пытаюсь сгладить линию между точками. Увеличение количества ячеек - один из подходов, но, по моим реальным данным, проблема все еще не решена.

def plotstep_test(x, y, z):

    plt.figure(figsize=[10, 6])
    plt.hist([x, y, z], color=['red','black', 'green'], histtype='step', bins=20)

    plt.gca().spines['right'].set_color('none')
    plt.gca().spines['top'].set_color('none')

    plt.title('', fontsize=14)
    plt.xlabel('', fontsize=14, labelpad=5)
    plt.ylabel('', fontsize=14, labelpad=5)


    plt.xticks(np.arange(0, 1.1, step=0.1), fontsize=12)    
    plt.yticks(fontsize=12)
    plt.tick_params(axis='both', which='both', left=True, bottom=True,labelbottom=True) 


    plt.show()

со случайными числами:

plotstep_test(np.random.uniform(size=10), np.random.uniform(size=5), np.random.uniform(size=50))

enter image description here

Ответы [ 2 ]

1 голос
/ 12 октября 2019

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

Попробуйте seaborn.distplot():

data = np.random.normal(size=100)
import seaborn as sns
sns.distplot(data)

Это даст вам:

distplot example

Если вам нравится внешний вид линии, вы можете заставить все остальное работать без проблем, я уверен.

В общем, seaborn делает действительно хорошие статистические графики. Проверьте галерею.

0 голосов
/ 12 октября 2019

Спасибо @kwinkunks за упоминание морского происхождения.

import seaborn as sns

plt.figure(figsize=(10, 6))

plt.gca().spines['right'].set_color('none')
plt.gca().spines['top'].set_color('none')

plt.ylabel('Density', fontsize=14, labelpad=7.5)
plt.xticks(fontsize=14) 
plt.yticks(fontsize=14)

sns.distplot(np.random.uniform(size=50), hist=False, color='grey', axlabel=False, kde_kws={"linewidth": 4})
sns.distplot(np.random.uniform(size=25), hist=False, color='cornflowerblue', axlabel=False, kde_kws={"linewidth": 4})
sns.distplot(np.random.uniform(size=200), hist=False, color='goldenrod', axlabel=False, kde_kws={"linewidth": 4})

enter image description here

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