matplotlib: как изменить цвет точек данных на основе некоторой переменной - PullRequest
45 голосов
/ 25 октября 2011

У меня есть 2 переменные (x, y), которые меняются со временем (t).Я хочу построить график зависимости x от t и закрасить галочки на основе значения yeg для наивысших значений y, цвет тика - темно-зеленый, для наименьшего значения - темно-красный, а для промежуточных значений цвет будет масштабироваться между зеленым икрасный.

Можно ли это сделать с помощью matplotlib в python?

Ответы [ 2 ]

70 голосов
/ 25 октября 2011

Это то, для чего matplotlib.pyplot.scatter.

В качестве быстрого примера:

import matplotlib.pyplot as plt
import numpy as np

# Generate data...
t = np.linspace(0, 2 * np.pi, 20)
x = np.sin(t)
y = np.cos(t)

plt.scatter(t,x,c=y)
plt.show()

enter image description here

2 голосов
/ 26 апреля 2018

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

def plot(xx, yy, good):
    """Plot data

    Good parts are plotted as black, bad parts as red.

    Parameters
    ----------
    xx, yy : 1D arrays
        Data to plot.
    good : `numpy.ndarray`, boolean
        Boolean array indicating if point is good.
    """
    import numpy as np
    import matplotlib.pyplot as plt
    fig, ax = plt.subplots()
    from matplotlib.colors import from_levels_and_colors
    from matplotlib.collections import LineCollection
    cmap, norm = from_levels_and_colors([0.0, 0.5, 1.5], ['red', 'black'])
    points = np.array([xx, yy]).T.reshape(-1, 1, 2)
    segments = np.concatenate([points[:-1], points[1:]], axis=1)
    lines = LineCollection(segments, cmap=cmap, norm=norm)
    lines.set_array(good.astype(int))
    ax.add_collection(lines)
    plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...