Pyplot – изменить цвет линии, если данные меньше нуля?

Я пытаюсь выяснить, есть ли что-либо, встроенное в pyplot, которое изменит цвет моей линии в зависимости от того, являются ли данные отрицательными или положительными. Например, если это отрицательно, я бы хотел, чтобы линия была красной, и если она положительная, я бы хотел, чтобы линия была другого цвета, например, черного цвета.

Есть ли что-нибудь в библиотеке, которая позволяет мне это делать? Одна вещь, о которой я думал, состоит в том, чтобы разделить данные на два набора положительных и отрицательных значений и занести их отдельно, но мне интересно, есть ли лучший способ.

3 Solutions collect form web for “Pyplot – изменить цвет линии, если данные меньше нуля?”

Я бы просто сделал два набора данных и установил правильные маски. Используя этот подход, у меня не будет линий между разными положительными частями.

import matplotlib.pyplot as plt import numpy as np signal = 1.2*np.sin(np.linspace(0, 30, 2000)) pos_signal = signal.copy() neg_signal = signal.copy() pos_signal[pos_signal <= 0] = np.nan neg_signal[neg_signal > 0] = np.nan #plotting plt.style.use('fivethirtyeight') plt.plot(pos_signal, color='r') plt.plot(neg_signal, color='b') plt.savefig('pos_neg.png', dpi=200) plt.show() 

пример

Вы можете условно отображать данные в объекте axes, используя синтаксис типа if (если вы привыкли к чему-то вроде Pandas).

 ax.plot(x[f(x)>=0], f(x)[f(x)>=0], 'g') ax.plot(x[f(x)<0], f(x)[f(x)<0], 'r') 

Технически это расщепление и построение ваших данных в двух наборах, но это довольно компактно и приятно.

Если вы используете график рассеяния, вы можете дать каждой точке другой цвет:

 x = range(1) x = range(10) y = [i - 5 for i in x] c = [i < 0 for i in y] plt.scatter(x, y, c=c, s=80) 

введите описание изображения здесь

  • Как получить гант-сюжет с использованием matplotlib
  • Python3.5 backend_tkagg больше не доступен?
  • Python колчан и pcolormesh не выстраиваются точно вправо
  • Matplotlib: Использование np.mgrid для создания участка поверхности куба
  • MatPlotLib plot_surface: скрытые строки, появляющиеся в PDF-файле
  • Есть ли способ рисовать заголовок в matplotlib
  • Добавление меток значений на гистограмме matplotlib
  • Отчёт о двух выборочной статистике KS из двух предварительно вычисленных гистограмм
  • построение 3d-рассеяния в matplotlib
  • Эффективный метод расчета плотности нерегулярно разнесенных точек
  • Как получить данные в гистограмме
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.