Bu çizdirme dikdörtgenler - Geçersiz giriş: time_trans sınıf POSIXct ait nesnelerle çalışan tek
veri
df <- structure(list(IndID = structure(c(16L, 15L, 14L, 13L, 12L, 11L,
10L, 9L, 8L, 7L, 6L, 5L, 4L, 3L, 2L, 1L), .Label = c("16", "15",
"14", "13", "12", "11", "10", "9", "8", "7", "6", "5", "4", "3",
"2", "1"), class = "factor"), StartDate = structure(c(1313042400,
1312956000, 1313560800, 1363672800, 1374040800, 1374040800, 1374040800,
1374040800, 1374040800, 1374040800, 1374040800, 1365832800, 1365919200,
1366178400, 1395727200, 1395813600), class = c("POSIXct", "POSIXt"
)), EndDate = structure(c(1377928800, 1378015200, 1378015200,
1386572400, 1410760800, 1410760800, 1410760800, 1410674400, 1410760800,
1406959200, 1399356000, 1427868000, 1394517600, 1428213600, 1428040800,
1420959600), class = c("POSIXct", "POSIXt"))), .Names = c("IndID",
"StartDate", "EndDate"), row.names = c(NA, -16L), class = "data.frame")
IndID StartDate EndDate
1 1 2011-08-11 2013-08-31
2 2 2011-08-10 2013-09-01
3 3 2011-08-17 2013-09-01
4 4 2013-03-19 2013-12-09
5 5 2013-07-17 2014-09-15
6 6 2013-07-17 2014-09-15
var ve bu arsa
library(lubridate)
require(gglopt2)
df$IndID <- factor(df$IndID, levels = rev(df$IndID))
p1 <- ggplot(df, aes(x=IndID, fill = IndID))+
geom_rect(aes(x = IndID, xmin = as.numeric(IndID) - 0.45, xmax = as.numeric(IndID) + 0.45, ymin = StartDate, ymax = EndDate))+
coord_flip()+
xlab("IndID")+
ylab("Time")+
ggtitle("Individual Monitoring Periods")+
geom_text(aes(y = StartDate + as.difftime(8, unit = "weeks"), label = paste(month(StartDate, label = T), year(StartDate), sep = "-"))) +
geom_text(aes(y = EndDate - as.difftime(9, unit = "weeks"), label = paste(month(EndDate, label = T), year(EndDate), sep = "-")))
p1
Ben Ayrıca yapabilir, Her yıl 19 Haziran ile 19 Ekim arasında bölgeyi gölgelemek istiyorum. Bunu yapmak için, data.frame
tarihlerini daha sonra data.frame
numaralı yeni bir POSIXct biçimine dönüştürdüm. (Evet, bu aksak ..)
temp <- data.frame(
start = as.Date(c('2011-06-19', '2012-06-19', '2013-06-19', '2014-06-19', '2015-06-19')),
end = as.Date(c('2011-10-19', '2012-10-19', '2013-10-19', '2014-10-19', '2015-10-19')))
str(temp)
dateRanges <- data.frame(
start = as.POSIXct(temp [,1], "%Y-%m-%d") + hours(6),
end = as.POSIXct(temp [,2], "%Y-%m-%d") + hours(6))
str(dateRanges)
Aşağıdaki kod ile arsa yeni dikdörtgenler eklemeye çalıştığınızda, ben sonrası başlığında belirtilen hata alıyorum.
p1 + geom_rect(data = dateRanges, aes(xmin = start , xmax = end, ymin = -Inf, ymax = Inf), inherit.aes= F, alpha = 0.4, fill = c("lightblue"))
Bildiğim kadarıyla dateRanges ait str() bakarak söyleyebilirim, bunların doğru POSIXct sınıf olarak biçimlendirilir.
similar post here'u görebildim ama yine de ilgili konular arasındaki noktaları birleştirmek ve sorunumu gidermek için mücadele ediyorum. Önerileriniz için şimdiden teşekkür ederiz.
: İlk faktörlerin ekseni ve seviyeleri ile karıştırmasını önlemek için çağrı biz arkasında böylece çubukları yapar geom_rect aramak zorunda ve biz aes dışına xMin ve xmax hareket Belki de 'gantt-chart' etiketini eklemelisiniz ya da sadece bir yerde terimden bahsetmeli, bu da gelecekteki aramalar için yardımcı olabilir. – maj