ggplot spezifische x-Achsenbeschriftungen löschen

stimmen
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))

Ich möchte , dass meine Handlung unten halten, genau wie es ist, mit zwei Ausnahmen. Ich möchte die erste entfernen Novauf der x-Achse Etikett und die letzte Decauf der x-Achse - Label. Ich habe coord_cartesian(xlim = as.Date(c(2017-12-01, 2018-11-01)))zu meinem Code Chunk oben, aber dies beseitigt die ‚leerer Raum‘ Polsterung an jedem Ende meiner x-Achse.

Wie sage ich einfach ggplot den Text der ersten und der letzten X-Achsenbeschriftungen löschen? Dies wäre die erste Novund die letzte Dec. Beachten Sie, dass diese nicht tun in meinem existiert dfDatenrahmen überhaupt so dplyrFilter wird wahrscheinlich nicht funktionieren.

Geben

Veröffentlicht am 19/12/2018 um 14:15
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
2

Sie könnten erreichen, was Sie wollen durch Pausen mit seq.date Einstellung:

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))

Geben Sie hier image description

Beantwortet am 19/12/2018 um 14:29
quelle vom benutzer

stimmen
1

Ich denke , das ist das, was Sie wollen. Das date_breaksist nicht erforderlich.

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))

resultierende Grundstück

Beantwortet am 19/12/2018 um 14:36
quelle vom benutzer

stimmen
0

Ich würde vorschlagen, das Lubridate Paket in R Erforschung - Sie chaotisch Datumswerte in approrpiate POSIXT-Format zu konvertieren wären in der Lage und kann auch Monat Informationen wirklich leicht extrahieren - Sie auch diese Daten in eine einzige Spalte der tatsächlichen Monate umwandeln können und Verwendung dass als Achsenbeschriftung, die sauberer ist als Sie eine zusätzliche Spalte von nur dem entsprechenden Monat haben würde - Sie können auch auf der Grundlage dieses Monats und einige andere coole Sachen füllen!

Beantwortet am 19/12/2018 um 14:25
quelle vom benutzer

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