Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Space between labels and line in gganimate

I have tried to create an animated graph for which I am using geom_smooth that moves and also the labels that move with the lines. However, I am not able to provide space between the line and labels so their legibility is affected. Need to solve this.

The code for plotting the animation is as follows.

p <- ggplot(tbl66, aes(x=TRDAY, y=log(AVMKTPC), col=LABEL2, group = LABEL2)) + geom_line(size=1) + 
  theme(legend.position="none") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
  geom_dl(aes(label = LABEL2), method = list(dl.combine("first.points")), cex = 1)  +
  theme(panel.background = element_rect(fill = "#030905")) +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
  transition_reveal(TRDAY) + 
  ease_aes('cubic-in-out') +
  labs(title = 'Date: {frame_along}') +
  theme(legend.position = 'none',
        title = element_text(size = 11, face = "bold"),
        axis.title.x = element_blank(),
        axis.title = element_text(size = 14, face = "bold"),
        strip.text = element_text(size = 14, face = "bold"),
        plot.caption = element_text(face = "italic"))

animate(p, 10, .2, height=900, width=1100, res=100)
anim_save("codovid.gif")

The output is a gif file which is attached.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

The sample data is given here. It provides three columns one is the date column and the second is the value column and the third is the label column. I need these values to run ahead of line with some space.

structure(list(TRDAY = structure(c(1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600, 1659897000, 1660069800, 1660156200, 
1660242600, 1660588200, 1660674600), class = c("POSIXct", "POSIXt"
), tzone = ""), AVMKTPC = c(134.2, 136.8, 137.4, 136.8, 136.5, 
135.3, 120.4, 120.8, 120.7, 121.7, 120.4, 119.3, 137, 137.1, 
136.1, 136.5, 136.8, 138, 140.7, 142.2, 141.3, 138.2, 135.6, 
134.8, 133, 131.5, 130.9, 130, 130.1, 128.5, 139, 135.8, 132.4, 
129.4, 130, 133.9, 128.3, 125.3, 121.6, 118.9, 118.9, 119.1, 
119.8, 118.9, 116.6, 116.2, 116.8, 117.9, 157.7, 155.8, 149.6, 
145.5, 144.6, 145.9, 164.2, 149.1, 130.7, 125, 122.8, 125.3, 
140.6, 142.8, 142.5, 143.2, 143.5, 145.3, 134.3, 133.1, 131.3, 
130.8, 130.4, 130, 121.2, 121.8, 121.6, 121.9, 122, 123, 147.4, 
142.9, 138.5, 138.4, 139.6, 140.5, 143.5, 142.3, 141, 141.3, 
141.7, 141.8, 148.1, 149.1, 149, 148.8, 148.5, 149.6, 150.2, 
147.7, 145.9, 144.2, 143, 142.5, 129.5, 127.8, 126.2, 125.5, 
129.7, 131.9, 136.5, 137, 136.2, 134.8, 135.7, 134, 133.2, 133.5, 
133.2, 132.6, 133.5, 142.4, 117.7, 116.4, 114.9, 114.5, 115.2, 
118.6, 140.9, 140.7, 139.9, 138.8, 139.1, 137, 135.6, 132.3, 
129.4, 129.3, 132.7, 135.3, 132.1, 129.9, 125.9, 123.5, 123, 
122.7, 124.6, 124.3, 124.1, 123.3, 124, 125.4, 139.7, 140, 140.3, 
139.7, 139.5, 138.5, 128.5, 128.1, 126.9, 126.7, 127.2, 128.3, 
117.3, 117.4, 116.1, 115, 115.7, 118.5, 136.1, 141.8, 143.4, 
145.5, 142.2, 141.7, 133.5, 132.8, 133.7, 130.8, 126.5, 123.9, 
129.8, 134.8, 135.9, 135.9, 135.4, 136.2, 123.5, 122.8, 121.4, 
120.9, 120.8, 122, 128.2, 125.9, 125, 124.2, 124, 124.1, 146, 
143.3, 141.4, 141.4, 139.7, 139.7, 141.5, 140.2, 139.4, 138.2, 
137.3, 136.3), LABEL2 = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 
5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 
7L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 
10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 
12L, 12L, 12L, 13L, 13L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 
14L, 14L, 15L, 15L, 15L, 15L, 15L, 15L, 16L, 16L, 16L, 16L, 16L, 
16L, 17L, 17L, 17L, 17L, 17L, 17L, 18L, 18L, 18L, 18L, 18L, 18L, 
19L, 19L, 19L, 19L, 19L, 19L, 20L, 20L, 20L, 20L, 20L, 20L, 21L, 
21L, 21L, 21L, 21L, 21L, 22L, 22L, 22L, 22L, 22L, 22L, 23L, 23L, 
23L, 23L, 23L, 23L, 24L, 24L, 24L, 24L, 24L, 24L, 25L, 25L, 25L, 
25L, 25L, 25L, 26L, 26L, 26L, 26L, 26L, 26L, 27L, 27L, 27L, 27L, 
27L, 27L, 28L, 28L, 28L, 28L, 28L, 28L, 29L, 29L, 29L, 29L, 29L, 
29L, 30L, 30L, 30L, 30L, 30L, 30L, 31L, 31L, 31L, 31L, 31L, 31L, 
32L, 32L, 32L, 32L, 32L, 32L, 33L, 33L, 33L, 33L, 33L, 33L, 34L, 
34L, 34L, 34L, 34L, 34L, 35L, 35L, 35L, 35L, 35L, 35L)), row.names = c(NA, 
-210L), class = c("tbl_df", "tbl", "data.frame"))

>Solution :

One option would be to use geom_text(aes(label = LABEL2), hjust = -0.1) to left align the labels with the data points and to add some padding:

library(gganimate)
#> Loading required package: ggplot2

p <- ggplot(tbl66, aes(x=TRDAY, y=log(AVMKTPC), col=LABEL2, group = LABEL2)) + geom_line(size=1) + 
  theme(legend.position="none") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
  geom_text(aes(label = LABEL2), hjust = -0.1) +
  theme(panel.background = element_rect(fill = "#030905")) +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
  transition_reveal(TRDAY) + 
  ease_aes('cubic-in-out') +
  labs(title = 'Date: {frame_along}') +
  theme(legend.position = 'none',
        title = element_text(size = 11, face = "bold"),
        axis.title.x = element_blank(),
        axis.title = element_text(size = 14, face = "bold"),
        strip.text = element_text(size = 14, face = "bold"),
        plot.caption = element_text(face = "italic"))

animate(p, 10, .2, height=900, width=1100, res=100)

# anim_save("codovid.gif")
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading