#interaktiivne graafik PH012B ja PH014B puursüdamike muutlikkuse analüüsiks
library(plotly)
library(readxl)
library(zoo)
library(dplyr)
PH012B <- Lisa_7_Aseri_PH012B_andmestik
PH014B <- Lisa_8_Toolse_PH014B_andmestik
PH012B= data.frame(PH012B)
PH014B= data.frame(PH014B)
k=5 # k väärtus määrab keskmistatud punktide hulga 
j=((k-1)/2) # j määrab tabeli ülemisest ja alumisest osast eemaldatavate ridade arvu
Ravg_PH012B <- rollmean(PH012B[,7:37], k = k) # keskmistab andmed 7 kuni 37 veerus
Ravg_PH014B <- rollmean(PH014B[,7:37], k = k) # keskmistab andmed 7 kuni 37 veerus
PH012B<-cbind(PH012B[(1+j):((nrow(PH012B))-j),1:6], Ravg_PH012B) # liidab keskmistatud andmed kokku esimese 6 veeruga
PH014B<-cbind(PH014B[(1+j):((nrow(PH014B))-j),1:6], Ravg_PH014B) # liidab keskmistatud andmed kokku esimese 6 veeruga
fig1 <- plot_ly(data = PH012B, x = ~Mg, y = ~Sügavus ,
                color = ~Kihistik, mode = 'lines+markers')
fig1 <- fig1 %>%layout(#title = list(text='PH012B', size =10), # lisab graafikule pealkirja
  yaxis = list(zeroline = F, hoverformat='.2f',autorange = "reversed"), # määrab kuvatud komakohad ja pöörab y telje vastupidiseks
  xaxis = list(zeroline = F, hoverformat='.4f')) # määrab määrab kuvatud komakohad
fig1

fig2 <- plot_ly(data = PH014B, x = ~Mg, y = ~Sügavus ,
                color = ~Kihistik, mode = 'lines+markers')
fig2 <- fig2 %>%layout(#title = list(text='PH014B', size =10),
  yaxis = list(zeroline = F, hoverformat='.2f',autorange = "reversed"),
  xaxis = list(zeroline = F, hoverformat='.4f'))
fig2
annotations = list( 
  list( x = 0.2, y = 1.0, text = "PH012B", xref = "paper", # x ja y määravdad pealkirja asukoha ja text pealkirja sisu
        yref = "paper", showarrow = FALSE),  
  list(x = 0.8, y = 1, text = "PH014B", xref = "paper",
       yref = "paper", showarrow = FALSE))
fig <- subplot(fig1,fig2, shareY = T,shareX = T, nrows=1) 
fig <- fig %>%layout(annotations = annotations)
fig
################################################################################
#Korrelatsioon iga järgneva k punkti kohta
library(plotly)
library(readxl)
library(dplyr)
library(zoo)
library(gtools)
XRF<- Lisa_7_Aseri_PH012B_andmestik
XRF= data.frame(XRF)
k=5 #k väärtus määrab keskmistatud punktide hulga 
X2 <- data.frame(running(XRF$Fe, XRF$Mg, fun=cor, width=k)) # leiab korrelatsiooni XRF$Fe ja XRF$Mg vahel
nn = nrow(XRF) #loeb ridade arvu XRf tabelis
PH<-cbind(XRF[1:nn,1:37], X2[1:nn, 1]) #liidab XRF ja X" tabelid kokku
PH <- filter(PH, PH[,38]>= 0) #filtereerib välja read, kus korrelatsioon 0-ist madalam
fig <- plot_ly(data = PH, y = ~Sügavus, x =~PH[,38],    # loob graafiku korrelatsiooni ja sügavuse põhjal
               color=~Kihistik, mode = 'lines+markers')
fig <- fig %>% layout(title = list(text='PH012B', size =10),
                      yaxis = list(zeroline = F, hoverformat='.4f',autorange = "reversed"),
                      xaxis = list(zeroline = F, hoverformat='.2f'))
