Выберите цвет или символ маркера в Plotly r для группы по условию

+----+------+-------+
| Id | Time | Value |
+----+------+-------+
|  1 | A    |     1 |
|  2 | B    |    10 |
|  2 | C    |     3 |
|  2 | D    |     6 |
|  3 | E    |     2 |
|  4 | F    |     9 |
|  4 | G    |     4 |
|  4 | H    |    17 |
+----+------+-------+

У меня есть данные, подобные приведенным выше (упрощенные). Я нарисовал это, используя диаграмму рассеяния, используя plot-ly с Id в качестве оси X и значением в качестве оси Y. Теперь, основываясь на столбце времени, я хочу, чтобы самая последняя запись для поля Id имела определенную форму / символ. Как я могу это сделать с помощью plot-ly и r?


person Viswanath Ramanan    schedule 22.03.2018    source источник


Ответы (1)


Я бы добавил столбец, чтобы отметить последнюю запись, а затем использовать этот столбец как эстетический.

Например, в ggplot:

df %>%
    group_by(Id) %>%
    mutate(
        rowNo = 1:n(),
        isLast = factor(ifelse(rowNo == n(), 1, 0))) %>%
    ggplot(aes(x = Id, y = Value, shape = isLast)) + geom_point()

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

Аналогично для plot_ly.

df %>%
    group_by(Id) %>%
    mutate(
        rowNo = 1:n(),
        isLast = factor(ifelse(rowNo == n(), 1, 0))) %>%
    plot_ly(x = ~Id, y = ~Value, symbol = ~isLast)

Образец данных

df <- read.table(text =
    "Id  Time Value
1 A  1
2 B 10
2 C  3
2 D  6
3 E  2
4 F  9
4 G  4
4 H 17", header = T)
person Maurits Evers    schedule 22.03.2018
comment
Спасибо за Ваш ответ. Я вижу, что диаграмма сформировала только последнее значение в наборе данных. Я хочу сделать это для каждого значения идентификатора, т.е. каждый идентификатор должен иметь хотя бы один маркер формы. - person Viswanath Ramanan; 23.03.2018
comment
@ user1337323 Я обновил свой ответ, пожалуйста, посмотрите. Мы можем использовать group_by, чтобы отметить последнюю запись для Id. - person Maurits Evers; 23.03.2018