Как изменить цвет нарисованных точек на графике линии pyGal - PullRequest
0 голосов
/ 28 марта 2019

Я создаю линейный график, используя pygal, передавая массив чисел для построения графика. Я желаю, чтобы точки, отмеченные на графике, меняли цвет, когда они находятся внутри или за пределами определенного диапазона. То есть Если есть точка, записанная более 40, закрасьте ее красным, если есть точка, записанная за 20, закрасьте ее синим.

Кажется, нет простого способа пройтись по массиву и нарисовать одну точку.

График составляется с использованием следующего кода:

    customStyle = Style(colors=["#000000"])
    chart = pygal.Line(style=customStyle)
    chart.title = 'Browser usage evolution (in %)'
    chart.x_labels = recordedDates
    chart.add('Humidity', recordedHumidity)
    chart.render_to_png("out.png")

Мне бы хотелось, чтобы все точки были выше 40 красных и ниже 20 синих.

1 Ответ

1 голос
/ 28 марта 2019

Вы можете заменить число в массиве на dict, которое сообщает Pygal, как визуализировать точку данных.Этот dict должен содержать ключ value, который является числом, которое вы бы передали, наряду с любыми параметрами настройки, которые вы хотите использовать.Список доступных опций представлен на странице конфигурации значений документов , но здесь вам нужно: color.

. Вы можете просто перебрать существующий массив, создавсловарь, в котором color установлено соответствующим образом для значения:

data = []
for v in recordedHumidity:
    if v > 40:
        data.append({"value": v, "color": "red"})
    elif v < 20:
        data.append({"value": v, "color": "blue"})
    else:
        data.append(v)

Затем вы можете передать вновь созданный массив при добавлении серии:

customStyle = Style(colors=["#000000"])
chart = pygal.Line(style=customStyle)
chart.x_labels = recordedDates
chart.add('Humidity', data)
chart.render_to_png("out.png")

Example chart with different coloured dots

Вы также можете посмотреть страницы конфигурации и series в документах, чтобы узнать, как настроить другие аспекты диаграммы, такие какразмер маркеров.

...