ggplot supprimer des étiquettes spécifiques d'axe x

voix
0
library(tidyverse)

df <- data.frame(date = as.Date(c(2017-12-01, 2018-01-01, 2018-02-01, 
                                  2018-03-01, 2018-04-01, 2018-05-01, 
                                  2018-06-01, 2018-07-01, 2018-08-01, 
                                  2018-09-01, 2018-10-01, 2018-11-01)), 
                 value = c(0.567859562, 0.514907158, 0.035399304, 0.485728823, 
                           0.925127361, 0.237531067, 0.301930968, 0.133373326, 
                           0.082275426, 0.464255614, 0.2366749, 0.652084264))

ggplot(df, aes(date, value)) + 
  geom_col() + 
  scale_x_date(date_breaks = 1 month, 
                 date_labels = %b) + 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.3))

Je veux maintenir ma parcelle indiquée ci - dessous, exactement comme il est, à deux exceptions près. Je veux supprimer le premier Novsur l'étiquette axe x et le dernier Decsur l'étiquette x axe. J'ai ajouté coord_cartesian(xlim = as.Date(c(2017-12-01, 2018-11-01)))à mon morceau de code ci - dessus, mais ce qui élimine le rembourrage « espace blanc » à chaque extrémité de mon axe x.

Comment puis-je dire simplement ggplot de supprimer le texte de la première et dernière étiquettes x-axe? Ce serait le premier Novet le dernier Dec. Notez que ceux - ci n'existe pas dans ma dftrame de données à tous si les dplyrfiltres ne fonctionneront probablement pas.

entrez

Créé 19/12/2018 à 14:15
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
2

Vous pouvez obtenir ce que vous voulez en fixant des pauses à l'aide seq.date:

library(tidyverse);library(lubridate)

df <- data.frame(date = as.Date(c("2017-12-01", "2018-01-01", "2018-02-01", 
                                  "2018-03-01", "2018-04-01", "2018-05-01", 
                                  "2018-06-01", "2018-07-01", "2018-08-01", 
                                  "2018-09-01", "2018-10-01", "2018-11-01")), 
                 value = c(0.567859562, 0.514907158, 0.035399304, 0.485728823, 
                           0.925127361, 0.237531067, 0.301930968, 0.133373326, 
                           0.082275426, 0.464255614, 0.2366749, 0.652084264))



ggplot(df, aes(date, value)) + 
  geom_col() + 
  scale_x_date(
               date_labels = "%b",
               breaks = seq.Date(ymd("2017-12-01"),ymd("2018-11-01"), by = "month")) + 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.3))

entrez la description d'image ici

Créé 19/12/2018 à 14:29
source utilisateur

voix
1

Je pense que c'est ce que vous voulez. Les ne date_breakssont pas nécessaires.

ggplot(df, aes(date, value)) + 
  geom_col() + 
  scale_x_date(date_labels = "%b", breaks = df$date) + 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.3))

parcelle résultant

Créé 19/12/2018 à 14:36
source utilisateur

voix
0

Je suggère des recherches sur le paquet Lubridate dans R - vous seriez en mesure de convertir toutes les valeurs de date désordre dans appropriée envers format POSIXT et peut aussi extraire des informations de mois très facilement - vous pouvez également convertir ces dates en une seule colonne des mois réels, et l'utilisation que votre étiquette d'axe, ce qui est plus propre que vous auriez une colonne supplémentaire juste le mois correspondant - vous pouvez également remplir en fonction de ce mois et de faire d'autres trucs cool!

Créé 19/12/2018 à 14:25
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more