fig
################################################################################
#Korrelatsioonimaatriks
library(readxl)
library(corrplot)
library(zoo)
library(dplyr)
XRF_Koond<-Lisa_7_Aseri_PH012B_andmestik
k=1  # kmäärab  jooksva keskmise punktide arvu
p=filter(XRF_Koond, Kihistik == "Kalvi") # valim kihistiku põhja
#p <- filter(XRF_Koond,Sügavus_Kor > 6.15 & Sügavus_Kor < 6.23) # valim sügavuse põhjal
Ravg_XRF <- rollmean(p[,c("Si","Al","Ti","Fe","Ca","Mn","K","P",
                          "Sr","Y","Zr", "Rb", "Mg")], k = 1) # valitud elementide k-punkti jooksev keskmine
p= data.frame(Ravg_XRF) # muudab andemed loetavaks korrelatsiooni jaoks
p <- na.omit(p) # eemaldab andmestikust tühjad read
XRF<-cor(p) # moodustab korrelatsioonimaatriksi
corrplot(XRF, method="number") # esiatb korrelatsioonimaatriksi
################################################################################
#Portatiivse ja statsionaarse analüsaatori tulemuste võrdlus
library(readxl)
library(dplyr)
library(ggpubr)
Sulatus <- read_excel("C:/Users/Kulda/OneDrive/Desktop/Lõputöö/Võrdlus/XRF_Võrdlus_1.xlsx",sheet = "Sheet2")
Sulatus=filter(Sulatus, Punkt == "KS22-1"|Punkt == "KS22-2"|
                 Punkt == "KS22-3"|Punkt == "KS22-4"|Punkt == "KS22-5"|Punkt == "KS22-6")
plt1<-ggplot(Sulatus, aes(x=As_pulber, y=As, col =Punkt, shape=Punkt))+
  geom_abline(intercept = 0,slope = 1,linewidth = 0.25)+ #lisab diagonaali
  geom_point(size = 2)+
  labs(x="As pulbermeetodil (ppm)", y= "As käsi XRF(ppm)")+ #telgede pealkirjad
  theme( panel.background = element_rect(fill = "#FFFFFF"),#muudab tausta valgeks
         axis.line=element_line(linewidth = 1))+ #lisab x ja y telje
  coord_fixed(xlim=c(0,20), ylim=c(0,20)) #x ja y telje pikkused
#plt1
plt2<-ggplot(Sulatus, aes(x=Ni_pulber, y=Ni, col =Punkt, shape=Punkt))+
  geom_abline(intercept = 0,slope = 1,linewidth = 0.25)+ #lisab diagonaali
  geom_point(size = 2)+
  labs(x="Ni pulbermeetodil (ppm)", y= "Ni käsi XRF(ppm)")+ #telgede pealkirja
  theme( panel.background = element_rect(fill = "#FFFFFF"),#muudab tausta valgeks
         axis.line=element_line(linewidth = 1))+ #lisab x ja y telje
  coord_fixed(xlim=c(0,20), ylim=c(0,20)) #x ja y telje pikkused
#plt2
plt3<-ggplot(Sulatus, aes(x=U_pulber, y=U, col =Punkt, shape=Punkt))+
  geom_abline(intercept = 0,slope = 1,linewidth = 0.25)+ # lisab diagonaali
  geom_point(size = 2)+
  labs(x="U pulbermeetodil (ppm)", y= "U käsi XRF(ppm)")+ #telgede pealkirja
  theme( panel.background = element_rect(fill = "#FFFFFF"),#muudab tausta valgeks
         axis.line=element_line(linewidth = 1))+ #lisab x ja y telje
  coord_fixed(xlim=c(0,20), ylim=c(0,20)) #muudab x ja y teljed sama pikkadeks
#plt3
plt4<-ggplot(Sulatus, aes(x=Zr_pulber, y=Zr, col =Punkt, shape=Punkt))+
  geom_abline(intercept = 0,slope = 1,linewidth = 0.25)+ #lisab diagonaali
  geom_point(size = 2)+
  labs(x="Zr pulbermeetodil (ppm)", y= "Zr käsi XRF(ppm)")+ #telgede pealkirja
  theme( panel.background = element_rect(fill = "#FFFFFF"),#muudab tausta valgeks
         axis.line=element_line(linewidth = 1))+ #lisab x ja y telje
  coord_fixed(xlim=c(0,60), ylim=c(0,60)) #x ja y telje pikkused
