Tworzę bardzo szeroki wykres, który po wydrukowaniu jako plik PNG zajmuje kilka tysięcy pikseli na osi X; istnieje około 20 lat codziennych danych. (To może, ale nie musi być uważane za dobrą praktykę, ale jest to na własny użytek, a nie do publikacji.) Ponieważ wykres jest tak szeroki, oś Y znika z widoku podczas przewijania wykresu. W związku z tym chcę dodać etykiety do wykresu w odstępach 2-rocznych, aby pokazać wartości na osi Y. Uzyskany wykres wygląda tak jak poniżej, z wyjątkiem, że w trosce o utrzymanie to kompaktowy Użyłem tylko 30 dni fałszywych danych i umieścić etykiety mniej więcej co 10 dni:R: W ggplot, jak dodawać wiele etykiet tekstowych na osi Y dla każdej z wielu dat na osi X
Działa to mniej więcej tak wymagane, ale zastanawiam się, czy istnieje lepszy sposób podejścia do niego, jak na tym wykresie (patrz kod poniżej) Mam kolumnę dla każdej z 3 wartości osi Y o wartości 120, 140 i 160. Prawdziwe dane mają o wiele więcej poziomów , więc otrzymam 15 wywołań do geom_text, aby umieścić wszystko na obszarze działki.
P. Czy istnieje prostszy sposób na umieszczenie na wykresie wszystkich 20 dat nieparzystych, z 15 etykietami na datę, na wykresie naraz?
require(ggplot2)
set.seed(12345)
mydf <- data.frame(mydate = seq(as.Date('2012-01-01'), as.Date('2012-01-31'), by = 'day'),
price = runif(31, min = 100, max = 200))
mytext <- data.frame(mydate = as.Date(c('2012-01-10', '2012-01-20')),
col1 = c(120, 120), col2 = c(140,140), col3 = c(160,160))
p <- ggplot(data = mydf) +
geom_line(aes(x = mydf$mydate, y = mydf$price), colour = 'red', size = 0.8) +
geom_text(data = mytext, aes(x = mydate, y = col1, label = col1), size = 4) +
geom_text(data = mytext, aes(x = mydate, y = col2, label = col2), size = 4) +
geom_text(data = mytext, aes(x = mydate, y = col3, label = col3), size = 4)
print(p)
działa idealnie, dzięki. Musi topnieć częściej! – SlowLearner