Ako vytváram grafy vývoja km ciest
v tabuľke fm_WaysStats máme uložené dáta. Stĺpec dátum je dátum ku ktorému je záznam, ostatné sú počty kilometrov.
CREATE TABLE `fm_WaysStats` (
`datum` DATE NOT NULL,
`abandoned` INT(15) DEFAULT NULL,
`bridleway` INT(15) DEFAULT NULL,
`bus_guideway` INT(15) DEFAULT NULL,
`canal` INT(15) DEFAULT NULL,
`construction` INT(15) DEFAULT NULL,
`crossing` INT(15) DEFAULT NULL,
`cycleway` INT(15) DEFAULT NULL,
`dam` INT(15) DEFAULT NULL,
`disused` INT(15) DEFAULT NULL,
`ditch` INT(15) DEFAULT NULL,
`drain` INT(15) DEFAULT NULL,
`FIXME` INT(15) DEFAULT NULL,
`footwalk` INT(15) DEFAULT NULL,
`footway` INT(15) DEFAULT NULL,
`ford` INT(15) DEFAULT NULL,
`fpath` INT(15) DEFAULT NULL,
`highway` INT(15) DEFAULT NULL,
`junction` INT(15) DEFAULT NULL,
`living_street` INT(15) DEFAULT NULL,
`mini_roundabout` INT(15) DEFAULT NULL,
`monorail` INT(15) DEFAULT NULL,
`motorway` INT(15) DEFAULT NULL,
`motorway_link` INT(15) DEFAULT NULL,
`narrow_gauge` INT(15) DEFAULT NULL,
`path` INT(15) DEFAULT NULL,
`pedestrian` INT(15) DEFAULT NULL,
`platform` INT(15) DEFAULT NULL,
`Pod` INT(15) DEFAULT NULL,
`preserved` INT(15) DEFAULT NULL,
`primary` INT(15) DEFAULT NULL,
`primary_link` INT(15) DEFAULT NULL,
`proposed` INT(15) DEFAULT NULL,
`raceway` INT(15) DEFAULT NULL,
`rail` INT(15) DEFAULT NULL,
`residential` INT(15) DEFAULT NULL,
`resil` INT(15) DEFAULT NULL,
`river` INT(15) DEFAULT NULL,
`riverbank` INT(15) DEFAULT NULL,
`road` INT(15) DEFAULT NULL,
`secondary` INT(15) DEFAULT NULL,
`secondary_link` INT(15) DEFAULT NULL,
`seri` INT(15) DEFAULT NULL,
`service` INT(15) DEFAULT NULL,
`station` INT(15) DEFAULT NULL,
`steps` INT(15) DEFAULT NULL,
`stream` INT(15) DEFAULT NULL,
`subvay` INT(15) DEFAULT NULL,
`tertiary` INT(15) DEFAULT NULL,
`TOTAL` INT(15) DEFAULT NULL,
`tr` INT(15) DEFAULT NULL,
`track` INT(15) DEFAULT NULL,
`tram` INT(15) DEFAULT NULL,
`trunk` INT(15) DEFAULT NULL,
`trunk_link` INT(15) DEFAULT NULL,
`unclassified` INT(15) DEFAULT NULL,
`undefined` INT(15) DEFAULT NULL,
`unknown` INT(15) DEFAULT NULL,
`unspecified` INT(15) DEFAULT NULL,
`unsurfaced` INT(15) DEFAULT NULL,
`weir` INT(15) DEFAULT NULL,
PRIMARY KEY (`datum`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci
`datum` DATE NOT NULL,
`abandoned` INT(15) DEFAULT NULL,
`bridleway` INT(15) DEFAULT NULL,
`bus_guideway` INT(15) DEFAULT NULL,
`canal` INT(15) DEFAULT NULL,
`construction` INT(15) DEFAULT NULL,
`crossing` INT(15) DEFAULT NULL,
`cycleway` INT(15) DEFAULT NULL,
`dam` INT(15) DEFAULT NULL,
`disused` INT(15) DEFAULT NULL,
`ditch` INT(15) DEFAULT NULL,
`drain` INT(15) DEFAULT NULL,
`FIXME` INT(15) DEFAULT NULL,
`footwalk` INT(15) DEFAULT NULL,
`footway` INT(15) DEFAULT NULL,
`ford` INT(15) DEFAULT NULL,
`fpath` INT(15) DEFAULT NULL,
`highway` INT(15) DEFAULT NULL,
`junction` INT(15) DEFAULT NULL,
`living_street` INT(15) DEFAULT NULL,
`mini_roundabout` INT(15) DEFAULT NULL,
`monorail` INT(15) DEFAULT NULL,
`motorway` INT(15) DEFAULT NULL,
`motorway_link` INT(15) DEFAULT NULL,
`narrow_gauge` INT(15) DEFAULT NULL,
`path` INT(15) DEFAULT NULL,
`pedestrian` INT(15) DEFAULT NULL,
`platform` INT(15) DEFAULT NULL,
`Pod` INT(15) DEFAULT NULL,
`preserved` INT(15) DEFAULT NULL,
`primary` INT(15) DEFAULT NULL,
`primary_link` INT(15) DEFAULT NULL,
`proposed` INT(15) DEFAULT NULL,
`raceway` INT(15) DEFAULT NULL,
`rail` INT(15) DEFAULT NULL,
`residential` INT(15) DEFAULT NULL,
`resil` INT(15) DEFAULT NULL,
`river` INT(15) DEFAULT NULL,
`riverbank` INT(15) DEFAULT NULL,
`road` INT(15) DEFAULT NULL,
`secondary` INT(15) DEFAULT NULL,
`secondary_link` INT(15) DEFAULT NULL,
`seri` INT(15) DEFAULT NULL,
`service` INT(15) DEFAULT NULL,
`station` INT(15) DEFAULT NULL,
`steps` INT(15) DEFAULT NULL,
`stream` INT(15) DEFAULT NULL,
`subvay` INT(15) DEFAULT NULL,
`tertiary` INT(15) DEFAULT NULL,
`TOTAL` INT(15) DEFAULT NULL,
`tr` INT(15) DEFAULT NULL,
`track` INT(15) DEFAULT NULL,
`tram` INT(15) DEFAULT NULL,
`trunk` INT(15) DEFAULT NULL,
`trunk_link` INT(15) DEFAULT NULL,
`unclassified` INT(15) DEFAULT NULL,
`undefined` INT(15) DEFAULT NULL,
`unknown` INT(15) DEFAULT NULL,
`unspecified` INT(15) DEFAULT NULL,
`unsurfaced` INT(15) DEFAULT NULL,
`weir` INT(15) DEFAULT NULL,
PRIMARY KEY (`datum`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_slovak_ci
Samotné vytváranie grafov je pomocou programu R
library(DBI); library(RMySQL); con<-dbConnect(MySQL(),dbname='skwiki');
dd<-dbGetQuery(con, 'select datum from fm_WaysStats');
dates<-as.Date('2010-12-12')
for(i in 1:length(dd[,1])) dates[i] = as.Date(dd[i,]);
plotonly<-function(data,name='cesty', name2='cesty') {
png(file=paste("images/stats-cesty-",name2,".png",sep=""), width=600, height=320);
colnames<-names(data);
if(max(data) > 4000000) { mult=1000000; jednotka='tisíce';}
else {mult=1000; jednotka='';}
par(mar=c(3,4,2,0));
plot(dates,data[,colnames[1]], type='n', axes=FALSE,ylim=c(0,max(data)), ylab=paste('dĺžka ciest,',jednotka,'km'), main='Freemap.sk štatistiky Slovenska');
colors<-rainbow(length(colnames));
for(i in 1:length(colnames)) {
lines(dates, data[,colnames[i]], col=colors[i]);
}
axis.Date(1,x=dates,at=seq(dates[1],max(dates), "months"), format="%b %y")
ynum<-0;
yat<-0;
pocet=5;
horny=round(max(data)/(pocet*mult))*pocet*mult;
for(i in 1:pocet) {
tt=round(horny*i/pocet);
yat[i+1]<-tt;
ynum[i+1]<-tt/mult;
}
axis(2, at=yat,labels=ynum )
legend('topleft',colnames,col=colors,title=name,lwd=1);
dev.off();
}
plottypes<-function(name, types, name2) {
q<-paste('select `',paste(types, collapse='`,`'), '` from fm_WaysStats', sep='');
data<-dbGetQuery(con, q);
plotonly(data,name, name2);
return(paste('`', paste(types,collapse='`+`'), '` as `',name, '`', sep=''));
}
plotsummary<-function(all) {
q<-paste('select ',paste(all, collapse=','), ' from fm_WaysStats', sep='');
data<-dbGetQuery(con,q);
plotonly(data);
return();
}
all<-c(
plottypes('lesné cesty',c('track','footway','path'),'lesne'),
plottypes('rýchlostné kom',c('motorway','motorway_link','trunk','trunk_link'),'rychlostne'),
plottypes('autá',c('primary','secondary','tertiary'), 'auta'),
plottypes('pešie',c('footway','pedestrian','path','steps'), 'pesie'),
plottypes('mesto',c('residential','service','unclassified','living_street'),'mesto')
);
plotsummary(all);
a<-plottypes('voda',c('river','stream','canal','dam','drain','weir','riverbank'),'voda');
a<-plottypes('železnice',c('tram','rail'),'zeleznice');CategoryStats