Построение нескольких горизонтальных линий для каждого распределения в полосе сюжета Matplotlib - PullRequest
0 голосов
/ 07 апреля 2019

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

Мой код выглядит так:

for plot, var in zip(range(1, plot_num+1), var_list):

    ax = fig.add_subplot(2, 2, plot)

    # calculate averages

    sns.stripplot(x=cluster_index_sample[cluster_type], y=cluster_index_sample[var], 
                  jitter=jitter, linewidth=line_width, alpha=alpha, cmap=RS_colorwheel,
                  size=marker_size, ax=ax)

    # create average lines
    ax.axhline(y=cluster_index_sample['Average_'+(var)].iloc[0], 
                                      linewidth=3, xmin=0.2, xmax=0.5)

    ax.set_ylabel(str(var), fontsize=y_lab)
    ax.set_xlabel('')
    ax.tick_params(axis='both', which='major', pad=10)

Но когда я строю график, горизонтальные линии появляются только один раз за тип_кластера (категория оси X) .

enter image description here

Как я могу получить так, чтобы каждый набор пронумерованных категориальных значений получил свои собственные соответствующие средние значения?

1 Ответ

0 голосов
/ 07 апреля 2019

Поскольку вы не предоставили MCVE , я не могу запустить ваш код.Тем не менее, вы можете попробовать использовать второй цикл for для перебора всех переменных для построения горизонтальной средней линии следующим образом.Вам также придется изменить xmin и xmax для каждой строки.Я оставляю это на ваше усмотрение.

for plot, var in zip(range(1, plot_num+1), var_list):
    ax = fig.add_subplot(2, 2, plot)
    sns.stripplot(x=cluster_index_sample[cluster_type], y=cluster_index_sample[var], 
                  jitter=jitter, linewidth=line_width, alpha=alpha, cmap=RS_colorwheel,
                  size=marker_size, ax=ax)
    for v in var_list: # <--- Added here
        ax.axhline(y=cluster_index_sample['Average_'+(v)].iloc[0], 
                                      linewidth=3, xmin=0.2, xmax=0.5) # <--- Added here

    ax.set_ylabel(str(var), fontsize=y_lab)
    ax.set_xlabel('')
    ax.tick_params(axis='both', which='major', pad=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...