library(tidyverse)
library(ggrepel)
df <- structure(list(Fruit = c("Yellow Pear", "Yellow Pear", "Yellow Pear",
"Yellow Pear", "Yellow Pear", "Yellow Pear", "Yellow Pear", "Yellow Pear",
"Yellow Pear", "Yellow Pear", "Yellow Pear", "Yellow Pear", "Tropical Banana",
"Tropical Banana", "Tropical Banana", "Tropical Banana", "Tropical Banana",
"Tropical Banana", "Tropical Banana", "Tropical Banana", "Tropical Banana",
"Tropical Banana", "Tropical Banana", "Tropical Banana", "Farm Fresh Strawberries",
"Farm Fresh Strawberries", "Farm Fresh Strawberries", "Farm Fresh Strawberries",
"Farm Fresh Strawberries", "Farm Fresh Strawberries", "Farm Fresh Strawberries",
"Farm Fresh Strawberries", "Farm Fresh Strawberries", "Farm Fresh Strawberries",
"Farm Fresh Strawberries", "Farm Fresh Strawberries", "Melon Mango",
"Melon Mango", "Melon Mango", "Melon Mango", "Melon Mango", "Melon Mango",
"Melon Mango", "Melon Mango", "Melon Mango", "Melon Mango", "Melon Mango",
"Melon Mango", "Dragonfruit", "Dragonfruit", "Dragonfruit", "Dragonfruit",
"Dragonfruit", "Dragonfruit", "Dragonfruit", "Dragonfruit", "Dragonfruit",
"Dragonfruit", "Dragonfruit", "Dragonfruit", "Peaches", "Peaches",
"Peaches", "Peaches", "Peaches", "Peaches", "Peaches", "Peaches",
"Peaches", "Peaches", "Peaches", "Peaches", "Blueberry", "Blueberry",
"Blueberry", "Blueberry", "Blueberry", "Blueberry", "Blueberry",
"Blueberry", "Blueberry", "Blueberry", "Blueberry", "Blueberry",
"Blueberry GS", "Blueberry GS", "Blueberry GS", "Blueberry GS",
"Blueberry GS", "Blueberry GS", "Blueberry GS", "Blueberry GS",
"Blueberry GS", "Blueberry GS", "Blueberry GS", "Blueberry GS",
"Red Delicious Apples", "Red Delicious Apples", "Red Delicious Apples",
"Red Delicious Apples", "Red Delicious Apples", "Red Delicious Apples",
"Red Delicious Apples", "Red Delicious Apples", "Red Delicious Apples",
"Red Delicious Apples", "Red Delicious Apples", "Red Delicious Apples",
"Grapes", "Grapes", "Grapes", "Grapes", "Grapes", "Grapes", "Grapes",
"Grapes", "Grapes", "Grapes", "Grapes", "Grapes", "Cherry", "Cherry",
"Cherry", "Cherry", "Cherry", "Cherry", "Cherry", "Cherry", "Cherry",
"Cherry", "Cherry", "Cherry", "Green Apples", "Green Apples",
"Green Apples", "Green Apples", "Green Apples", "Green Apples",
"Green Apples", "Green Apples", "Green Apples", "Green Apples",
"Green Apples", "Green Apples", "Yellow Apples", "Yellow Apples",
"Yellow Apples", "Yellow Apples", "Yellow Apples", "Yellow Apples",
"Yellow Apples", "Yellow Apples", "Yellow Apples", "Yellow Apples",
"Yellow Apples", "Yellow Apples", "Perfect Punchy Pineapple",
"Perfect Punchy Pineapple", "Perfect Punchy Pineapple", "Perfect Punchy Pineapple",
"Perfect Punchy Pineapple", "Perfect Punchy Pineapple", "Perfect Punchy Pineapple",
"Perfect Punchy Pineapple", "Perfect Punchy Pineapple", "Perfect Punchy Pineapple",
"Perfect Punchy Pineapple", "Perfect Punchy Pineapple", "Watermelon",
"Watermelon", "Watermelon", "Watermelon", "Watermelon", "Watermelon",
"Watermelon", "Watermelon", "Watermelon", "Watermelon", "Watermelon",
"Watermelon", "Red Raspberry", "Red Raspberry", "Red Raspberry",
"Red Raspberry", "Red Raspberry", "Red Raspberry", "Red Raspberry",
"Red Raspberry", "Red Raspberry", "Red Raspberry", "Red Raspberry",
"Red Raspberry", "Blackberry", "Blackberry", "Blackberry", "Blackberry",
"Blackberry", "Blackberry", "Blackberry", "Blackberry", "Blackberry",
"Blackberry", "Blackberry", "Blackberry", "Avocado", "Avocado",
"Avocado", "Avocado", "Avocado", "Avocado", "Avocado", "Avocado",
"Avocado", "Avocado", "Avocado", "Avocado", "Cherimoya Custard Apple",
"Cherimoya Custard Apple", "Cherimoya Custard Apple", "Cherimoya Custard Apple",
"Cherimoya Custard Apple", "Cherimoya Custard Apple", "Cherimoya Custard Apple",
"Cherimoya Custard Apple", "Cherimoya Custard Apple", "Cherimoya Custard Apple",
"Cherimoya Custard Apple", "Cherimoya Custard Apple", "Nectarine",
"Nectarine", "Nectarine", "Nectarine", "Nectarine", "Nectarine",
"Nectarine", "Nectarine", "Nectarine", "Nectarine", "Nectarine",
"Nectarine", "Plum Prune Pineapple", "Plum Prune Pineapple",
"Plum Prune Pineapple", "Plum Prune Pineapple", "Plum Prune Pineapple",
"Plum Prune Pineapple", "Plum Prune Pineapple", "Plum Prune Pineapple",
"Plum Prune Pineapple", "Plum Prune Pineapple", "Plum Prune Pineapple",
"Plum Prune Pineapple", "Pomegranate", "Pomegranate", "Pomegranate",
"Pomegranate", "Pomegranate", "Pomegranate", "Pomegranate", "Pomegranate",
"Pomegranate", "Pomegranate", "Pomegranate", "Pomegranate", "Surinam Cherry",
"Surinam Cherry", "Surinam Cherry", "Surinam Cherry", "Surinam Cherry",
"Surinam Cherry", "Surinam Cherry", "Surinam Cherry", "Surinam Cherry",
"Surinam Cherry", "Surinam Cherry", "Surinam Cherry"), Date = structure(c(17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17622, 17652, 17683, 17713, 17744, 17775, 17805,
17836, 17866, 17897, 17928, 17956, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17622, 17652, 17683, 17713, 17744, 17775, 17805,
17836, 17866, 17897, 17928, 17956, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17622, 17652, 17683, 17713, 17744, 17775, 17805,
17836, 17866, 17897, 17928, 17956, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17622, 17652, 17683, 17713, 17744, 17775, 17805,
17836, 17866, 17897, 17928, 17956, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17622, 17652, 17683, 17713, 17744, 17775, 17805,
17836, 17866, 17897, 17928, 17956, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17622, 17652, 17683, 17713, 17744, 17775, 17805,
17836, 17866, 17897, 17928, 17956, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17622, 17652, 17683, 17713, 17744, 17775, 17805,
17836, 17866, 17897, 17928, 17956, 17622, 17652, 17683, 17713,
17744, 17775, 17805, 17836, 17866, 17897, 17928, 17956, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897,
17928, 17956, 17622, 17652, 17683, 17713, 17744, 17775, 17805,
17836, 17866, 17897, 17928, 17956), class = "Date"), Value = c(0.00488,
0.00603, 0.00477, 0.00589, 0.00814, 0.00642, 0.00679, 0.00609,
0.00403, 0.00909, 0.00727, 0.0048, 0.02366, 0.01599, 0.01527,
0.0164, 0.01521, 0.01566, 0.01381, 0.01941, 0.0196, 0.02411,
0.02158, 0.02307, 0.02161, 0.02419, 0.02393, 0.01991, 0.0218,
0.02036, 0.01666, 0.02389, 0.01842, 0.02932, 0.01998, 0.02315,
0.04053, 0.04161, 0.04045, 0.04937, 0.03595, 0.03852, 0.04895,
0.03786, 0.03136, 0.04497, 0.03678, 0.04276, 0.00175, 0.00243,
0.00474, 0.00502, 0.00665, 0.00457, 0.00847, 0.00494, 0.00271,
0.00265, 0.00602, 0.00451, 0.03749, 0.0341, 0.03823, 0.0432,
0.04814, 0.03773, 0.03829, 0.0383, 0.03803, 0.04674, 0.03968,
0.04482, 0.25824, 0.2541, 0.26486, 0.32075, 0.26146, 0.27273,
0.28191, 0.23684, 0.22193, 0.29765, 0.30052, 0.31282, 0.0131,
0.02674, 0.01137, 0.01965, 0.02185, 0.02844, 0.02298, 0.02145,
0.02187, 0.03242, 0.02213, 0.02128, 0.05535, 0.0588, 0.05653,
0.05804, 0.04997, 0.05085, 0.05835, 0.05721, 0.05204, 0.06247,
0.06009, 0.06425, 0.275, 0.5, 0.4, 0.375, 0.45, 0.425, 0.275,
0.275, 0.225, 0.3, 0.325, 0.35, 0.25047, 0.26969, 0.23524, 0.21364,
0.23965, 0.21167, 0.2466, 0.2575, 0.22213, 0.23955, 0.22099,
0.20157, 0.01455, 0.01958, 0.0194, 0.01931, 0.01916, 0.01901,
0.02117, 0.02436, 0.03012, 0.02367, 0.0211, 0.01618, 0.03707,
0.03481, 0.03357, 0.03637, 0.04391, 0.03939, 0.03922, 0.05372,
0.03559, 0.05253, 0.04771, 0.04948, 0.09733, 0.12215, 0.11575,
0.10066, 0.11662, 0.09571, 0.09593, 0.11425, 0.09891, 0.13107,
0.11913, 0.12753, 0.16986, 0.17615, 0.21867, 0.18883, 0.18898,
0.22762, 0.135, 0.17317, 0.16945, 0.14858, 0.19451, 0.11659,
0.09441, 0.15135, 0.11804, 0.11181, 0.12594, 0.10972, 0.11313,
0.08373, 0.10206, 0.10558, 0.08821, 0.10629, 0.01472, 0.01466,
0.01521, 0.01733, 0.01718, 0.01489, 0.01457, 0.0174, 0.01009,
0.01713, 0.01636, 0.01198, 0.0687, 0.08581, 0.08247, 0.08407,
0.08265, 0.0785, 0.06906, 0.08113, 0.07246, 0.07717, 0.07311,
0.07862, 0.04762, 0.02301, 0.01534, 0.0291, 0.03063, 0.02757,
0.0229, 0.03049, 0.01524, 0.01524, 0.01979, 0.02435, 0.3038,
0.32317, 0.34615, 0.28571, 0.30423, 0.35196, 0.34341, 0.28165,
0.24615, 0.26303, 0.3, 0.28471, 0.20833, 0.21667, 0.28926, 0.29032,
0.31496, 0.18182, 0.31343, 0.26277, 0.23188, 0.26056, 0.24658,
0.21711, 0.24265, 0.38571, 0.22667, 0.24837, 0.29221, 0.27848,
0.2622, 0.28824, 0.26901, 0.29444, 0.2459, 0.3, 0.25843, 0.2809,
0.18436, 0.3352, 0.26816, 0.22222, 0.25556, 0.24309, 0.22099,
0.24309, 0.21547, 0.20879), Violation = c(FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-276L)) %>%
mutate(label = if_else(Date == max(Date), Fruit, NA_character_))
df
#> # A tibble: 276 x 5
#> Fruit Date Value Violation label
#> <chr> <date> <dbl> <lgl> <chr>
#> 1 Yellow Pear 2018-04-01 0.00488 FALSE NA
#> 2 Yellow Pear 2018-05-01 0.00603 FALSE NA
#> 3 Yellow Pear 2018-06-01 0.00477 FALSE NA
#> 4 Yellow Pear 2018-07-01 0.00589 FALSE NA
#> 5 Yellow Pear 2018-08-01 0.00814 FALSE NA
#> 6 Yellow Pear 2018-09-01 0.00642 FALSE NA
#> 7 Yellow Pear 2018-10-01 0.00679 FALSE NA
#> 8 Yellow Pear 2018-11-01 0.00609 FALSE NA
#> 9 Yellow Pear 2018-12-01 0.00403 FALSE NA
#> 10 Yellow Pear 2019-01-01 0.00909 FALSE NA
#> # ... with 266 more rows
对于上面巨大的数据框代码块感到抱歉。这就是我正在处理的事情。请将其复制粘贴到 R Studio 中以开始使用。
现在已经完成了,我正在努力获得ggrepel
包装上标注红线如下图所示。我一直在旋转旋钮(参数)ggrepel
但无法得到任何漂亮的东西。我希望标签不碍事,并以与线条排列顺序相同的顺序到达图表的右侧。我们可以将标签也设为红色吗?
What ggrepel
争论会让我到达那里吗?或者有没有更好的方法可以用普通的 ggplot 来做到这一点?
ggplot(df, aes(Date, Value, group = Fruit)) +
geom_line(aes(color = Violation)) +
scale_color_manual(values = c("grey30", "red")) +
scale_x_date(breaks = "month", date_labels = "%b") +
scale_y_continuous(breaks = seq(0, 0.7, by = 0.05)) +
coord_cartesian(ylim = c(-0.25, 0.7)) +
labs(x = NULL, y = "Value\n") +
theme_minimal() +
theme(panel.grid = element_blank(),
axis.ticks.x = element_line(),
#axis.line.x = element_blank(),
axis.line.y = element_line(),
axis.ticks.y = element_line()) +
geom_text_repel(data = df %>% filter(Violation == TRUE),
aes(label = label),
direction = "y",
hjust = 0,
segment.size = 0.2,
nudge_x = 1,
na.rm = TRUE)