matplotlib: нарисуйте коробку на осях - PullRequest
2 голосов
/ 21 марта 2019
import matplotlib.patches as patches

df2 = pd.melt(
    data2.query('worktype_id!=38')[['period','worktype', 'utilization_billable', 'utilization' ]], 
    id_vars=['period', 'worktype']).sort_values(['period', 'variable'], ascending=[True, True])
g = sns.relplot(x='period', y='value', 
            hue='variable', data=df2, col='worktype', kind='line', col_wrap=4, 
            )
for ax in g.axes:
    ax.axhline(y=75, color='g', linestyle='--')
    ax.axhline(y=90, color='r', linestyle='--')
    rect = plt.Rectangle((10,10),10,10,linewidth=3,edgecolor='r',facecolor='red', alpha=1)
    ax.add_patch(rect)

Я хочу нарисовать прямоугольник между y = 75 и 90 (зеленые и красные линии на графике), но ничего не отображается, когда я делаю ax.add_patch

это изображение, которое я получаю:

enter image description here

Итак, как мне заполнить область между красными и зелеными горизонтальными линиями?

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Если у вас есть фиксированная область, которую вы хотите заполнить, и вы хотите сделать это по всему графику, вам, вероятно, лучше использовать axvspan. Э.Г.

ax.axvspan(75, 90, facecolor='red')
1 голос
/ 21 марта 2019
plt.fill_between(plt.xlim(),[75,75],[90,90])
  • plt.xlim (): возвращает начало и конец оси x
  • При начале оси x начните заполнять цвет, начиная с 75 и заканчивая на 90 оси y
  • Продолжить заполнение до конца оси x, начиная с 75, заканчивающегося на 90 оси y

Вам не нужно будет строить прямоугольник

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