4 votes

Comment créer des marques de croisement dans ggplot2 ?

J'essaie de créer un graphique linéaire dans ggplot2 qui a des marques de tic-tac qui traversent l'axe, plutôt que juste à l'intérieur ou à l'extérieur de celui-ci.

Mon code actuel est :

library(ggplot2)    
data("economics", package = "ggplot2")

ggplot(economics, aes(x = date, y = uempmed)) + 
  geom_line() + 
  scale_x_date(breaks = seq.Date(from = as.Date("1968-12-31"), to = as.Date("1978-12-31"), by = "12 months"),
               limits = as.Date(c("1968-01-01", "1978-12-31")), labels = scales::date_format("%y")) +
  scale_y_continuous(limits = c(4,10)) +
  theme_bw()

Cela me donne le résultat suivant :

enter image description here

Je peux faire en sorte que les tics soient à l'intérieur ou à l'extérieur lorsque je crée mon propre thème, mais pas les deux simultanément.

Voici un exemple de ce que j'essaie d'accomplir : enter image description here

2voto

ravic_ Points 1351

D'abord, on dirait que vous le savez déjà : Comment faire en sorte que les tics de mes axes soient orientés vers l'intérieur dans ggplot2 ?

Mais les coches peuvent-elles traverser l'axe ? Il s'avère que non, ils ne peuvent pas.

Voici l'extrait pertinent du ggplot2 Repo Github . Vous verrez que le segment est toujours dessiné en partant de l'axe.

Il pourrait y avoir un ggplot2 une extension qui rende cela facile, mais aucune à ma connaissance.

0voto

Tjebo Points 2775

C'est possible avec un léger piratage. Simulez les tics avec des annotations.

library(ggplot2)    

date_breaks <- seq.Date(from = as.Date("1968-12-31"), to = as.Date("1978-12-31"), by = "12 months")

ggplot(economics) + 
  geom_line(aes(x = date, y = uempmed)) + 
  geom_text(data = data.frame(x = date_breaks, y = -Inf),
            aes(x, y, label= '|')) +
  scale_x_date(breaks = date_breaks,
               limits = as.Date(c("1968-01-01", "1978-12-31")), 
               labels = scales::date_format("%y")) +
  scale_y_continuous(limits = c(4,10)) +
  coord_cartesian(clip = "off") +
  theme_bw(base_rect_size = 0.1) +
  theme(axis.ticks.x = element_blank())
#> Warning: Removed 442 row(s) containing missing values (geom_path).

Créé le 2020-05-01 par le paquet reprex (v0.3.0)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X