Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: Wizualizacja kierunku wiatru dla pewnego obszaru/na...

Cześć, mam ciekawy problem dotyczący wizualizacji danych. Zbiór zawiera trzy zmienne : x,y to współrzędne przestrzenne na kwadracie [0,1] x [0,1], 'z' to kierunek wyrażony w stopniach [0,360], dane pochodzą z tego samego momentu czasu. Chciałbym umieścić punkty na kwadracie [0,1] x [0,1]. Użyłem do tego celu strzałek, jednak rezultat mnie nie zadowala, chciałbym więc użyć kolorów - im większe nasycenie tym bardziej "wskazywany kierunek jest kierunkiem zachodzim", im głębszy odcień tym bardziej "wskazywana jest północ". Do wyboru kolorów wystarczy użyć odpowiedniej palety kolorow, jednak wynik będzie mało czytelny jeżeli punkty wypełnimy jednolicie kolorami. ( dodam, że użycie funkcji dającej bieły kolor dla 0 i czarny dla 360 jest nieodpowiednie ze względu na "cykliczność" skali określającej kierunek ), zamiast wypełniać punkty w sposob jednolity chciałbym użyć punktów, które się w jakis sposób rozpływają im dalej od centrum punktu, świetnie jeżeli kolory z różnych punkow mogłyby wchodzic ze sobą w interację - mieszać się, kolory w punktach innych niż punkty danych mogę swobodnie wyliczyć, jednak jaką funkcją ładnie narysować zanikanie kolorów ? Dodam, że nie chodzi mi o wykres o wspołrzędnycj polarnych. Jeżeli chodzi o związanie kierunku z kolorem zainspirowal mnie wykres wiatru na stronie http://www.if.pw.edu.pl/~meteo jednak zaznaczam, ze chodzi mi o całkowicie inny typ wykresu, postaram się jakiś wykres, tylko, że Paint'cie tego nie zrobię :-/
Maciej B.

Maciej B. Doktorant

Temat: Wizualizacja kierunku wiatru dla pewnego obszaru/na...

Mógłbyś załączyć przykładowe dane i naszkicuj (nawet w paint) mniej więcej jak to ma wyglądać.
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: Wizualizacja kierunku wiatru dla pewnego obszaru/na...

OK. Z grubsza chodzi o wizualizację pola wektorowego 2D bez użycia strzałek, zamiast strzałek używamy kolorów - inny kierunek = inny kolor, na razie pomińmy wizualizacje dlugości wektora, jak przy pomocy samych kolorów zwizualizować kierunek ?

Tutaj mam wizualizację pzy pomocy kolorowych wektorów :


Obrazek


"vfcolor renders a vector field as a grid of colors. Hue indicates the field direction, and saturation indicates the magnitude. The current implementation uses a fixed color coding."

http://www.mathworks.com/matlabcentral/fileexchange/29...

tylko że nie mam pola wektorowego, a tylko zbiór 300 wektorów rozrzuconych losowo na kwadracie [0,1]x[0,1], później dodam trochę danych, teraz nie mam do nich dostępuKamil Bęczyński edytował(a) ten post dnia 26.10.12 o godzinie 13:10
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: Wizualizacja kierunku wiatru dla pewnego obszaru/na...

Pewnie najproście byłoby rysować funkcją image(). Dane musiałbyś doprowadzić do postaci macierzy, której elementy to kierunki "wiatru" w stopniach na poszczególnych kawałkach siatki. Pozostaje kwestia doboru palety kolorów, żeby miała charackter "kołowy". Na szybko skrobnąłem poniższą funkcję 'f', która zwraca wektor kolorów dla wektora kierunków (w stopniach):


f <- function(deg, pal=c("blue", "red", "green", "orange", "blue"))
{
r <- colorRamp(pal)
apply( r(deg/360), 1, function(v) rgb(v[1], v[2], v[3], maxColorValue=255))
}

pie(rep(1,360), col=f(1:360), border=NA, labels=NA, init.angle=90, clockwise=TRUE)


Ostatnie daje w efektcie


Obrazek
Maciej B.

Maciej B. Doktorant

Temat: Wizualizacja kierunku wiatru dla pewnego obszaru/na...

Może w jakimś stopniu pomoże kriging (pakiet kriging/gstat)?

Przykłady: http://casoilresource.lawr.ucdavis.edu/drupal/node/442


Obrazek


Obrazek
Maciej B. edytował(a) ten post dnia 27.10.12 o godzinie 08:29
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: Wizualizacja kierunku wiatru dla pewnego obszaru/na...

Do utworzenia odpowiedniego koloru najlepiej uzyc funkcji hsv. Pierwszy z argumentow do kodowania kierunku a drugi do amplitudy.
Przyklad palety:

x <- seq(0,1,by=0.01)
y <- sin(2*pi*x)
z <- cos(2*pi*x)
A = 1
plot( y ~ z, col=hsv(x, A, 1), pch=16)
A = 0.5
points( I(A*y) ~ I(A*z), col=hsv(x, A, 1), pch=16)



Wyślij zaproszenie do