Различные цвета из pandas кадра данных в зависимости от номера индекса - PullRequest
1 голос
/ 11 января 2020

У меня есть 500 строк данных pandas, в которых есть 2 столбца x и y, относящихся к координатам в таблице. Однако я хочу иметь возможность назначить другой цвет точкам от 0 до 249, а затем от 250 до 499, т.е. половина, например, красная, а половина - синяя. Как мне это сделать?

The table of 500 rows, 2 columns

Код:

diagram = pos_table.plot.scatter('x', 'y', c = 'turquoise', s = 4)

Результат:

The code output

Ответы [ 2 ]

1 голос
/ 11 января 2020

Я думаю, что следующее - хорошее, чистое решение

colors = ['red' if i < 250 else 'blue' for i in range(500)]
pos_table.plot.scatter('x','y',color=colors)

enter image description here

1 голос
/ 11 января 2020

Выберите первую и последнюю 250 строки с помощью DataFrame.iloc, а затем передайте ax во вторую plot:

length = len(pos_table)
half = length //
ax = pos_table.iloc[:250].plot.scatter('x', 'y', c = 'red', s = 4)
pos_table.iloc[250:].plot.scatter('x', 'y', c = 'blue', s = 4, ax=ax)

Или динамические c значения счета:

length = len(pos_table)
half = length // 2
ax = pos_table.iloc[:half].plot.scatter('x', 'y', c = 'red', s = 4)
pos_table.iloc[half:].plot.scatter('x', 'y', c = 'blue', s = 4, ax=ax)

Образец : (изменен s для лучшего понимания)

pos_table = pd.DataFrame({'x':[2,3,4,6,2,4,6,8,5,7],
                          'y':[4,3,1,4,6,8,5,3,5,4]})

length = len(pos_table)
half = length // 2
ax = pos_table.iloc[:half].plot.scatter('x', 'y', c = 'red', s = 90)
pos_table.iloc[half:].plot.scatter('x', 'y', c = 'blue', s = 90, ax=ax)

graph

...