Próbuję utworzyć wykres rastrowy (jak diagram hovmollera) i miałem nadzieję, że ktoś może pomóc. Przyjrzałem się pomocy z rasterVis i niektórymi innymi, ale nie udało mi się uzyskać ich przykładów w celu dopasowania do moich danych, co prawdopodobnie wymaga transformacji w pewien sposób, który mi umyka. Udało mi się utworzyć wykres, ale wartości wypełnienia komórek nie odpowiadają pierwotnym danym. Skopiowałem plik dput() z przykładu mojej ramki danych (mam nadzieję, że jest to właściwy sposób). To, czego chcę, to dni w roku (DOY) wzdłuż osi x z osią y 48 prostokątów (kolumna godzinowa w DF) nad każdym DOY. Te prostokąty będą reprezentowały półgodzinne odstępy dla każdego DOY i będą barwione zgodnie z ich odpowiednią wartością (kolumna qc w DF), która wynosi 0,1 lub 2Tworzenie wykresu rastrowego w R
Do tej pory wymyśliłem następujący kod, ale tam wydaje się, że problem z przydziałem wartości z (kolumna QC) do koloru, myślę, że wartości nie są w kolejce właściwie z jakiegoś powodu ...
mcol <- c("green","blue","red")
x=unique(DF[,"DOY"])
y=unique(DF[,"hour"])
z=matrix(DF[,"qc"],nrow=length(unique(DF[,"DOY"])),
ncol=length(unique(DF[,"hour"])))
image(x,y,z, col=mcol,
xlab="Day of Year 2012",
ylab="Hour of day",
main="Hovmoller plot of 2012 qc flags",
useRaster=TRUE)
Co wydaje się dzieje jest to, że matryca wartości wypełnienia (z) jest nakładana wzdłuż dolnej osi x najpierw (od lewej do prawej), a następnie pętla do góry, podczas gdy ja potrzebuję jej, aby rozpocząć w lewym dolnym rogu i przejść w górę, a następnie w pętli od lewej do prawej (mam nadzieję, że ma sens!) Moje przykładowe dane obejmują tutaj tylko trzy dni, ale pełny zbiór danych będzie obejmował cały rok (366 w 2012 r.). Dzięki z góry za wszelką pomoc,
Jon
structure(list(DOY = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L), hour = c(0.5, 1, 1.5, 2, 2.5, 3, 3.5,
4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11,
11.5, 12, 12.5, 13, 13.5, 14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5,
18, 18.5, 19, 19.5, 20, 20.5, 21, 21.5, 22, 22.5, 23, 23.5, 24,
0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5,
8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14, 14.5,
15, 15.5, 16, 16.5, 17, 17.5, 18, 18.5, 19, 19.5, 20, 20.5, 21,
21.5, 22, 22.5, 23, 23.5, 24, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4,
4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5,
12, 12.5, 13, 13.5, 14, 14.5, 15, 15.5, 16, 16.5, 17, 17.5, 18,
18.5, 19, 19.5, 20, 20.5, 21, 21.5, 22, 22.5, 23, 23.5, 24),
qc = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 2L, 1L, 1L, 2L, 2L, 0L, 0L, 1L, 0L, 2L, 2L, 2L, 2L,
2L, 2L, 0L, 2L, 2L, 0L, 0L, 1L, 2L, 0L, 2L, 0L, 1L, 2L, 1L,
2L, 2L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 2L, 2L, 2L, 0L, 0L,
2L, 0L, 0L, 0L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L)), .Names = c("DOY",
"hour", "qc"), class = "data.frame", row.names = c(NA, -144L))
Coś jak 'biblioteka (raster), fabuła (raster (t (z)))'? –