#plt4
ggarrange(plt1+geom_abline(intercept = 0,slope = 1),
          plt2+geom_abline(intercept = 0,slope = 1),
          plt3+geom_abline(intercept = 0,slope = 1),
          plt4+geom_abline(intercept = 0,slope = 1),
          ncol=2,nrow = 2, common.legend = TRUE, legend="right")
################################################################################
#Parandustegurite leidmine lineaarse regresioonivõrrandiga
library(ggpmisc)
library(readxl)
library(dplyr)
library(ggpubr)
Sulatus <- read_excel("C:/Users/Kulda/OneDrive/Desktop/Lõputöö/Võrdlus/XRF_Võrdlus_1.xlsx",sheet = "Sheet2")

Sulatus=filter(Sulatus, Punkt == "KS22-1"|Punkt == "KS22-2"|
                 Punkt == "KS22-3"|Punkt == "KS22-4"|Punkt == "KS22-5"|Punkt == "KS22-6") #Valib analüüsiks vajalikud read

Sulatus<-data.frame(Sulatus)
x<-Sulatus$CaO_sulatus #elemendi/oksiidi nimetus x telje muutujaks
y<-Sulatus$CaO #elemendi/oksiidi nimetus y telje muutujaks


plt1<-ggplot(data=Sulatus,aes(x=x,y=y))+ 
  stat_poly_line(se=FALSE) + #lisab trendijoone
  stat_poly_eq(use_label(c("eq", "R2"))) + #lisab R2 ja regressioonivõrrandi joonisele
  geom_point()+ # lisab punktid x ja y väärtuste põhjal
  geom_abline(intercept = 0,slope = 1,linewidth = 0.25)+ # lisab diagonaali joonisele
  labs(x="Sr pulbermeetod",y="Sr pXRF")+ # telgede pealkirjad
  coord_fixed(xlim=c(0,max(y)*1.5), ylim=c(0,max(y)*1.5)) # telgede pikkused

mod<-lm(y~x) #lm tõusu (a) ja nullkoha (b) leidmiseks

b=mod$coefficients[1] # b on nullkoht lm põhjal
a=mod$coefficients[2] # a on tõus lm põhjal
Sulatus$y_p = (y-b)/a # parandutegur portatiivste analüsaatori tulemusels
plt2<-ggplot(data=Sulatus,aes(x=x,y=y_p))+
  stat_poly_line(se=FALSE) +
  geom_point()+
  geom_abline(intercept = 0,slope = 1,linewidth = 0.25)+
  labs(x="Sr pulbermeetod",y="Sr pXRF parandus")+
  coord_fixed(xlim=c(0,max(Sulatus[,ncol(Sulatus)])*1.5), ylim=c(0,max(Sulatus[,ncol(Sulatus)])*1.5))
ggarrange(plt1,
          plt2,
          ncol=2)
################################################################################
#Graafikud standardproovide tulemuste ja tabelväärtustega, millele lisatud tabelväärtuse standardhälve
library(ggplot2)
library(readxl)
library(ggpubr)
Ref <- Lisa_6_Standardproov_ES_3
Ref <- data.frame(Ref[1:81,1:33]) # valib tabelist Ref read 1 kuni 81 ja veerud 1 kuni 33
Ref$Jrk_Nr <- as.numeric(as.character(Ref$Jrk_Nr)) # muudab tabeli andmed numbriliseks
Ref$Standardhälve<-"Standardhälve" #lisab tabelisse Ref veeru nimega Standardhälve
Ref$Tabelväärtus<-"Tabelväärtus"
Ref$CaO_Tabelväärtus<-50.51
Ref$CaO_Standardhälve<-0.81
Ref$P2O5_Tabelväärtus<-0.42
Ref$P2O5_Standardhälve<-0.03 # read 10 kuni17 lisavad tabelisse veeru, mille sisu on tabelväärtuse ja standardhälbe väärtus
Ref$SiO2_Tabelväärtus<-4.84
Ref$SiO2_Standardhälve<-0.96
Ref$Fe2O3_Tabelväärtus<-0.61
Ref$Fe2O3_Standardhälve<-0.01

