Seaborn boxplot горизонтальная линия аннотация - PullRequest
0 голосов
/ 24 августа 2018

Я хочу добавить горизонтальную линию , т. Е. Целевую линию к некоторым графикам: полосовые, прямоугольные и скрипичные, для отображения данных идеальных значений (или в идеале диапазона).

Этот пример R ( Добавление нескольких горизонтальных линий в блок-диаграмму ) - первое изображение - в основном это (хотя я бы сделал некоторое форматирование, чтобы сделать презентабельным).

R abline () эквивалент в Python не помогает мне (или я не понял, как), так как я использую категориальные данные, поэтому я просто хочу по существу определить (например) y=3 и заговор это. Мой код (ниже) работает нормально, я просто не знаю, как добавить строку.

fig, ax = plt.subplots(nrows=4,figsize=(20,20))

sns.violinplot(x="Wafer", y="Means", hue='Feature', 
           data=Means[Means.Target == 1], ax=ax[0])
sns.violinplot(x="Wafer", y="Means", hue='Feature', 
           data=Means[Means.Target == 3], ax=ax[1])
sns.boxplot(x="Feature", y="Means", 
        data=Means, linewidth=0.8, ax=ax[2])
sns.stripplot(x="Feature", y="Means", hue='Wafer',
          data=Means, palette="plasma", jitter=0.1, size=5.5, ax=ax[3])

Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

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

fig, ax = plt.subplots(figsize=(4, 4))
ax.plot([1,2,3,4], [1,2,3,4], color='blue')  # simple example line

# define patch area
rect = patches.Rectangle(
    xy=(ax.get_xlim()[0], 2),  # lower left corner of box: beginning of x-axis range & y coord)
    width=ax.get_xlim()[1]-ax.get_xlim()[0],  # width from x-axis range
    height=1,
    color='green', alpha=0.1, ec='red'
)
ax.add_patch(rect)
plt.show()

enter image description here

0 голосов
/ 24 августа 2018

Допустим, вы не хотите строить горизонтальную линию на высоте y и от x1 до x2, где x1 и x2 - ваши фактические значения x-данных.Ниже приведены только три из нескольких возможных способов сделать это:

Первый:

ax.hlines(y, x1, x2)

Второй:

plt.plot([x1, x2], [y, y])

Третий (x1 и x2 теперь в относительных / дробных координатах между 0 означает крайний левый угол и 1 означает крайний правый угол):

ax.axhline(y, x1, x2)
...