Revisión | f137675fd64a56dc01bf7872940a590d4628b924 (tree) |
---|---|
Tiempo | 2023-01-25 18:34:08 |
Autor | Lorenzo Isella <lorenzo.isella@gmai...> |
Commiter | Lorenzo Isella |
A script to make a panel plot which highlights a single line in each panel.
@@ -0,0 +1,157 @@ | ||
1 | +rm(list=ls()) | |
2 | + | |
3 | + | |
4 | +## see https://www.r-bloggers.com/2023/01/show-all-data-in-the-background-of-your-faceted-ggplot/ | |
5 | + | |
6 | + | |
7 | +library(tidyverse) | |
8 | +library(lubridate) | |
9 | + | |
10 | +source("/home/lorenzo/myprojects-hg/R-codes/stat_lib.R") | |
11 | + | |
12 | +df_reg <- structure(list(quart = c("2017 Q1", "2017 Q2", "2017 Q3", "2017 Q4", | |
13 | +"2018 Q1", "2018 Q2", "2018 Q3", "2018 Q4", "2019 Q1", "2019 Q2", | |
14 | +"2019 Q3"), reg_avg = c(74L, 69L, 69L, 73L, 78L, 67L, 61L, 63L, | |
15 | +71L, 68L, 61L)), row.names = c(NA, -11L), class = c("tbl_df", | |
16 | +"tbl", "data.frame")) | |
17 | + | |
18 | +nn <- nrow(df_reg) | |
19 | + | |
20 | + | |
21 | +df <- structure(list(quart = c("2017 Q1", "2017 Q1", "2017 Q1", "2017 Q1", | |
22 | +"2017 Q1", "2017 Q1", "2017 Q1", "2017 Q1", "2017 Q1", "2017 Q1", | |
23 | +"2017 Q1", "2017 Q1", "2017 Q1", "2017 Q1", "2017 Q2", "2017 Q2", | |
24 | +"2017 Q2", "2017 Q2", "2017 Q2", "2017 Q2", "2017 Q2", "2017 Q2", | |
25 | +"2017 Q2", "2017 Q2", "2017 Q2", "2017 Q2", "2017 Q2", "2017 Q2", | |
26 | +"2017 Q3", "2017 Q3", "2017 Q3", "2017 Q3", "2017 Q3", "2017 Q3", | |
27 | +"2017 Q3", "2017 Q3", "2017 Q3", "2017 Q3", "2017 Q3", "2017 Q3", | |
28 | +"2017 Q3", "2017 Q3", "2017 Q4", "2017 Q4", "2017 Q4", "2017 Q4", | |
29 | +"2017 Q4", "2017 Q4", "2017 Q4", "2017 Q4", "2017 Q4", "2017 Q4", | |
30 | +"2017 Q4", "2017 Q4", "2017 Q4", "2017 Q4", "2018 Q1", "2018 Q1", | |
31 | +"2018 Q1", "2018 Q1", "2018 Q1", "2018 Q1", "2018 Q1", "2018 Q1", | |
32 | +"2018 Q1", "2018 Q1", "2018 Q1", "2018 Q1", "2018 Q1", "2018 Q1", | |
33 | +"2018 Q2", "2018 Q2", "2018 Q2", "2018 Q2", "2018 Q2", "2018 Q2", | |
34 | +"2018 Q2", "2018 Q2", "2018 Q2", "2018 Q2", "2018 Q2", "2018 Q2", | |
35 | +"2018 Q2", "2018 Q2", "2018 Q3", "2018 Q3", "2018 Q3", "2018 Q3", | |
36 | +"2018 Q3", "2018 Q3", "2018 Q3", "2018 Q3", "2018 Q3", "2018 Q3", | |
37 | +"2018 Q3", "2018 Q3", "2018 Q3", "2018 Q3", "2018 Q4", "2018 Q4", | |
38 | +"2018 Q4", "2018 Q4", "2018 Q4", "2018 Q4", "2018 Q4", "2018 Q4", | |
39 | +"2018 Q4", "2018 Q4", "2018 Q4", "2018 Q4", "2018 Q4", "2018 Q4", | |
40 | +"2019 Q1", "2019 Q1", "2019 Q1", "2019 Q1", "2019 Q1", "2019 Q1", | |
41 | +"2019 Q1", "2019 Q1", "2019 Q1", "2019 Q1", "2019 Q1", "2019 Q1", | |
42 | +"2019 Q1", "2019 Q1", "2019 Q2", "2019 Q2", "2019 Q2", "2019 Q2", | |
43 | +"2019 Q2", "2019 Q2", "2019 Q2", "2019 Q2", "2019 Q2", "2019 Q2", | |
44 | +"2019 Q2", "2019 Q2", "2019 Q2", "2019 Q2", "2019 Q3", "2019 Q3", | |
45 | +"2019 Q3", "2019 Q3", "2019 Q3", "2019 Q3", "2019 Q3", "2019 Q3", | |
46 | +"2019 Q3", "2019 Q3", "2019 Q3", "2019 Q3", "2019 Q3", "2019 Q3" | |
47 | +), dealer = structure(c(9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
48 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
49 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
50 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
51 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
52 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
53 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
54 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
55 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
56 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
57 | +12L, 4L, 8L, 7L, 6L, 9L, 2L, 3L, 1L, 14L, 5L, 10L, 11L, 13L, | |
58 | +12L, 4L, 8L, 7L, 6L), levels = c("Lakeside", "Draper", "Filmore", | |
59 | +"Sealy", "North", "Wildland", "Westlake", "Southlake", "Beacon", | |
60 | +"Oakley", "Orly", "Rosedale", "Pierce", "Mare valley"), class = "factor"), | |
61 | + value = c(69L, 130L, 85L, 117L, 16L, 74L, 61L, 51L, 35L, | |
62 | + 65L, 93L, 72L, 83L, 83L, 77L, 86L, 97L, 107L, 17L, 71L, 55L, | |
63 | + 61L, 32L, 55L, 89L, 64L, 73L, 79L, 63L, 90L, 92L, 127L, 18L, | |
64 | + 68L, 55L, 67L, 32L, 59L, 79L, 58L, 73L, 81L, 61L, 100L, 95L, | |
65 | + 132L, 21L, 72L, 72L, 51L, 49L, 53L, 82L, 77L, 85L, 75L, 67L, | |
66 | + 106L, 92L, 145L, 21L, 69L, 79L, 51L, 49L, 59L, 94L, 87L, | |
67 | + 87L, 79L, 67L, 91L, 83L, 112L, 17L, 71L, 60L, 66L, 42L, 52L, | |
68 | + 83L, 70L, 54L, 72L, 57L, 89L, 103L, 107L, 17L, 56L, 42L, | |
69 | + 52L, 23L, 41L, 84L, 66L, 59L, 51L, 62L, 87L, 109L, 95L, 17L, | |
70 | + 66L, 44L, 60L, 48L, 37L, 81L, 59L, 64L, 46L, 68L, 93L, 94L, | |
71 | + 126L, 21L, 83L, 65L, 66L, 38L, 63L, 89L, 66L, 59L, 66L, 61L, | |
72 | + 96L, 104L, 133L, 13L, 79L, 80L, 47L, 24L, 49L, 70L, 65L, | |
73 | + 68L, 57L, 54L, 103L, 88L, 105L, 22L, 66L, 37L, 63L, 26L, | |
74 | + 52L, 66L, 55L, 51L, 69L), avg_sales = c(64.1818181818182, | |
75 | + 97.3636363636364, 94.7272727272727, 118.727272727273, 18.1818181818182, | |
76 | + 70.4545454545455, 59.0909090909091, 57.7272727272727, 36.1818181818182, | |
77 | + 53.1818181818182, 82.7272727272727, 67.1818181818182, 68.7272727272727, | |
78 | + 68.9090909090909, 64.1818181818182, 97.3636363636364, 94.7272727272727, | |
79 | + 118.727272727273, 18.1818181818182, 70.4545454545455, 59.0909090909091, | |
80 | + 57.7272727272727, 36.1818181818182, 53.1818181818182, 82.7272727272727, | |
81 | + 67.1818181818182, 68.7272727272727, 68.9090909090909, 64.1818181818182, | |
82 | + 97.3636363636364, 94.7272727272727, 118.727272727273, 18.1818181818182, | |
83 | + 70.4545454545455, 59.0909090909091, 57.7272727272727, 36.1818181818182, | |
84 | + 53.1818181818182, 82.7272727272727, 67.1818181818182, 68.7272727272727, | |
85 | + 68.9090909090909, 64.1818181818182, 97.3636363636364, 94.7272727272727, | |
86 | + 118.727272727273, 18.1818181818182, 70.4545454545455, 59.0909090909091, | |
87 | + 57.7272727272727, 36.1818181818182, 53.1818181818182, 82.7272727272727, | |
88 | + 67.1818181818182, 68.7272727272727, 68.9090909090909, 64.1818181818182, | |
89 | + 97.3636363636364, 94.7272727272727, 118.727272727273, 18.1818181818182, | |
90 | + 70.4545454545455, 59.0909090909091, 57.7272727272727, 36.1818181818182, | |
91 | + 53.1818181818182, 82.7272727272727, 67.1818181818182, 68.7272727272727, | |
92 | + 68.9090909090909, 64.1818181818182, 97.3636363636364, 94.7272727272727, | |
93 | + 118.727272727273, 18.1818181818182, 70.4545454545455, 59.0909090909091, | |
94 | + 57.7272727272727, 36.1818181818182, 53.1818181818182, 82.7272727272727, | |
95 | + 67.1818181818182, 68.7272727272727, 68.9090909090909, 64.1818181818182, | |
96 | + 97.3636363636364, 94.7272727272727, 118.727272727273, 18.1818181818182, | |
97 | + 70.4545454545455, 59.0909090909091, 57.7272727272727, 36.1818181818182, | |
98 | + 53.1818181818182, 82.7272727272727, 67.1818181818182, 68.7272727272727, | |
99 | + 68.9090909090909, 64.1818181818182, 97.3636363636364, 94.7272727272727, | |
100 | + 118.727272727273, 18.1818181818182, 70.4545454545455, 59.0909090909091, | |
101 | + 57.7272727272727, 36.1818181818182, 53.1818181818182, 82.7272727272727, | |
102 | + 67.1818181818182, 68.7272727272727, 68.9090909090909, 64.1818181818182, | |
103 | + 97.3636363636364, 94.7272727272727, 118.727272727273, 18.1818181818182, | |
104 | + 70.4545454545455, 59.0909090909091, 57.7272727272727, 36.1818181818182, | |
105 | + 53.1818181818182, 82.7272727272727, 67.1818181818182, 68.7272727272727, | |
106 | + 68.9090909090909, 64.1818181818182, 97.3636363636364, 94.7272727272727, | |
107 | + 118.727272727273, 18.1818181818182, 70.4545454545455, 59.0909090909091, | |
108 | + 57.7272727272727, 36.1818181818182, 53.1818181818182, 82.7272727272727, | |
109 | + 67.1818181818182, 68.7272727272727, 68.9090909090909, 64.1818181818182, | |
110 | + 97.3636363636364, 94.7272727272727, 118.727272727273, 18.1818181818182, | |
111 | + 70.4545454545455, 59.0909090909091, 57.7272727272727, 36.1818181818182, | |
112 | + 53.1818181818182, 82.7272727272727, 67.1818181818182, 68.7272727272727, | |
113 | + 68.9090909090909)), row.names = c(NA, -154L), class = c("tbl_df", | |
114 | +"tbl", "data.frame")) | |
115 | + | |
116 | + | |
117 | + | |
118 | +# plot | |
119 | + | |
120 | +df <- df |> | |
121 | + mutate(new=dealer) | |
122 | + | |
123 | +gpl <- df |> | |
124 | + ## mutate(new = dealer) |> | |
125 | + ggplot(aes(quart, value))+ | |
126 | + geom_hline(yintercept = 0)+ | |
127 | + geom_line( | |
128 | + data = df |> select(-dealer), | |
129 | + aes(group = new), | |
130 | + color = "grey", | |
131 | + linewidth = .5, | |
132 | + alpha = 0.5 | |
133 | + ) + | |
134 | + my_ggplot_theme2("right")+ | |
135 | + | |
136 | + facet_wrap(~dealer, ncol = 5) + | |
137 | + geom_line( | |
138 | + data = df_reg, aes(y = reg_avg, group = 1 | |
139 | + ), | |
140 | + size = .5, color = "black" | |
141 | + ) + | |
142 | + | |
143 | + geom_line(aes(group = dealer), size = .5, color="red") + | |
144 | + | |
145 | + scale_x_discrete(labels = seq(1:nn), expand = c(0.1,0.1))+ | |
146 | + scale_y_continuous(sec.axis = dup_axis()) + | |
147 | + geom_text( | |
148 | + data = df |> filter(dealer == "Mare valley", quart == "2019 Q3") |> | |
149 | + transmute(dealer, quart, value = 90), | |
150 | + label = "Regional average", hjust = 1, size = 3, | |
151 | + color = "black" | |
152 | + ) | |
153 | + | |
154 | +ggsave("panel_ilya.pdf", gpl, width=15,height=10) | |
155 | + | |
156 | + | |
157 | +print("So far so good") |