plt1<-ggplot(data=Ref, aes(x=Jrk_Nr, y=CaO))+ # graafiku x telg võrdub veeru Jr-_Nr väärtusega ja y CaO väärtusega
  geom_smooth(method=lm, se=FALSE)+ # lisab CaO-le trendijoone
  geom_line(data=Ref, aes(x=Jrk_Nr, y=CaO))+ # lisab joone Jrk_Nr ja CaO põhjal 
  geom_line(data=Ref, aes(x=Jrk_Nr, y=CaO_Tabelväärtus, col = Tabelväärtus))+ # lisab joone CaO tabelväärtuse järgi
  geom_line(data=Ref, aes(x=Jrk_Nr, y=CaO_Tabelväärtus-CaO_Standardhälve, col = Standardhälve))+ # Standardhälbe alumine piir
  geom_line(data=Ref, aes(x=Jrk_Nr, y=CaO_Tabelväärtus+CaO_Standardhälve, col = Standardhälve))+ # Standardhälbe ülemine piir
  labs(x=" ",
       y= "CaO (%)")+ # telgede pealkirjad
  theme(panel.background = element_rect(fill = "#FFFFFF"), # muudab tausta valgeks
        axis.line=element_line(linewidth = 1))+
  labs(color=NULL)
plt2<-ggplot(data=Ref, aes(x=Jrk_Nr, y=P2O5))+
  geom_smooth(method=lm, se=FALSE)+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=P2O5))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=P2O5_Tabelväärtus, group=1, col = Tabelväärtus))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=P2O5_Tabelväärtus-P2O5_Standardhälve, col = Standardhälve))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=P2O5_Tabelväärtus+P2O5_Standardhälve, col = Standardhälve))+
  labs(x=" ",
       y= "P2O5 (%)")+
  theme(panel.background = element_rect(fill = "#FFFFFF"),
        axis.line=element_line(linewidth = 1))+
  labs(color=NULL)
plt3<-ggplot(data=Ref, aes(x=Jrk_Nr, y=SiO2))+
  geom_smooth(method=lm, se=FALSE)+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=SiO2))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=SiO2_Tabelväärtus, group=1, col = Tabelväärtus))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=SiO2_Tabelväärtus-SiO2_Standardhälve, col = Standardhälve))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=SiO2_Tabelväärtus+SiO2_Standardhälve, col = Standardhälve))+
  labs(x=" ",
       y= "SiO2 (%)")+
  theme(panel.background = element_rect(fill = "#FFFFFF"),
        axis.line=element_line(linewidth = 1))+
  labs(color=NULL)
plt4<-ggplot(data=Ref, aes(x=Jrk_Nr, y=Fe2O3))+
  geom_smooth(method=lm, se=FALSE)+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=Fe2O3))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=Fe2O3_Tabelväärtus, group=1, col = Tabelväärtus))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=Fe2O3_Tabelväärtus-Fe2O3_Standardhälve, col = Standardhälve))+
  geom_line(data=Ref, aes(x=Jrk_Nr, y=Fe2O3_Tabelväärtus+Fe2O3_Standardhälve, col = Standardhälve))+
  labs(x=" ",
       y= "Fe2O3 (%)")+
  theme(panel.background = element_rect(fill = "#FFFFFF"),
        axis.line=element_line(linewidth = 1))+
  labs(color=NULL)
ggarrange(plt1,
          plt2,
          plt3,
          plt4,
          ncol=2,nrow = 2, legend= "bottom",common.legend = TRUE)
################################################################################
#interaktiivne hajuvusdiagramm
library(plotly)
library(readxl)
library(zoo)
library(dplyr)
PH <- Lisa_7_Aseri_PH012B_andmestik
PH= data.frame(PH)
k=1 # k väärtus määrab keskmistatud punktide hulga 
j=((k-1)/2) # j määrab tabeli ülemisest ja alumisest osast eemaldatavate ridade arvu
Ravg_PH <- rollmean(PH[,7:36], k = k) # keskmistab andmed 7 kuni 37 veerus

