I have the following dataframe:
df = structure(list(Date = structure(c(18421, 18422, 18423, 18424,
18425, 18428, 18429, 18430, 18431, 18432, 18435, 18436, 18437,
18438, 18439, 18442, 18443, 18444, 18445, 18446, 18449, 18450,
18451, 18452, 18453, 18456, 18457, 18458, 18459, 18460, 18463,
18464, 18465, 18466, 18467, 18470, 18471, 18472, 18473, 18474,
18477, 18478, 18479, 18480, 18481, 18484, 18485, 18486, 18487,
18488, 18491, 18492, 18493, 18494, 18495, 18498, 18499, 18500,
18501, 18502, 18505, 18506, 18507, 18508, 18509, 18512, 18513,
18514, 18515, 18516, 18519, 18520, 18521, 18522, 18523, 18526,
18527, 18528, 18529, 18530, 18533, 18534, 18535, 18536, 18537,
18540, 18541, 18542, 18543, 18544, 18547, 18548, 18549, 18550,
18551, 18554, 18555, 18556, 18557, 18558, 18561, 18562, 18563,
18564, 18565, 18568, 18569, 18570, 18571, 18572, 18575, 18576,
18577, 18578, 18579, 18582, 18583, 18584, 18585, 18586, 18589,
18590, 18591, 18592, 18593, 18596, 18597, 18598, 18599, 18600,
18603, 18604, 18605, 18606, 18607, 18610, 18611, 18612, 18613,
18614, 18617, 18618, 18619, 18620, 18621, 18624, 18625, 18626,
18627, 18628, 18631, 18632, 18633, 18634, 18635, 18638, 18639,
18640, 18641, 18642, 18645, 18646, 18647, 18648, 18649, 18652,
18653, 18654, 18655, 18656, 18659, 18660, 18661, 18662, 18663,
18666, 18667, 18668, 18669, 18670, 18673, 18674, 18675, 18676,
18677, 18680, 18681, 18682, 18683, 18684, 18687, 18688, 18689,
18690, 18691, 18694, 18695, 18696, 18697, 18698, 18701, 18702,
18703, 18704, 18705, 18708, 18709, 18710, 18711, 18712, 18715,
18716, 18717, 18718, 18719, 18722, 18723, 18724, 18725, 18726,
18729, 18730, 18731, 18732, 18733, 18736, 18737, 18738, 18739,
18740, 18743, 18744, 18745, 18746, 18747, 18750, 18751, 18752,
18753, 18754, 18757, 18758, 18759, 18760, 18761, 18764, 18765,
18766, 18767, 18768, 18771, 18772, 18773, 18774, 18775, 18778,
18779, 18780, 18781, 18782, 18785, 18786, 18787, 18788, 18789,
18792, 18793, 18794, 18795, 18796, 18799, 18800, 18801, 18802,
18803, 18806, 18807, 18808, 18809, 18810, 18813, 18814, 18815,
18816, 18817, 18820, 18821, 18822, 18823, 18824, 18827, 18828,
18829, 18830, 18831, 18834, 18835, 18836, 18837, 18838, 18841,
18842, 18843, 18844, 18845, 18848, 18849, 18850, 18851, 18852,
18855, 18856, 18857, 18858, 18859, 18862, 18863, 18864, 18865,
18866, 18869, 18870, 18871, 18872, 18873, 18876, 18877, 18878,
18879, 18880, 18883, 18884, 18885, 18886, 18887, 18890, 18891,
18892, 18893, 18894, 18897, 18898, 18899, 18900, 18901, 18904,
18905, 18906, 18907, 18908, 18911, 18912, 18913, 18914, 18915,
18918, 18919, 18920, 18921, 18922, 18925, 18926, 18927, 18928,
18929, 18932, 18933, 18934, 18935, 18936, 18939, 18940, 18941,
18942, 18943, 18946, 18947, 18948, 18949, 18950, 18953, 18954,
18955, 18956, 18957, 18960, 18976, 18976, 18976), class = "Date"),
Data = c(8.9, 8.7, 8.68, 8.355, 8.19, 8.2, 8.5, 8.4, 8.26,
7.55, 7.54, 7.9, 7.66, 7.6, 7.5, 7.6, 7.95, 8, 8, 8, 7.96,
7.91, 8.03, 8.46, 9.113, 9.2, 9.37, 9.31, 9.06, 9, 8.95,
8.88, 8.91, 8.85, 8.77, 8.62, 8.6, 8.56, 8.52, 8.52, 8.38,
8.51, 8.49, 8.6, 8.62, 8.5, 8.45, 8.6, 8.84, 8.87, 9.06,
9.23, 9.15, 9.15, 9.2, 9.15, 9.18, 9.15, 9.1, 9.3, 9.27,
9.3, 9.22, 9.1, 9.19, 9.19, 9, 8.77, 8.7, 8.63, 8.49, 8.26,
8.2, 7.8, 7.87, 8.1, 8.3, 8.12, 8.2, 8.52, 8.65, 8.78, 8.88,
8.91, 8.85, 8.9, 8.82, 8.82, 8.84, 8.8, 8.75, 8.85, 8.89,
8.99, 9, 8.97, 9.15, 9.01, 9.01, 9.03, 8.9, 8.76, 8.593,
8.6, 8.2, 8, 8.555, 8.5, 8.73, 9, 9, 8.93, 8.99, 8.96, 8.9,
8.9, 8.89, 9.3, 11.25, 10.74, 10.55, 10.7, 10.9, 10.9, 10.857,
10.64, 10.51, 10.52, 10.57, 10.69, 10.67, 10.16, 10.65, 10.85,
10.59, 10.25, 8.795, 8.83, 8.75, 9.51, 9.85, 10.05, 9.67,
9.02, 9.02, 8.6, 8.78, 8.79, 8.58, 8.58, 8.4, 7.86, 7.47,
6.8, 6.65, 6.75, 6.8, 6.13, 6.47, 5.8, 5.8, 5.89, 6.29, 6.01,
5.95, 5.92, 6.01, 5.93, 5.66, 5.75, 5.52, 5.77, 5.74, 5.55,
5.54, 5.49, 5.59, 5.65, 5.7, 6.1, 6.1, 6.1, 6.08, 5.92, 5.76,
5.9, 5.75, 5.7, 5.52, 5.67, 5.88, 5.8, 5.75, 5.8, 5.73, 5.68,
5.75, 5.71, 5.69, 5.67, 5.72, 5.69, 5.68, 5.55, 5.53, 5.52,
5.5, 5.47, 5.42, 5.3, 5.34, 5.41, 5.55, 5.65, 5.65, 5.85,
6.04, 6.32, 6.85, 6.75, 6.613, 6.59, 6.55, 6.56, 6.76, 6.66,
6.6, 6.72, 6.68, 6.62, 6.67, 6.597, 6.5, 6.38, 6.28, 6.2,
6, 6.12, 6.24, 6.25, 6.31, 6.26, 6.3, 6.34, 6.45, 6.31, 6.19,
6.05, 6.2, 6.23, 6.1, 6.06, 6.03, 6.32, 6.37, 6.37, 6.49,
6.6, 6.36, 6.45, 6.64, 6.6, 6.55, 6.6, 6.73, 6.78, 6.69,
6.75, 6.75, 6.69, 6.67, 6.7, 2.52, 2.14, 2.12, 2.31, 2.25,
2.13, 2.16, 2.12, 2.12, 2, 1.97, 1.92, 1.9, 1.85, 1.85, 1.85,
1.86, 1.78, 1.68, 1.709, 2.04, 2.11, 2.05, 2.04, 1.99, 2.03,
2, 1.95, 1.95, 1.92, 1.84, 1.89, 1.86, 1.74, 1.76, 1.75,
1.71, 1.7, 1.71, 1.6, 1.76, 1.685, 1.63, 1.61, 1.67, 1.75,
1.81, 1.81, 1.79, 1.76, 1.79, 1.76, 1.76, 1.76, 1.76, 1.7,
1.68, 1.68, 1.93, 2.37, 2.55, 2.33, 2.19, 2.03, 2.17, 2.31,
2.46, 2.45, 2.47, 2.46, 2.53, 2.6, 2.57, 2.47, 2.42, 2.2,
2.24, 2.24, 2.289, 2.32, 2.32, 2.36, 2.34, 2.38, 2.66, 2.71,
2.74, 2.89, 2.85, 2.96, 3.27, 3.36, 3.48, 3.45, 3.53, 3.525,
3.51, 3.5, 3.496, 3.47, 3.47, 3.42, 3.46, 3.47, 3.45, 3.46,
3.47, 3.46, 3.4, 3.44, 3.43, 3.43, 3.4, 3.33, 3.33, 4.01,
2.5)), row.names = c(2208L, 2209L, 2210L, 2211L, 2212L, 2213L,
2214L, 2215L, 2216L, 2217L, 2218L, 2219L, 2220L, 2221L, 2222L,
2223L, 2224L, 2225L, 2226L, 2227L, 2228L, 2229L, 2230L, 2231L,
2232L, 2233L, 2234L, 2235L, 2236L, 2237L, 2238L, 2239L, 2240L,
2241L, 2242L, 2243L, 2244L, 2245L, 2246L, 2247L, 2248L, 2249L,
2250L, 2251L, 2252L, 2253L, 2254L, 2255L, 2256L, 2257L, 2258L,
2259L, 2260L, 2261L, 2262L, 2263L, 2264L, 2265L, 2266L, 2267L,
2268L, 2269L, 2270L, 2271L, 2272L, 2273L, 2274L, 2275L, 2276L,
2277L, 2278L, 2279L, 2280L, 2281L, 2282L, 2283L, 2284L, 2285L,
2286L, 2287L, 2288L, 2289L, 2290L, 2291L, 2292L, 2293L, 2294L,
2295L, 2296L, 2297L, 2298L, 2299L, 2300L, 2301L, 2302L, 2303L,
2304L, 2305L, 2306L, 2307L, 2308L, 2309L, 2310L, 2311L, 2312L,
2313L, 2314L, 2315L, 2316L, 2317L, 2318L, 2319L, 2320L, 2321L,
2322L, 2323L, 2324L, 2325L, 2326L, 2327L, 2328L, 2329L, 2330L,
2331L, 2332L, 2333L, 2334L, 2335L, 2336L, 2337L, 2338L, 2339L,
2340L, 2341L, 2342L, 2343L, 2344L, 2345L, 2346L, 2347L, 2348L,
2349L, 2350L, 2351L, 2352L, 2353L, 2354L, 2355L, 2356L, 2357L,
2358L, 2359L, 2360L, 2361L, 2362L, 2363L, 2364L, 2365L, 2366L,
2367L, 2368L, 2369L, 2370L, 2371L, 2372L, 2373L, 2374L, 2375L,
2376L, 2377L, 2378L, 2379L, 2380L, 2381L, 2382L, 2383L, 2384L,
2385L, 2386L, 2387L, 2388L, 2389L, 2390L, 2391L, 2392L, 2393L,
2394L, 2395L, 2396L, 2397L, 2398L, 2399L, 2400L, 2401L, 2402L,
2403L, 2404L, 2405L, 2406L, 2407L, 2408L, 2409L, 2410L, 2411L,
2412L, 2413L, 2414L, 2415L, 2416L, 2417L, 2418L, 2419L, 2420L,
2421L, 2422L, 2423L, 2424L, 2425L, 2426L, 2427L, 2428L, 2429L,
2430L, 2431L, 2432L, 2433L, 2434L, 2435L, 2436L, 2437L, 2438L,
2439L, 2440L, 2441L, 2442L, 2443L, 2444L, 2445L, 2446L, 2447L,
2448L, 2449L, 2450L, 2451L, 2452L, 2453L, 2454L, 2455L, 2456L,
2457L, 2458L, 2459L, 2460L, 2461L, 2462L, 2463L, 2464L, 2465L,
2466L, 2467L, 2468L, 2469L, 2470L, 2471L, 2472L, 2473L, 2474L,
2475L, 2476L, 2477L, 2478L, 2479L, 2480L, 2481L, 2482L, 2483L,
2484L, 2485L, 2486L, 2487L, 2488L, 2489L, 2490L, 2491L, 2492L,
2493L, 2494L, 2495L, 2496L, 2497L, 2498L, 2499L, 2500L, 2501L,
2502L, 2503L, 2504L, 2505L, 2506L, 2507L, 2508L, 2509L, 2510L,
2511L, 2512L, 2513L, 2514L, 2515L, 2516L, 2517L, 2518L, 2519L,
2520L, 2521L, 2522L, 2523L, 2524L, 2525L, 2526L, 2527L, 2528L,
2529L, 2530L, 2531L, 2532L, 2533L, 2534L, 2535L, 2536L, 2537L,
2538L, 2539L, 2540L, 2541L, 2542L, 2543L, 2544L, 2545L, 2546L,
2547L, 2548L, 2549L, 2550L, 2551L, 2552L, 2553L, 2554L, 2555L,
2556L, 2557L, 2558L, 2559L, 2560L, 2561L, 2562L, 2563L, 2564L,
2565L, 2566L, 2567L, 2568L, 2569L, 2570L, 2571L, 2572L, 2573L,
2574L, 2575L, 2576L, 2577L, 2578L, 2579L, 2580L, 2581L, 2582L,
2583L, 2584L, 2585L, 2586L, 2587L, 2588L, 2589L, 2590L, 2591L,
2592L, 2593L, 1L, 2L, 3L), class = "data.frame")
tail(df)
Date Data
2591 2021-11-25 3.43
2592 2021-11-26 3.40
2593 2021-11-29 3.33
2594 2021-12-15 3.33
2595 2021-12-15 4.01
2596 2021-12-15 2.50
As you can see from the tail of the dataset, the last 3 observations occur in the same day. What I would like to do is to plot those observations at the end of last observation (2021-11-29) as 3 distinct scenarios.
This is the simple code for the simple ggplot time series without the last 3 obs:
library("ggplot2")
ggplot(df[-c(2594:2596),], aes(x = Date, y = Data))
geom_line(size = 1, color = "blue")
labs(x="", y="")
theme_classic()
theme(panel.border = element_rect(fill=NA),legend.title = element_blank())
theme(text = element_text(size=20))
However, I would like to get something like this (forgive my paint skills):
You can create annotations, adjust the visualisation, and otherwise finalise the image easily from there.
CodePudding user response:
library(tidyverse)
df <- df %>%
group_by(Date) %>%
arrange(-Data) %>%
mutate(
group = row_number() %>%
as.character() %>%
recode("1" = "Bull", "2" = "Neutral", "3" = "Bear")
)
ggplot(tibble(), aes(x = Date, y = Data))
geom_line(
data = df %>% filter(n() == 1),
size = 1, color = "blue"
)
geom_point(
data = df %>% filter(n() == 3),
mapping = aes(color = group)
)
labs(x = "", y = "")
theme_classic()
theme(panel.border = element_rect(fill = NA), legend.title = element_blank())
theme(text = element_text(size = 20))
Created on 2021-12-01 by the reprex package (v2.0.1)