Popravek grafa, label in teksta za NIJZ

This commit is contained in:
Miha 2021-10-21 14:32:21 +02:00
parent e5be19d9fe
commit 43f1a42648
2 changed files with 230 additions and 19 deletions

View File

@ -20,12 +20,13 @@ Sys.setlocale(category = "LC_ALL", locale = "slovenian")
#------------- PASSING ARGUMENTS FROM CMD LINE ----------------#
params <- commandArgs(trailingOnly=TRUE)
ID <- params[1]
#ID <- "26155472"
#------------- PASSING ARGUMENTS FROM CMD LINE ----------------#
#-------------------------- USER DEFINED FUNCTION ---------------------#
# Za potrebe pravilnega prikaza teksta v posameznih poglavjih
latexTranslate <- function(x, color = "NE") {
lxTranslate <- function(x, color = "NE", pisava = TRUE) {
x <- gsub("<strong>", "\\\\\\\\textbf{", x)
x <- gsub("</strong>", "}", x)
x <-
@ -45,21 +46,24 @@ latexTranslate <- function(x, color = "NE") {
# Update, Potem pa želi NIJZ, da se prvi odstavek
# vedno obarva z "zeleno barvo, zaot moramo to
# utrezno ločiti
obarvajX <- stringr::str_extract(x, "[^}]+")
obarvajX <- stringr::str_extract(x, "[^.|!]+")
# DOdamo barvanje
obarvajX_1 <- paste0("{\\\\color{zelena}", obarvajX, "}")
# Nadomestimo
x <- gsub(obarvajX, obarvajX_1, x, fixed=TRUE)
}
# val <- strsplit(x, "\\\\newline ")[[1]]
#
# # Gledamo tretji
# odst <- val[4:length(val)]
if (pisava == TRUE) {
val <- strsplit(x, "\\\\newline ")[[1]]
# Gledamo tretji
odst <- val[4:length(val)]
# Po drugem odstavku zmanjšamo pisavo na 9
xsmall <- paste0("\\\\begin{footnotesize}", stringr::str_c(odst, collapse = "\\\\newline "), "\\\\end{footnotesize}")
x <- paste0(stringr::str_c(val[1:4], collapse = "\\\\newline "),xsmall)
}
return(x)
}
#------------------------ //USER DEFINED FUNCTION// -------------------#
@ -114,6 +118,203 @@ colnames(data)[2] <- "V2"
#--------------------------- // READ DATA // ------------------------#
#-------------------- MODOFY RADARSHART FUNCTION ------------------------#
# In order to rotate labels the original function must be modyfied
radarchart2 <-
function (df, axistype = 0, seg = 4, pty = 16, pcol = 1:8, plty = 1:6,
plwd = 1, pdensity = NULL, pangle = 45, pfcol = NA, cglty = 3,
cglwd = 1, cglcol = "navy", axislabcol = "blue",
title = "", maxmin = TRUE, na.itp = TRUE, centerzero = FALSE,
vlabels = NULL, vlcex = NULL, caxislabels = NULL, calcex = NULL,
paxislabels = NULL, palcex = NULL, ...)
{
if (!is.data.frame(df)) {
cat("The data must be given as dataframe.\n")
return()
}
if ((n <- length(df)) < 3) {
cat("The number of variables must be 3 or more.\n")
return()
}
if (maxmin == FALSE) {
dfmax <- apply(df, 2, max)
dfmin <- apply(df, 2, min)
df <- rbind(dfmax, dfmin, df)
}
plot(c(-1.2, 1.2), c(-1.2, 1.2), type = "n", frame.plot = FALSE,
axes = FALSE, xlab = "", ylab = "", main = title,
asp = 1, ...)
theta <- seq(90, 450, length = n + 1) * pi/180
theta <- theta[1:n]
xx <- cos(theta)
yy <- sin(theta)
CGap <- ifelse(centerzero, 0, 1)
for (i in 0:seg) {
polygon(xx * (i + CGap)/(seg + CGap), yy * (i + CGap)/(seg +
CGap), lty = cglty, lwd = cglwd, border = cglcol)
if (axistype == 1 | axistype == 3)
CAXISLABELS <- paste(i/seg * 100, "(%)")
if (axistype == 4 | axistype == 5)
CAXISLABELS <- sprintf("%3.2f", i/seg)
if (!is.null(caxislabels) & (i < length(caxislabels)))
CAXISLABELS <- caxislabels[i + 1]
if (axistype == 1 | axistype == 3 | axistype == 4 | axistype ==
5) {
if (is.null(calcex))
text(-0.05, (i + CGap)/(seg + CGap), CAXISLABELS,
col = axislabcol)
else text(-0.05, (i + CGap)/(seg + CGap), CAXISLABELS,
col = axislabcol, cex = calcex)
}
}
if (centerzero) {
arrows(0, 0, xx * 1, yy * 1, lwd = cglwd, lty = cglty,
length = 0, col = cglcol)
}
else {
arrows(xx/(seg + CGap), yy/(seg + CGap), xx * 1, yy *
1, lwd = cglwd, lty = cglty, length = 0, col = cglcol)
}
PAXISLABELS <- df[1, 1:n]
if (!is.null(paxislabels))
PAXISLABELS <- paxislabels
if (axistype == 2 | axistype == 3 | axistype == 5) {
if (is.null(palcex))
text(xx[1:n], yy[1:n], PAXISLABELS, col = axislabcol)
else text(xx[1:n], yy[1:n], PAXISLABELS, col = axislabcol,
cex = palcex)
}
VLABELS <- colnames(df)
if (!is.null(vlabels))
VLABELS <- vlabels
if (is.null(vlcex))
text(xx * 1.2, yy * 1.2, VLABELS, srt=20)
else text(xx * 1.2, yy * 1.2, VLABELS, cex = vlcex, srt=20)
series <- length(df[[1]])
SX <- series - 2
if (length(pty) < SX) {
ptys <- rep(pty, SX)
}
else {
ptys <- pty
}
if (length(pcol) < SX) {
pcols <- rep(pcol, SX)
}
else {
pcols <- pcol
}
if (length(plty) < SX) {
pltys <- rep(plty, SX)
}
else {
pltys <- plty
}
if (length(plwd) < SX) {
plwds <- rep(plwd, SX)
}
else {
plwds <- plwd
}
if (length(pdensity) < SX) {
pdensities <- rep(pdensity, SX)
}
else {
pdensities <- pdensity
}
if (length(pangle) < SX) {
pangles <- rep(pangle, SX)
}
else {
pangles <- pangle
}
if (length(pfcol) < SX) {
pfcols <- rep(pfcol, SX)
}
else {
pfcols <- pfcol
}
for (i in 3:series) {
xxs <- xx
yys <- yy
scale <- CGap/(seg + CGap) + (df[i, ] - df[2, ])/(df[1,
] - df[2, ]) * seg/(seg + CGap)
if (sum(!is.na(df[i, ])) < 3) {
cat(sprintf("[DATA NOT ENOUGH] at %d\n%g\n",
i, df[i, ]))
}
else {
for (j in 1:n) {
if (is.na(df[i, j])) {
if (na.itp) {
left <- ifelse(j > 1, j - 1, n)
while (is.na(df[i, left])) {
left <- ifelse(left > 1, left - 1, n)
}
right <- ifelse(j < n, j + 1, 1)
while (is.na(df[i, right])) {
right <- ifelse(right < n, right + 1, 1)
}
xxleft <- xx[left] * CGap/(seg + CGap) +
xx[left] * (df[i, left] - df[2, left])/(df[1,
left] - df[2, left]) * seg/(seg + CGap)
yyleft <- yy[left] * CGap/(seg + CGap) +
yy[left] * (df[i, left] - df[2, left])/(df[1,
left] - df[2, left]) * seg/(seg + CGap)
xxright <- xx[right] * CGap/(seg + CGap) +
xx[right] * (df[i, right] - df[2, right])/(df[1,
right] - df[2, right]) * seg/(seg + CGap)
yyright <- yy[right] * CGap/(seg + CGap) +
yy[right] * (df[i, right] - df[2, right])/(df[1,
right] - df[2, right]) * seg/(seg + CGap)
if (xxleft > xxright) {
xxtmp <- xxleft
yytmp <- yyleft
xxleft <- xxright
yyleft <- yyright
xxright <- xxtmp
yyright <- yytmp
}
xxs[j] <- xx[j] * (yyleft * xxright - yyright *
xxleft)/(yy[j] * (xxright - xxleft) - xx[j] *
(yyright - yyleft))
yys[j] <- (yy[j]/xx[j]) * xxs[j]
}
else {
xxs[j] <- 0
yys[j] <- 0
}
}
else {
xxs[j] <- xx[j] * CGap/(seg + CGap) + xx[j] *
(df[i, j] - df[2, j])/(df[1, j] - df[2, j]) *
seg/(seg + CGap)
yys[j] <- yy[j] * CGap/(seg + CGap) + yy[j] *
(df[i, j] - df[2, j])/(df[1, j] - df[2, j]) *
seg/(seg + CGap)
}
}
if (is.null(pdensities)) {
polygon(xxs, yys, lty = pltys[i - 2], lwd = plwds[i -
2], border = pcols[i - 2], col = pfcols[i -
2])
}
else {
polygon(xxs, yys, lty = pltys[i - 2], lwd = plwds[i -
2], border = pcols[i - 2], density = pdensities[i -
2], angle = pangles[i - 2], col = pfcols[i -
2])
}
points(xx * scale, yy * scale, pch = ptys[i - 2],
col = pcols[i - 2])
}
}
}
#------------------ //MODIFY RADARSHART FUNCTION// ----------------------#
#-------------------------- RADAR CHART -----------------------------#
CairoPNG('modules/mod_NIJZ/results/img/radar.png', width = 900, height = 700) # Export chart to png
@ -141,9 +342,11 @@ colnames(mydf) <- labels
# Deljenje besed zaradi preglednosti
par(col="#004078", font = 2, cex = 1.4)
#par(col="#004078", font = 2, cex = 1.4)
par(col="#004078", font = 2, cex = 0.8, xpd = TRUE)
# Plot a radar chart
radarchart(
radarchart2(
mydf,
pcol = "#D0D0D0",
pfcol = scales::alpha("#D0D0D0", 0.5),
@ -168,7 +371,7 @@ dev.off()
#------------------------ 1. Moj FOTOTIP KOŽE: ------------------------#
varianta <- data %>% filter(str_detect(V1, "VARIANTA")) %>% select(V2)
varianta <- latexTranslate(varianta)
varianta <- lxTranslate(varianta, pisava = FALSE)
#----------------------- //1. Moj FOTOTIP KOŽE:// ----------------------#
@ -177,7 +380,7 @@ varianta <- latexTranslate(varianta)
#------------------------ Poletni urnik za izvajanje aktivnosti na prostem ------------------------#
sonce <- data %>% filter(str_detect(V1, "SONCE")) %>% select(V2)
sonce <- latexTranslate(sonce, color = "DA")
sonce <- lxTranslate(sonce, color = "DA")
#----------------------- Poletni urnik za izvajanje aktivnosti na prostem ----------------------#
@ -185,7 +388,7 @@ sonce <- latexTranslate(sonce, color = "DA")
#------------------------ Poletni urnik za izvajanje aktivnosti na prostem ------------------------#
oblacila <- data %>% filter(str_detect(V1, "OBLACILA")) %>% select(V2)
oblacila <- latexTranslate(oblacila, color = "DA")
oblacila <- lxTranslate(oblacila, color = "DA")
#----------------------- Poletni urnik za izvajanje aktivnosti na prostem ----------------------#
@ -194,7 +397,7 @@ oblacila <- latexTranslate(oblacila, color = "DA")
#------------------------ Poletni urnik za izvajanje aktivnosti na prostem ------------------------#
solarij <- data %>% filter(str_detect(V1, "SOLARIJ")) %>% select(V2)
solarij <- latexTranslate(solarij, color = "DA")
solarij <- lxTranslate(solarij, color = "DA")
#---
@ -202,7 +405,7 @@ solarij <- latexTranslate(solarij, color = "DA")
#------------------------ Poletni urnik za izvajanje aktivnosti na prostem ------------------------#
kemija <- data %>% filter(str_detect(V1, "KEMIJA")) %>% select(V2)
kemija <- latexTranslate(kemija, color = "DA")
kemija <- lxTranslate(kemija, color = "DA")
#---
@ -253,7 +456,7 @@ tex.glava <-
tex.glava <-
gsub(
pattern = '!solarij!',
replacement = Hmisc::latexTranslate(solarij),
replacement = solarij,
x = tex.glava
)
@ -261,7 +464,7 @@ tex.glava <-
tex.glava <-
gsub(
pattern = '!kemija!',
replacement = Hmisc::latexTranslate(kemija),
replacement = kemija,
x = tex.glava
)
#---------------------- //LATEX KOSI// --------------------#

View File

@ -12,7 +12,7 @@
\usepackage{hyperref} % PDF hyperlinks to a given page.
\hypersetup{hidelinks}
\usepackage{tikz}
\catcode `č=13
@ -99,5 +99,13 @@
!solarij!
\\ \\
\begin{tikzpicture}
\node (rect) [rectangle,fill = rumena, minimum width=175mm, minimum height=10mm] at (1,1) {};
\node [above] at (rect.east) {\hspace*{-5.8cm} \textcolor{red}{Več v dokumentu UV sevanje in zdravje:}};
\node [below] at (rect.east) {\hspace*{-7.3cm} \textcolor{blue}{\href{www.nijz.si/sl/ultravijolicno-uv-sevanje-in-zdravje}{www.nijz.si/sl/ultravijolicno-uv-sevanje-in-zdravje}}};
\end{tikzpicture}
\end{minipage}