• R/O
  • SSH

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javaandroidc++linuxc#windowsobjective-ccocoaqtpython誰得phprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisiónf137675fd64a56dc01bf7872940a590d4628b924 (tree)
Tiempo2023-01-25 18:34:08
AutorLorenzo Isella <lorenzo.isella@gmai...>
CommiterLorenzo Isella

Log Message

A script to make a panel plot which highlights a single line in each panel.

Cambiar Resumen

Diferencia incremental

diff -r b849bec577de -r f137675fd64a R-codes/panel_plot_ilya.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/R-codes/panel_plot_ilya.R Wed Jan 25 10:34:08 2023 +0100
@@ -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")