питон разноцветный фон - PullRequest
0 голосов
/ 14 декабря 2018

Как мне использовать matplotlib.pyplot, чтобы закрасить фон моего графика на основе массива (True / False's)?

Так, например, если мой массив был (T, F, F, F, T, T) и я выбираю цвета «красный» и «синий», мне нужно, чтобы фон был красным столбцом, 3 синими колоннами, а затем еще 2 красных.

N = 2000
tf = np.random.normal(size = N)
ctf = np.array([np.sum(tf[:1+i]) for i in range(N)])
fig, ax = plt.subplots()
tf2 = tf[None,:]
ax.imshow(tf2, cmap='RdYlGn', aspect = 'auto')
ax.plot(ctf,'k')

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Похоже, вы хотите нарисовать прямоугольники на вашем графике.(См. matplotlib: как нарисовать прямоугольник на изображении ). Если вы хотите, чтобы прямоугольники стояли за некоторыми другими данными, установите для их zorder отрицательное число при их создании.

0 голосов
/ 14 декабря 2018

Вы можете использовать imshow :

import numpy as np
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
data = np.array([True, False, True])[ None, :]
ax.imshow(data, cmap = 'RdBu', aspect="auto")
ax.axis('off')
fig.show()

edit: поменять местами ось для создания столбцов edit2: добавить большее imshow

import numpy as np
from matplotlib import pyplot as plt
N = 2000
tf = np.random.normal(size = N)
ctf = np.array([np.sum(tf[:1+i]) for i in range(N)])
fig, ax = plt.subplots(2, sharex = 'all', \
                       gridspec_kw = dict(\
                                         height_ratios = [5, 1]))
tf2 = tf[None,:]
ax[0].plot(ctf,'k')
ax[1].imshow(tf2, cmap='RdYlGn', aspect = 'auto')
plt.subplots_adjust(hspace = 0)

edit 3:

import numpy as np
from matplotlib import pyplot as plt
N = 2000
tf = np.random.normal(size = N)
ctf = np.array([np.sum(tf[:1+i]) for i in range(N)])
fig, ax = plt.subplots()

tf2 = tf[None,:]
ax.plot(ctf,'k')
ax.imshow(tf2, cmap='RdYlGn', aspect = 'auto', extent =[0, ctf.shape[0], ctf.min(), ctf.max()])

enter image description here enter image description here

enter image description here

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