PH<-cbind(PH[(1+j):((nrow(PH))-j),1:6], Ravg_PH) # liidab keskmistatud andmed kokku esimese 6 veeruga
#PH <- filter(PH, Kihistik == "Telinõmme"|Kihistik =="Kalvi") # valim kihistiku põhja
for(i in 11:ncol(PH)){                     # loob graafikud alates 11 tabeli veerust                
  plt<-ggplot(PH,aes(x=Si, y= PH[ ,i],group = 1, col= Kihistik, #
                     text = paste("x: ", round(Si,digits = 4), # kuvab graavikul x väärtust Si põhjal
                                  "<br>y: ", round(PH[ ,i],digits = 4), #kuvab graavikul y väärtust i-nda veeru põhjal
                                  "<br>Kihistik: ", Kihistik, # kuvab graafikul veeru Kihistik väärtust
                                  "<br>Sügavus: ", round(Sügavus,digits = 2))))+ # kuvab graafikul veeru Sügavus_Kor väärtust
    geom_point(size=1)+
    labs(x="Si", y= colnames(PH)[i]) #telgede pealkirjad
  print(ggplotly(plt,tooltip = "text"))
  #ggsave(paste0(i,".pdf"))
  Sys.sleep(1)
}
################################################################################
#portatiivse XRF analüsaatori tulemuste võrdlus Eesti Geoloogiateenistuse XRF analüsaatoriga
library(dplyr)
library(forcats)
library(ggplot2)
library(readxl)
library(plotly)
PH014B_Arbavere <- Lisa_9_Toolse_PH014B_Arbavere_andmestik
                             
PH014B <- Lisa_8_Toolse_PH014B_andmestik
PH014B_Arbavere= data.frame(PH014B_Arbavere)
PH014B=filter(PH014B, Sügavus >= 9.67 & Sügavus <= 10.62 |
                Sügavus > 10.64 & Sügavus < 11.47|
                Sügavus > 11.62 & Sügavus < 12.42|   # rida 261 kuni 266 valib sobivad intervallid sügavuse põhjal
                Sügavus > 12.44 & Sügavus < 13.20|
                Sügavus > 13.23 & Sügavus < 14.10|
                Sügavus > 14.25 & Sügavus < 15.21)
PH014B= data.frame(PH014B)


k=5 # k väärtus määrab keskmistatud punktide hulga 
j=((k-1)/2) # j määrab tabeli ülemisest ja alumisest osast eemaldatavate ridade arvu
Ravg_PH014B_Arbavere <- rollmean(PH014B_Arbavere[,10:278], k = k) # keskmistab andmed
Ravg_PH014B <- rollmean(PH014B[,7:37], k = k)# keskmistab andmed
PH014B_Arbavere<-cbind(PH014B_Arbavere[(1+j):((nrow(PH014B_Arbavere))-j),1:10], Ravg_PH014B_Arbavere) # liidab keskmistatud andmed kokku esimese 10 veeruga
PH014B<-cbind(PH014B[(1+j):((nrow(PH014B))-j),1:6], Ravg_PH014B) # liidab keskmistatud andmed kokku esimese 10 veeruga

plt1<-ggplot(PH014B,aes(x= Fe, y= PH014B_Arbavere$Fe,group = 1, col= Kihistik, # x väärtus tuleb tabelist PH014B ja y tabelist PH014B_Arbavere
                        text = paste("x: ", round(Ca,digits = 4), # kuvab graafikul Ca väärtusi
                                     "<br>y: ", round(PH014B_Arbavere$Ca,digits = 4), # kuvab graafikul Ca väärtusi Arbavere tabelist
                                     "<br>Kihistik: ", Kihistik, # kuvab graafikul kihistikku
                                     "<br>Sügavus: ", round(Sügavus,digits = 2))))+ # kuvab graafikul sügavust
  geom_abline(intercept = 0,slope = 1,linewidth = 0.25)+ # lisab digonaali graafikule
  geom_point(size=1)+ # lisab punktid x ja y väärtuste põhjal
  theme(panel.background = element_rect(fill = "#FFFFFF"), # muudab tausta valgeks
        axis.line=element_line(size = 1))+ # lisab x ja y teljed
  labs(x="Fe portatiivne", y= "Fe statsionaarne")+ # lisab telgede pealkirjad
  coord_fixed(xlim=c(0,20), ylim=c(0,20)) # määrab telgede pikkused
print(ggplotly(plt1,tooltip = "text")) # kuvag graafiku
