Matplotlib условный маркер цветов - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь создать график, используя matplotlib метки времени и цены, и на том же графике наложить условный маркер (синий или красный), если значение в столбце «B / S» равно B или S. Нет маркера, еслизначение равно «NaN».Построить график времени и цены достаточно просто, но я не могу понять, как разместить эти условные маркеры.Я уже пытался найти решения на этом сайте и на других сайтах, но не нашел такого, который бы приближался к этому.

df = 
            timestamp         price   B/S
0       2018-04-24 06:01:02.600 1     NaN
1       2018-04-24 06:02:02.600 1     NaN
2       2018-04-24 06:03:02.600 2     NaN
3       2018-04-24 06:04:02.600 4     B
4       2018-04-24 06:05:02.775 2     NaN
5       2018-04-24 06:06:02.825 3     NaN
6       2018-04-24 06:07:03.050 5     NaN
7       2018-04-24 06:08:03.125 6     S
8       2018-04-24 06:09:03.275 7     NaN
9       2018-04-24 06:10:03.300 4     NaN
10      2018-04-24 06:11:03.300 3     NaN
11      2018-04-24 06:12:03.950 5     B
12      2018-04-24 06:15:04.050 5     NaN

Заранее благодарен за вашу помощь.

1 Ответ

0 голосов
/ 18 октября 2018

Я не уверен, что вы можете сделать это как вкладчик.Но следующий код должен помочь.

markers = {"B": {"marker": "o", "color": "b"}, "S": {"marker": "v", "color": "r"}}
for marker in markers:
    plt.scatter(df[df['B/S'] == marker].timestamp,
                df[df['B/S'] == marker].price,
                marker=markers[marker]['marker'],
                color=markers[marker]['color'])

В зависимости от сложности данных в B / S.Если есть сотни различных значений, то, возможно, вам нужен генератор для комбинации маркера + цвета.Но я думаю, что в заголовке есть только два значения.

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