Как я могу добавить с ggplot цветную легенду? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть этот фрейм данных, и я хочу построить с ggplot по оси x столбец result_df50 $ id , а по оси Y - столбцы result_df50 $ Sens и result_df50 $ Spec .

Также я хочу, чтобы result_df50 $ Sens и result_df50 $ Spec отображались разными цветами. Легенда также должна показывать разные цвета столбцов.

> result_df50
   Acc Sens Spec id
1   12   51   15  1
2   24   78   28  2
3   31   86   32  3
4   78   23   90  4
5   49   43   56  5
6   25   82   33  6
7    6   87    8  7
8   60   33   61  8
9   54    4   66  9
10   5   54    9 10
11   1   53    4 11
12   2   59    7 12
13   4   73    3 13
14  48   41   55 14
15  30   72   39 15
16  57   10   67 16
17  80   31   91 17
18  30   65   36 18
19  58   45   61 19
20  12   50   19 20
21  39   47   46 21
22  38   49   45 22
23   3   69    5 23
24  68   24   76 24
25  35   64   42 25

Пока я пробовал это, и я счастлив этим.

ggplot(data = result_df50) +
  geom_line(data= result_df50, aes(x = result_df50$id, y = result_df50$Spec), colour = "blue") + 
  geom_line(data= result_df50, aes(x = result_df50$id, y = result_df50$Sens), colour = "red") +
  labs(x="Number of iterations")

Теперь я просто хочу добавить легенду с цветами каждой линии. Я пытался fill, но R выдает предупреждение и игнорирует это unknown aesthetics: fill .... Как я могу это сделать?

1 Ответ

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

Это потому, что ваш набор данных имеет неправильный формат (широкий). Вам нужно будет преобразовать его в длинный формат, чтобы он работал следующим образом:

result_df50 <-  read.table(text="Acc Sens Spec id
1   12   51   15  1
           2   24   78   28  2
           3   31   86   32  3
           4   78   23   90  4
           5   49   43   56  5
           6   25   82   33  6
           7    6   87    8  7
           8   60   33   61  8
           9   54    4   66  9
           10   5   54    9 10
           11   1   53    4 11
           12   2   59    7 12
           13   4   73    3 13
           14  48   41   55 14
           15  30   72   39 15
           16  57   10   67 16
           17  80   31   91 17
           18  30   65   36 18
           19  58   45   61 19
           20  12   50   19 20
           21  39   47   46 21
           22  38   49   45 22
           23   3   69    5 23
           24  68   24   76 24
           25  35   64   42 25")

# conversion to long format
library(reshape2)
result_df50 <- melt(result_df50, id.vars=c("Acc", "id"))

head(result_df50)
#   Acc id variable value
# 1  12  1     Sens    51
# 2  24  2     Sens    78
# 3  31  3     Sens    86
# 4  78  4     Sens    23
# 5  49  5     Sens    43
# 6  25  6     Sens    82

# your plot
ggplot(data = result_df50, aes(x = id, y =value , color=variable)) +
  geom_line() + 
  labs(x="Number of iterations")+
  scale_color_manual(values=c("red", "blue")) # in case you want to keep your colors

Это то, что вы хотите?

...