O čem bych tu rád povídal... Data Mashups (heat calendar, mapy...) Balíčky v R, grafika a gramatika, ggplot2 plyr, reshape a jiné (bude li čas)
Průměrné denní teploty http://blog.revolution computing.com/2009/11/charting time series as calendar heat maps in r.html
Průměrné denní teploty (kód) source("http://blog.revolutioncomputing.com/downloads/calendarheat.r") data<-read.table("http://www.engr.udayton.edu/ faculty/jkissock/gsod/czprague.txt",na=-99) head(data) month day year temp 1 1 1 1995 34.2 2 1 2 1995 29.1 3 1 3 1995 26.2 4 1 4 1995 18.9 5 1 5 1995 11.6 6 1 6 1995 16.1
Průměrné denní teploty (kód) # úprava dat výběr let 2006-2008 names(data) <- c("month","day","year","temp") data0608 <- subset(data,year%in%2006:2008) # nakreslení samotného obrázku with(data0608, calendarheat(paste(day,month,year,sep="."), values=temp, date.form="%d.%m.%y", col="r2b", varname= Temperatures") )
Počet závodů v běhu (na http://www.behy.cz) http://www.programmingr.com/content/webscraping using readlines and rcurl
# načtení HTML stránky s termínovkou web_page <- readlines("http://www.behy.cz/terminovka.php?f ce=vysledky&year=2009") # tabulka kolik závodů se ten který den běželo mask <- ".*([0-9][0-9][.][0-9][0-9][.]2009).*" dates<- sub(mask,"\\1",web_page[regexpr(mask,web_page)==1]) tab <- table(dates) # samotný obrázek calendarheat(names(tab),tab, date.form="%d.%m.%y",col="r2b")
Global Administrative Areas library(sp) Czech Regions con <- url("http://www.gadm.org/ data/rda/cze_adm2.rdata") print(load(con)) close(con) http://www.gadm.org col <-rainbow(length( levels(gadm$name_1))) spplot(gadm, "NAME_1", col.regions=col, main="czech Regions", colorkey = FALSE, lwd=.4, col="white")
Global Administrative Areas con <- url("http://gadm.org/data/rda/che_adm1.rdata") print(load(con)) Data Mashups in R (O'Reilly Media) language <- c("g", "g", "g", "g", "g", "g", "f", "f", "g", "g", "f", "f", "g", "f", "g", "g", "g", "g", "g", "g", "g", "i", "g", "f", "f","g","g") gadm$language <- as.factor(language) levels(gadm$language) <- c("french","german","italian") col = rainbow(length( levels(gadm$language))) spplot(gadm, "language", col.regions=col, main="swiss Language Regions")
Grafická rozhraní R base grid lattice, ggplot2 Rgobi, rgl, RColorBrewer
Grafická rozhraní R base RossIhakana základě zkušeností s S driverem grid Paul Murrell, původně PhD. práce, později knížka 1 lattice, ggplot2 nadstavba nad gridem, gramatika grafiky, knížky 2,3 Rgobi, rgl, RColorBrewer 1 Paul Murrell (2005): R graphics, Chapman & Hall/CRC, $55 2 Deepayan Sarkar (2008): Lattice: Multivariate Data Visualization with R, Springer, $50 3 Hadley Wickham (2009): ggplot2: Elegant Graphics for Data Analysis, Springer, $49
X = Total_bill Y = Tip Barva = Tip / Total_bill Barva ať přechází spojitě od modré přes zelenou po červenou Gramatika grafiky Nakresli to zvlášť pro muže a pro ženy Data
Příklad data o spropitném library(ggplot2) head(tips) total_bill tip sex smoker day time size 16.99 1.01 Female No Sun Dinner 2 10.34 1.66 Male No Sun Dinner 3 21.01 3.50 Male No Sun Dinner 3 23.68 3.31 Male No Sun Dinner 2 24.59 3.61 Female No Sun Dinner 4 25.29 4.71 Male No Sun Dinner 4 tips.plot <- ggplot(tips)
Budování grafu vrstvu po vrstvě 1 # X = total_bill, Y = tip tips.plot <- tips.plot + aes(x=total_bill,y=tip) # chceme scatter plot tips.plot <- tips.plot + geom_point() # nakreslí obrazek tips.plot
Budování grafu vrstvu po vrstvě 2 # barva podle podílu tip / total_bill tips.plot <- tips.plot + aes(colour = tip / total_bill)
Budování grafu vrstvu po vrstvě 3 # barva podle podílu tip / total_bill tips.plot <- tips.plot + aes(colour = tip / total_bill) # chceme jinou škálu barev tips.plot <- tips.plot + scale_colour_gradientn(colour = rainbow(3))
Budování grafu vrstvu po vrstvě 4 # chceme zvlášť graf pro muže a pro ženy tips.plot <- tips.plot + facet_grid(sex~.)
Budování grafu vrstvu po vrstvě 5 # rozdělíme na nekuřáky vs. kuřáky a navíc nadpis tips.plot <- tips.plot + facet_grid(sex~smoker) + opts(title = I("Tipping: Women vs. Men, Nonsmokers vs. Smokers"))
Příklad výška chlapců data(oxboys, package="nlme") head(oxboys) Subject age height Occasion 1 1-1.0000 140.5 1 2 1-0.7479 143.4 2 3 1-0.4630 144.8 3 4 1-0.1643 147.1 4 5 1-0.0027 147.7 5 6 1 0.2466 150.2 6 Pro každého chlapce nakreslit závislost jeho výšky na pořadí měření (occasion).
Použití group... boys.plot <- ggplot(oxboys, aes(x = Occasion, y = height)) boys.plot <- boys.plot + geom_line(aes(group = Subject), colour = "blue")
... a dokreslení krabiček boys.plot <- boys.plot + geom_boxplot()
qplot = ggplot pro začátečníky # data vždy typu data.frame, nelze formule qplot(carat, price, data = diamonds) Nabízí se log transformace
qplot = ggplot pro začátečníky qplot(log(carat), log(price), data = diamonds) qplot(carat, price, data = diamonds, log = "xy") Průhlednost se nastaví parametrem alpha Proti překrývajícím se tečkám pomůže jitter
Jeden příkaz, spousta legrace # spotřeba auta (míle/gallon) vs. velikost nádrže qplot(displ, hwy, data=mpg, colour=cyl, facets =. ~ year, geom=c("point", "smooth"), ) velikost nádrže spotřeba # metodu proložení lze změnit (např. method="lm") # dále lze nastavit i tvar (shape), velikost (size)... počet cylindrů
Jeden příkaz, spousta legrace
http://www.drewconway.com/zia/?p=1637