Как мне раскрасить фон на основе 1 или 0 в Python - PullRequest
0 голосов
/ 17 мая 2018

Я хочу, чтобы фон графика x был серым, когда y = 1, и белым, когда y = 0

    #some random data
    x = np.random.random(12)
    #0's and 1's
    y = [0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1]

    plt.plot(np.linspace(0, 12, 12), x);

Так что это выглядит примерно так вместо this

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете попробовать нарисовать прямоугольники вручную, используя цикл:

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np

idx = np.linspace(0, 12, 12)
x = np.random.random(12)
y = [0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1]

fig, ax = plt.subplots(1)
ax.plot(idx, x)

rect_height = np.max(x)
rect_width = 1

for i, draw_rect in enumerate(y):
    if draw_rect:
        rect = patches.Rectangle(
            (i, 0),
            rect_width,
            rect_height,
            linewidth=1,
            edgecolor='grey',
            facecolor='grey',
            fill=True
        )
        ax.add_patch(rect)

plt.show()

Output figure

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