plotGradeStat <- function(zmienna1, zmienna2, uporzadkujMalejaco = TRUE, osX = "", osY = "", skala=c(0.005,0.5), cex.text=0.8, cutoff = 0.01) {
# normalizacja obu cech
zm1r <- zmienna1/sum(zmienna1)
zm2r <- zmienna2/sum(zmienna2)
iloraz <- zm1r/zm2r
# jezeli zachodzi taka potrzeba to zmienna sa porzadkowane w kolejn
if (uporzadkujMalejaco) {
zm1r <- zm1r[order(iloraz, decreasing=FALSE), 1, drop=FALSE]
zm2r <- zm2r[order(iloraz, decreasing=FALSE), 1, drop=FALSE]
iloraz <- zm1r/zm2r
}
# dwa wykresy w poziomie
par(mfrow=c(1,2))
par(xpd=F)
# pierwszy wykres to analiza gradacyjna
# dla jednowymiarowych danych
plot(c(0,cumsum(zm1r[,1])),c(0,cumsum(zm2r[,1])),type="b",pch=19,xlab=osX,ylab=osY)
abline(0,1,col="grey")
par(xpd=NA)
# korekta na zachodzace etykiety
odleglosci <- sqrt(diff(c(0,cumsum(zm1r[,1])))^2+diff(c(0,cumsum(zm2r[,1])))^2)
korekta <- numeric(length(odleglosci))
for (i in seq_along(korekta)) {
if (odleglosci[i] < cutoff)
korekta[i] <- cutoff + korekta[i-1]
}
text(cumsum(zm1r[,1])+korekta+2*cutoff,cumsum(zm2r[,1])+korekta-2*cutoff,rownames(zm1r), srt=-45, adj=c(0,0),cex=cex.text)
text(cumsum(zm1r[,1])+korekta-2*cutoff,cumsum(zm2r[,1])+korekta+2*cutoff,paste(round((1/iloraz[,1]-1)*1000)/10," %",sep=""), srt=-45, adj=c(1,1),cex=cex.text)
par(xpd=F)
# drugi wykres to klasyczny wykres rozrzutu
plot(1,type="n",log="xy",xlim=skala,ylim=skala, las=1, cex.axis=0.8, xlab=osX, ylab=osY)
abline(0,1,col="grey")
abline(h=c(0.0001*c(1,2,5),0.001*c(1,2,5),0.01*c(1,2,5),0.1*c(1,2,5)),col="grey95")
abline(v=c(0.0001*c(1,2,5),0.001*c(1,2,5),0.01*c(1,2,5),0.1*c(1,2,5)),col="grey95")
points(zm1r[,1],zm2r[,1],pch=19)
par(xpd=NA)
text(zm1r[,1],zm2r[,1],rownames(zm1r), srt=-45, adj=c(-0.1,-0.1),cex=cex.text)
par(xpd=F)
}
# zbieramy dane kto co uwazal za istotne w zyciu w roku 2005 i 2009
zb1 <- colSums(diagnozaOsoby2011[,paste("cp2_",1:14,sep="")]=="TAK",na.rm=T)
zb2 <- colSums(diagnozaOsoby2011[,paste("cp2_",1:14,sep="")]=="NIE",na.rm=T)
zb3 <- colSums(diagnozaOsoby2011[,paste("ep2_",1:14,sep="")]=="TAK",na.rm=T)
zb4 <- colSums(diagnozaOsoby2011[,paste("ep2_",1:14,sep="")]=="NIE",na.rm=T)
# etykiety, co jest wazne w zyciu
etykiety <- c("PIENIADZE", "DZIECI", "UDANE MALZENSTWO", "PRACA", "PRZYJACIELE", "OPATRZNOSC, BOG", "POGODA DUCHA, OPTYMIZM", "UCZCIWOSC", "ZYCZLIWOSC I SZACUNEK OTOCZENIA", "WOLNOSC, SWOBODA", "ZDROWIE", "WYKSZTALCENIE", "SILNY CHARAKTER", "INNE")
# tabela opisujaca ktora wartosc ile osob zaznaczylo lub nie w wymienionych powyzej latach
dane <- data.frame(TAK2005 = zb1, NIE2005 = zb2, TAK2009=zb3, NIE2009=zb4)
rownames(dane) <- etykiety
zm1 <- dane[,1,drop=F]/dane[,2]
zm2 <- dane[,3,drop=F]/dane[,4]
plotGradeStat(zm1, zm2, osX="rok 2005", osY="rok 2009", skala=c(0.001,0.5),cutoff=0.01)