Цвет кромки полос Seaborn не меняет цвет кромки - PullRequest
0 голосов
/ 31 марта 2020

Я должен построить свои данные в виде отдельных точек данных и использовать цветовую схему, показанную ниже (белый фон, синий оттенок на основе значения по оси x): enter image description here

Сгенерировано из этого кода:

    ax = sns.stripplot(x = 'A', y = 'B', data = df, palette = my_palette, edgecolor = 'black')
    median_width = 0.4

    for tick, text in zip(ax.get_xticks(), ax.get_xticklabels()):
        sample_name = text.get_text()
        # calculate the median value for all replicates of either X or Y
        median_val = df[df[A] == float(sample_name)]['B'].median()
        # plot horizontal lines across the column, centered on the tick
        ax.plot([tick - median_width / 2, tick + median_width / 2], [median_val, median_val],
                lw = 1.5, color = 'k')

Однако точки данных с более низкими значениями x почти не отличаются от белого фона. Я пробовал много вариантов изменения аргумента edgecolor, даже используя plt.rc('patch', edgecolor = 'black'), но это не работает. Как я могу обойти эту проблему?

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Кроме того, чтобы установить цвет линий ребер, вы также должны изменить их ширину, иначе они по умолчанию равны 0:

tips = sns.load_dataset('tips')
ax = sns.stripplot(x="day", y="total_bill", data=tips, edgecolor='k', linewidth=2)

enter image description here

0 голосов
/ 31 марта 2020

Я нашел способ доступа к значениям x и y для каждой точки данных. Следующий код дает мне сюжет, который я хочу:

x = []
y = []
for i in ax.collections:
    points = i.get_offsets()
    for pnt in points:
        x.append(pnt[0])
        y.append(pnt[1])
plt.scatter(x, y, facecolor = None, edgecolor = 'black')
...