P-Tech/ExploratoryDataAnalysis
1
1library(shiny)
2library(shinyjs)
3library(bslib)
4library(dplyr)
5library(ggplot2)
6library(tm)
7library(SnowballC)
8library(plotly)
9library(dplyr)
10library(tidyr)
11library(igraph)
12library(ggraph)
13library(reshape2)
14library(SnowballC)
15library(RColorBrewer)
16library(syuzhet)
17library(cluster)
18library(Rtsne)
19library(umap)
20library(MASS)
21library(koRpus)
22library(openxlsx)
23library(tools)
24library(shinyWidgets)
25library(readxl)
26library(scales)
27library(caret)
28library(BBmisc)
29library(glmnet)
30library(pROC)
31library(ROCR)
32library(car)
33library(ResourceSelection)
34library(tree)
35library(ggplotify)
36library(lmtest)
37library(gridExtra)
38library(patchwork)
39library(caret)
40library(randomForest)
41library(gbm)
42library(earth)
43library(broom)
44library(rlang)
45library(ggdendro)
46library(pastecs)
47library(forecast)
48library(scales)
49library(caret)
50library(BBmisc)
51library(glmnet)
52library(pROC)
53library(ROCR)
54library(car)
55library(ResourceSelection)
56library(tree)
57library(ggplotify)
58library(lmtest)
59library(gridExtra)
60library(patchwork)
61library(caret)
62library(randomForest)
63library(gbm)
64library(earth)
65library(broom)
66library(rlang)
67library(ggdendro)
68library(pastecs)
69library(dbscan)
70library(fpc)
71library(factoextra)
72library(scales)
73library(openxlsx)
74library(arules)
75library(arulesViz)
76library(viridis)
77library(kohonen)
78library(purrr)
79library(rvest)
80library(Rtsne)
81library(shinydashboard)
82library(DT)
83library(DataExplorer)
84library(lubridate)
85library(readr)
86library(htmlwidgets)
87library(GGally)
88library(tidyverse)
89options(width = 150)
90options(digits = 4, scipen = 1000000000)
91options(shiny.maxRequestSize=30*1024^2)
92
93
94
95ui <- fluidPage(
96 theme = bs_theme(version = 5, bootswatch = "spacelab"),
97 useShinyjs(), # Initialize shinyjs
98 titlePanel("PtteM Data Science"),
99 tags$head(tags$link(rel = "stylesheet", href="https://fonts.googleapis.com/css?family=Montserrat:100,300,400,700&display=swap"),
100 tags$style(HTML("
101 body, h1, h2, h3, h4, h5, h6, .nav, p, a, .shiny-input-container {
102 font-family: 'Montserrat'; /* Font type for the title attribute */
103 font-weight: 385;
104 color: #007c9e !important;
105 }
106 * {
107 font-family: 'Montserrat', sans-serif;
108 font-weight: 385;
109 color: #195576; /* Blue color */
110 }
111 body {
112 background-color: #f7f7f7; /* Light gray background */
113 }
114 .icon-btn {
115 border: 1px solid #0d6efd; /* Example border: solid, 2 pixels, #555 color */
116 border-radius: 15%; /* Circular border */
117 color: #00969e; /* Icon color */
118 font-family: 'Montserrat'; /* Font type for the title attribute */
119 font-weight: 385;
120 background-color: #f7f7f7;
121 padding: 125px; /* Space around the icon */
122 margin: 25px; /* Space around the button */
123 font-size: 24px; /* Icon size */
124 box-shadow: 0 2px 4px rgba(0,0,0,0.2);
125 }
126 .icon-btn:hover {
127 color: #00969e; /* Icon color on hover */
128 border-color: #007c9e;
129 background-color: #ebfbfd;/* Border color on hover */
130 }
131 /* Add custom styles here */
132 .shiny-input-container {
133 margin-bottom: 15px;
134 }
135 .box {
136 border: 1px solid #ddd;
137 padding: 20px;
138 border-radius: 50px;
139 margin-bottom: 200px;
140 gap: 200px;
141 align-items: center;
142 }
143 #statsTable_wrapper {
144 margin: 0 auto;
145 }
146 .shiny-output-error {
147 border: 1px solid #FF0000; /* Red border on error */
148 }
149 /* If you want to change the font size of the tooltip, you can add custom CSS for the 'title' attribute's default styling. */
150 "))),
151 tags$head(
152 # Include JavaScript to reload the page
153 tags$script(HTML("
154 document.addEventListener('DOMContentLoaded', function() {
155 document.getElementById('myElement').style.color = '#0d6efd'; // Change to your desired color
156 });
157"))
158 ),
159 tags$head(
160 tags$script(HTML("
161 function reloadPage() {
162 window.location.reload();
163 }
164 "))
165 ),
166 # Refresh button that calls the JavaScript function
167 actionButton("refresh", "Refresh Analysis", onclick = "reloadPage();"),
168 # Help Text or Information for the user
169 helpText("Bu uygulama ile metin analizi başlığı altındaki veri bilimi fonksiyonlarına erişebilirsiniz."),
170 #Exploratory Data Analysis
171 h2("Exploratory Data Analysis Section"),
172 tabsetPanel(
173 tabPanel("Scatter Plot",
174 sidebarLayout(
175 sidebarPanel(
176 fileInput("scatterupload", "Upload CSV/XLSX File", accept = c(".csv", ".xlsx", ".txt")),
177 uiOutput("x_column_selector"),
178 uiOutput("y_column_selector"),
179 actionButton("scatterbtn", "Scatter Plot"),
180 HTML("<div>
181 <h2>Saçılım Grafiği Bölümü</h2>
182 <p>
183 Bu panel, kullanıcıların CSV veya XLSX formatındaki veri dosyalarını yükleyerek, bu veriler arasındaki ilişkileri saçılım grafiği (scatter plot) şeklinde görselleştirmelerine olanak tanır. Aşağıdaki adımlar takip edilmelidir:
184 </p>
185 <ol>
186 <li><strong>Dosya Yükleme:</strong> Kullanıcılar, <code>fileInput</code> aracılığıyla analiz etmek istedikleri CSV veya XLSX dosyasını seçerler. Desteklenen formatlar <code>.csv</code>, <code>.xlsx</code> ve <code>.txt</code> uzantılı dosyalardır.</li>
187 <li><strong>Eksen Seçimi:</strong> Dosya yüklendikten sonra, kullanıcılar <code>uiOutput</code> aracılığıyla oluşturulan seçim kutularından X ve Y eksenlerinde gösterilecek veri sütunlarını seçerler.</li>
188 <li><strong>Saçılım Grafiği Oluşturma:</strong> <code>actionButton</code> ile tetiklenen <code>Scatter Plot</code> butonuna tıklanarak, seçilen sütunlar arasındaki ilişkiyi gösteren saçılım grafiği oluşturulur.</li>
189 <li><strong>Sonuçların Gösterimi:</strong> <code>plotlyOutput</code> aracılığıyla oluşturulan saçılım grafiği, ana panelde gösterilir. Bu grafik, seçilen sütunlar arasındaki ilişkileri görsel olarak kullanıcıya sunar.</li>
190 </ol>
191 <h3>Neden Kullanılır?</h3> Saçılım grafikleri, iki değişken arasındaki ilişkiyi ve dağılımı görselleştirmek için kullanılır. Bu tür bir analiz, veri setindeki eğilimleri, grupları ve aykırı değerleri hızlıca tespit etmeye yardımcı olur.</p>
192 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Saçılım grafikleri, veri analizi, istatistiksel analiz, veri madenciliği ve makine öğrenimi gibi çeşitli veri bilimi uygulamalarında kullanılır. Bu grafikler, değişkenler arasındaki ilişkileri ve korelasyonları anlamak için temel bir
193araçtır ve genellikle veri keşfetme aşamasında kullanılır.
194
195 <h3>Sonuçların Yorumlanması:</h3> Kullanıcılar, saçılım grafiği üzerinde gösterilen noktaların dağılımını inceleyerek, iki değişken arasındaki ilişkiyi anlamaya çalışabilirler. Örneğin, noktalar arasındaki eğilim çizgisi, pozitif veya negatif bir korelasyonu gösterebilir. Ayrıca, grafik üzerindeki yoğunlaşma alanları veya aykırı değerler, veri setindeki önemli özellikleri veya anormallikleri işaret edebilir.</p>
196 <h3>İnteraktif Kullanıcı Etkileşimi:</h3> Kullanıcılar, farklı sütun kombinasyonlarını seçerek çeşitli saçılım grafikleri oluşturabilir ve bu grafikleri interaktif bir şekilde inceleyebilirler. Bu, veri setindeki farklı değişkenlerin birbiriyle olan ilişkilerini keşfetme imkanı sunar.</p>
197 <h3>Kullanım Alanları:</h3> Saçılım grafikleri, finans, ekonomi, sağlık bilimleri, sosyal bilimler ve mühendislik gibi çeşitli alanlarda kullanılır. Örneğin, bir işletme sahibi satış ve reklam harcamaları arasındaki ilişkiyi inceleyebilir veya bir sağlık araştırmacısı farklı sağlık göstergeleri arasındaki korelasyonları değerlendirebilir.</p>
198</div>")
199 ),
200 mainPanel(
201 plotlyOutput("scatterPlot", width = "100%", height = "650px"),
202 )
203 )
204 ),
205 tabPanel("Three Columned Scatter Plot",
206 sidebarLayout(
207 sidebarPanel(
208 fileInput("scatterThreeUpload", "Upload CSV/XLSX File", accept = c(".csv", ".xlsx", ".txt")),
209 uiOutput("x_column_three_selector"),
210 uiOutput("y_column_three_selector"),
211 uiOutput("color_column_three_selector"),
212 actionButton("scatterThreeBtn", "Create Scatter Plot"),
213 HTML("<div>
214 <h2>Üç Sütunlu Saçılım Grafiği Bölümü</h2>
215 <p>
216 Bu panel, kullanıcıların CSV veya XLSX formatındaki veri dosyalarını yükleyerek, bu veriler arasındaki üç boyutlu ilişkileri saçılım grafiği (scatter plot) şeklinde görselleştirmelerine imkan tanır. Aşağıdaki adımlar takip edilmelidir:
217 </p>
218 <ol>
219 <li><strong>Dosya Yükleme:</strong> Kullanıcılar, <code>fileInput</code> aracılığıyla analiz etmek istedikleri CSV veya XLSX dosyasını yüklerler. Desteklenen formatlar <code>.csv</code>, <code>.xlsx</code> ve <code>.txt</code> uzantılı dosyalardır.</li>
220 <li><strong>Eksen Seçimleri:</strong> Dosya yüklendikten sonra, <code>uiOutput</code> aracılığıyla oluşturulan X ve Y eksenleri için seçim kutuları ve renk kodlaması için üçüncü bir sütun seçilir.</li>
221 <li><strong>Saçılım Grafiği Oluşturma:</strong> <code>actionButton</code> ile tetiklenen <code>Create Scatter Plot</code> butonuna basılarak, seçilen sütunlar arasındaki ilişkiyi gösteren üç boyutlu saçılım grafiği oluşturulur.</li>
222 <li><strong>Sonuçların Gösterimi:</strong> <code>plotlyOutput</code> aracılığıyla oluşturulan üç boyutlu saçılım grafiği, ana panelde gösterilir. Bu grafik, seçilen sütunlar arasındaki ilişkileri ve renk kodlaması ile ekstra bir boyut ekleyerek görsel olarak sunar.</li>
223 </ol>
224 <h3>Neden Kullanılır?</h3> Üç sütunlu saçılım grafikleri, iki değişken arasındaki ilişkinin yanı sıra, üçüncü bir değişkenin bu ilişki üzerindeki etkisini görselleştirmek için kullanılır. Bu, verilerdeki daha karmaşık ilişkilerin ve desenlerin anlaşılmasına yardımcı olur.</p>
225 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Bu tür grafikler, özellikle çok değişkenli veri setlerinin incelenmesinde kullanılır ve veri analizi, istatistiksel analiz, veri madenciliği
226ve makine öğrenimi gibi alanlarda değerli bir araçtır. Renk kodlaması sayesinde, ekstra bir boyut eklenerek değişkenler arasındaki ilişkiler daha detaylı bir şekilde incelenebilir.
227
228 <h3>Sonuçların Yorumlanması:</h3> Kullanıcılar, grafiğin renkli noktalarının dağılımını inceleyerek, üç değişken arasındaki ilişkiyi ve etkileşimleri anlamaya çalışabilirler. Örneğin, farklı renk grupları, veri setindeki belirli alt grupları veya kategorileri gösterebilir. Bu, veri setindeki desenleri ve ilişkileri daha iyi anlamak için kullanılabilir.
229 <h3>İnteraktif Kullanıcı Etkileşimi:</h3> Kullanıcılar, farklı sütun ve renk kombinasyonlarını seçerek çeşitli üç boyutlu saçılım grafikleri oluşturabilir ve bu grafikleri interaktif bir şekilde inceleyebilirler. Bu, veri setindeki karmaşık ilişkileri ve dinamikleri keşfetme imkanı sunar.
230 <h3>Kullanım Alanları:</h3> Üç sütunlu saçılım grafikleri, pazar araştırması, finansal analiz, biyolojik araştırmalar ve sosyal bilimler gibi birçok farklı alanda kullanılabilir. Örneğin, bir araştırmacı, nüfus verilerindeki gelir, eğitim seviyesi ve yaşam memnuniyeti arasındaki ilişkileri inceleyebilir veya bir pazarlamacı, müşteri segmentasyonu analizi yapabilir.
231</p>
232</div>"),
233 tags$div(id="plotProgress", style="visibility: hidden;", "Plotting...")
234 ),
235 mainPanel(
236 plotlyOutput("scatterThreePlot", width = "100%", height = "650px"),
237 )
238 )
239 ),
240 tabPanel("Pairs Plot",
241 sidebarLayout(
242 sidebarPanel(
243 fileInput("pairsupload", "Upload CSV/XLSX/TXT File", accept = c(".csv", ".xlsx", ".txt")),
244 HTML("
245<div>
246 <h2>Çiftler Grafiği Bölümü</h2>
247 <p>
248 Bu panel, kullanıcıların CSV, XLSX veya TXT formatlarındaki veri dosyalarını yükleyerek, bu veriler arasındaki çok boyutlu ilişkileri çiftler grafiği (pairs plot) şeklinde görselleştirmelerine imkan tanır. İşlem adımları şunlardır:
249 </p>
250 <ol>
251 <li><strong>Dosya Yükleme:</strong> Kullanıcılar, <code>fileInput</code> aracılığıyla analiz etmek istedikleri CSV, XLSX veya TXT dosyasını yüklerler.</li>
252 <li><strong>Grafiğin Oluşturulması:</strong> Dosya yüklendikten sonra otomatik olarak, veri setindeki tüm değişkenlerin birbirleriyle olan ilişkilerini gösteren bir çiftler grafiği oluşturulur.</li>
253 <li><strong>Sonuçların Gösterimi:</strong> <code>plotlyOutput</code> aracılığıyla oluşturulan çiftler grafiği, ana panelde gösterilir. Bu grafik, veri setindeki değişkenler arasındaki ilişkilerin kapsamlı bir görsel analizini sağlar.</li>
254 </ol>
255 <h3>Neden Kullanılır?</h3> Çiftler grafiği, veri setindeki tüm değişkenlerin birbirleriyle olan ilişkilerini tek bir görselde toplayarak, değişkenler arasındaki potansiyel ilişkileri ve korelasyonları hızlıca tespit etmeyi sağlar. Bu, özellikle çok sayıda değişken içeren veri setlerinde kullanışlıdır.</p>
256 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Çiftler grafiği, özellikle veri keşfi aşamasında, veri setlerinin hızlı bir şekilde incelenmesi için sıklıkla kullanılır. Bu tür grafikler, veri analizi, istatistiksel analiz ve veri madenciliği alanlarında yaygın olarak kullanılır.
257 <h3>Sonuçların Yorumlanması:</h3> Kullanıcılar, grafik üzerinde gösterilen değişkenler arası ilişkileri inceleyerek, veri setindeki desenleri ve olası korelasyonları anlamaya çalışabilirler. Bu, veri setindeki temel özellikleri ve ilişkileri anlamak için bir başlangıç noktası sunar.
258 <h3>İnteraktif Kullanıcı Etkileşimi:</h3> Kullanıcılar, çiftler grafiği üzerinde interaktif incelemeler yaparak, değişkenler arasındaki ilişkileri daha detaylı bir şekilde gözlemleyebilirler. Bu, özellikle karmaşık veri setlerinde faydalı bir özelliktir.
259 <h3>Kullanım Alanları:</h3> Çiftler grafiği, çok değişkenli veri setlerinin analizinde kullanılır ve finans, pazar araştırması, biyolojik bilimler, sosyal bilimler ve daha pek çok alanda değerli bir araçtır. Örneğin, bir pazar araştırmacısı müşteri davranışı ile ilgili birden fazla değişken arasındaki ilişkileri inceleyebilir veya bir sağlık araştırmacısı, farklı sağlık göstergeleri arasındaki korelasyonları analiz edebilir.</p>
260</div>
261")
262 ),
263 mainPanel(
264 plotlyOutput("pairsPlot", width = "100%", height = "750px"),
265 )
266 )
267 ),
268 tabPanel("Histogram Plot",
269 sidebarLayout(
270 sidebarPanel(
271 fileInput("histoupload", "Upload CSV/XLSX/TXT File", accept = c(".csv", ".xlsx", ".txt")),
272 uiOutput("histoColSelect"), # Dynamic UI for column selection
273 actionButton("generateHisto", "Generate Histogram"),
274 HTML("
275<div>
276 <h2>Histogram Grafiği Bölümü</h2>
277 <p>
278 Bu panel, kullanıcıların CSV, XLSX veya TXT formatlarındaki veri dosyalarını yükleyerek, bu verilerin dağılımını histogram grafiği şeklinde analiz etmelerine olanak tanır. İşlem adımları şöyledir:
279 </p>
280 <ol>
281 <li><strong>Dosya Yükleme:</strong> Kullanıcılar, <code>fileInput</code> aracılığıyla analiz etmek istedikleri CSV, XLSX veya TXT dosyasını yüklerler.</li>
282 <li><strong>Sütun Seçimi:</strong> Dosya yüklendikten sonra, kullanıcılar <code>uiOutput</code> aracılığıyla oluşturulan seçim kutusu aracılığıyla histogramda gösterilecek veri sütununu seçerler.</li>
283 <li><strong>Histogram Grafiği Oluşturma:</strong> <code>actionButton</code> ile tetiklenen <code>Generate Histogram</code> butonuna basılarak, seçilen sütun için histogram grafiği oluşturulur.</li>
284 <li><strong>Sonuçların Gösterimi:</strong> <code>plotlyOutput</code> ile oluşturulan histogram grafiği, ana panelde gösterilir. Bu grafik, seçilen sütunun değer dağılımını görsel olarak sunar.</li>
285 </ol>
286 <h3>Neden Kullanılır?</h3> Histogramlar, veri setindeki bir değişkenin frekans dağılımını görselleştirmek için kullanılır. Bu grafikler, veri setindeki değerlerin yoğunlaştığı bölgeleri ve potansiyel aykırı değerleri belirlemeye yardımcı olur.</p>
287 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Histogramlar, veri analizi, istatistiksel analiz ve veri madenciliği gibi çeşitli veri bilimi uygulamalarında kullanılır. Bu grafikler, özellikle veri keşfetme aşamasında, veri setindeki dağılımın hızlıca anlaşılması için temel bir araçtır.
288 <h3>Sonuçların Yorumlanması:</h3> Kullanıcılar, histogram üzerinde gösterilen barların yüksekliğini inceleyerek, veri setindeki değerlerin sıklığını ve dağılımını anlamaya çalışabilirler. Örneğin, barların yüksekliği ve genişliği, verilerin yoğunluğu ve aralığı hakkında bilgi verir.</p>
289 <h3>İnteraktif Kullanıcı Etkileşimi:</h3> Kullanıcılar, farklı sütunları seçerek çeşitli histogramlar oluşturabilir ve bu grafikleri interaktif bir şekilde inceleyebilirler. Bu, veri setindeki değişkenlerin dağılımını keşfetmek için kullanışlı bir yöntemdir.</p>
290 <h3>Kullanım Alanları:</h3> Histogramlar, ekonomi, finans, sağlık bilimleri, sosyal bilimler ve mühendislik gibi birçok alanda kullanılır. Örneğin, bir ekonomist gelir dağılımını inceleyebilir veya bir mühendis üretim süreçlerindeki kalite kontrol verilerini analiz edebilir.</p>
291</div>")
292 ),
293 mainPanel(
294 plotlyOutput("histoPlot", width = "100%", height = "750px")
295 )
296 )
297 ),
298 tabPanel("Histogram and Bar Mean Plot",
299 sidebarLayout(
300 sidebarPanel(
301 fileInput("histoupld", "Upload CSV/XLSX/TXT File", accept = c(".csv", ".xlsx", ".txt")),
302 uiOutput("histoColSel"), # Dynamic UI for column selection
303 uiOutput("histosecColSel"),
304 actionButton("genHisto", "Generate Histogram"),
305 HTML("
306<div>
307 <h2>Histogram ve Bar Ortalama Değer Grafiği Bölümü</h2>
308 <p>
309 Bu panel, kullanıcıların CSV, XLSX veya TXT formatlarındaki veri dosyalarını yükleyerek, bu verilerin dağılımını histogram grafiği şeklinde analiz etmelerine olanak tanır. İşlem adımları şöyledir:
310 </p>
311 <ol>
312 <li><strong>Dosya Yükleme:</strong> Kullanıcılar, <code>fileInput</code> aracılığıyla analiz etmek istedikleri CSV, XLSX veya TXT dosyasını yüklerler.</li>
313 <li><strong>Sütun Seçimi:</strong> Dosya yüklendikten sonra, kullanıcılar <code>uiOutput</code> aracılığıyla oluşturulan seçim kutusu aracılığıyla histogramda gösterilecek veri sütununu seçerler.</li>
314 <li><strong>Histogram Grafiği Oluşturma:</strong> <code>actionButton</code> ile tetiklenen <code>Generate Histogram</code> butonuna basılarak, seçilen sütun için histogram grafiği oluşturulur.</li>
315 <li><strong>Sonuçların Gösterimi:</strong> <code>plotlyOutput</code> ile oluşturulan histogram grafiği, ana panelde gösterilir. Bu grafik, seçilen sütunun değer dağılımını görsel olarak sunar.</li>
316 </ol>
317 <h3>Neden Kullanılır?</h3> Histogramlar, veri setindeki bir değişkenin frekans dağılımını görselleştirmek için kullanılır. Bu grafikler, veri setindeki değerlerin yoğunlaştığı bölgeleri ve potansiyel aykırı değerleri belirlemeye yardımcı olur.</p>
318 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Histogramlar, veri analizi, istatistiksel analiz ve veri madenciliği gibi çeşitli veri bilimi uygulamalarında kullanılır. Bu grafikler, özellikle veri keşfetme aşamasında, veri setindeki dağılımın hızlıca anlaşılması için temel bir araçtır.
319 <h3>Sonuçların Yorumlanması:</h3> Kullanıcılar, histogram üzerinde gösterilen barların yüksekliğini inceleyerek, veri setindeki değerlerin sıklığını ve dağılımını anlamaya çalışabilirler. Örneğin, barların yüksekliği ve genişliği, verilerin yoğunluğu ve aralığı hakkında bilgi verir.</p>
320 <h3>İnteraktif Kullanıcı Etkileşimi:</h3> Kullanıcılar, farklı sütunları seçerek çeşitli histogramlar oluşturabilir ve bu grafikleri interaktif bir şekilde inceleyebilirler. Bu, veri setindeki değişkenlerin dağılımını keşfetmek için kullanışlı bir yöntemdir.</p>
321 <h3>Kullanım Alanları:</h3> Histogramlar, ekonomi, finans, sağlık bilimleri, sosyal bilimler ve mühendislik gibi birçok alanda kullanılır. Örneğin, bir ekonomist gelir dağılımını inceleyebilir veya bir mühendis üretim süreçlerindeki kalite kontrol verilerini analiz edebilir.</p>
322</div>")
323 ),
324 mainPanel(
325 plotlyOutput("histPlot", width = "100%", height = "750px")
326 )
327 )
328 ),
329 tabPanel("Bar Plot",
330 sidebarLayout(
331 sidebarPanel(
332 fileInput("baroupld", "Upload CSV/XLSX/TXT File", accept = c(".csv", ".xlsx", ".txt")),
333 uiOutput("barColSel"), # Dynamic UI for column selection
334 uiOutput("barsecColSel"),
335 actionButton("genBar", "Generate Bar Plot"),
336 HTML("<div>
337 <h2>Çubuk Grafik Paneli</h2>
338
339 <h3>Çıktı Nedir ve Neden Kullanılır?</h3> Bu panel, veri setlerindeki kategorik değişkenlerin sayısal değerlerle ilişkisini görselleştirmek için çubuk grafikler oluşturur. Çubuk grafikler, farklı kategoriler arasındaki büyüklük farklarını kolayca karşılaştırmak için kullanılır. Bu, satış analizi, müşteri davranışları veya demografik dağılım gibi alanlarda kullanışlıdır.</p>
340
341 <h3>Kullanım Adımları:</h3></p>
342 <ol>
343 <li><strong>Veri Dosyası Yükleme:</strong> Çubuk grafik oluşturmak için bir CSV, XLSX veya TXT dosyasını <code>fileInput</code> aracılığıyla yükleyin.</li>
344 <li><strong>Kategorik ve Sayısal Sütun Seçimi:</strong> Analiz için kategorik ve sayısal sütunları seçin.</li>
345 <li><strong>Grafiği Oluşturma:</strong> <code>actionButton</code> butonuna tıklayarak çubuk grafiğini oluşturun.</li>
346 </ol>
347
348 <h3>Kullanıcı Etkileşimi:</h3> Kullanıcılar, dosya yükledikten sonra kategorik ve sayısal sütunları seçer ve analizi başlatır. Sonuçlar ana panelde çubuk grafiği olarak görselleştirilir.</p>
349
350 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Çubuk grafikler, veri görselleştirme ve veri analizi süreçlerinde yaygın olarak kullanılır. Kategorik verilerin sayısal değerlerle ilişkisini göstermek, kategoriler arasındaki farkları ve trendleri belirlemek için tercih edilen bir yöntemdir.</p>
351
352 <h3>Desteklenen Dosya Tipleri:</h3> Kullanıcılar, analiz için CSV (.csv), Excel (.xlsx) veya metin (.txt) formatında dosyalar yükleyebilirler.</p>
353
354 <h3>Sonuçların Yorumlanması:</h3> Elde edilen çubuk grafik, seçilen kategorik değişkene göre sayısal değerlerin dağılımını ve büyüklüğünü gösterir. Bu, veri setindeki örüntüleri ve ilişkileri anlamak için kullanılır. Örnek olarak:</p>
355
356 <ul>
357 <li><strong>Satış Analizi:</strong> Ürün kategorilerine göre satış miktarlarını gösteren çubuk grafik, hangi ürünlerin daha fazla satıldığını ve satış trendlerini ortaya çıkarabilir.</li>
358 <li><strong>Müşteri Analizi:</strong> Müşteri gruplarına göre alışveriş miktarlarını gösteren çubuk grafik, farklı müşteri segmentlerinin alışveriş davranışlarını analiz etmek için kullanılır.</li>
359 <li><strong>Demografik Dağılım:</strong> Nüfus verilerini yaş, cinsiyet gibi kategorilere göre gösteren çubuk grafik, demografik dağılım ve özellikler hakkında bilgi sağlar.</li>
360 </ul>
361
362 <p>Bu örnekler, çubuk grafik analizinin, kategorik verilerin sayısal değerlerle ilişkisini görselleştirmek ve veri setlerindeki örüntüleri anlamak için nasıl kullanılabileceğini gösterir.</p>
363</div>
364")
365 ),
366 mainPanel(
367 plotlyOutput("barPlotea", width = "100%", height = "750px")
368 )
369 )
370 ),
371 tabPanel("Faceted Grids Plot",
372 sidebarLayout(
373 sidebarPanel(
374 fileInput("facegrupld", "Upload CSV/XLSX/TXT File", accept = c(".csv", ".xlsx", ".txt")),
375 uiOutput("facegrColSel"), # Dynamic UI for column selection
376 uiOutput("facegrNumColSel"),
377 actionButton("genFacegr", "Generate Faceted Grid"),
378 HTML("<div>
379 <h2>Yüzlü Izgara Grafik Paneli</h2>
380
381 <h3>Çıktı Nedir ve Neden Kullanılır?</h3> Bu panel, birden fazla kategorik değişkenin sayısal değerlerle ilişkisini görselleştirmek için yüzlü ızgara grafikler oluşturur. Yüzlü ızgara grafikler, veri setindeki çeşitli kategorik değişkenler arasındaki ilişkileri ve bu ilişkilerin sayısal değerler üzerindeki etkilerini detaylı bir şekilde incelemek için kullanılır.</p>
382
383 <h3>Kullanım Adımları:</h3></p>
384 <ol>
385 <li><strong>Veri Dosyası Yükleme:</strong> Yüzlü ızgara grafik oluşturmak için bir CSV, XLSX veya TXT dosyasını <code>fileInput</code> aracılığıyla yükleyin.</li>
386 <li><strong>Kategorik ve Sayısal Sütun Seçimi:</strong> Analiz için birden fazla kategorik sütun ve bir sayısal sütun seçin.</li>
387 <li><strong>Grafiği Oluşturma:</strong> <code>actionButton</code> butonuna tıklayarak yüzlü ızgara grafiğini oluşturun.</li>
388 </ol>
389
390 <h3>Kullanıcı Etkileşimi:</h3> Kullanıcılar, dosya yükledikten sonra kategorik ve sayısal sütunları seçer ve analizi başlatır. Sonuçlar ana panelde yüzlü ızgara grafiği olarak görselleştirilir.</p>
391
392 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Yüzlü ızgara grafikler, çok boyutlu veri setlerinin analizi ve görselleştirmesi için önemli bir araçtır. Bu grafikler, kategorik değişkenlerin kombinasyonlarının sayısal sonuçlar üzerindeki etkilerini göstererek, veri setindeki karmaşık ilişkileri açığa çıkarır.</p>
393
394 <h3>Desteklenen Dosya Tipleri:</h3> Kullanıcılar, analiz için CSV (.csv), Excel (.xlsx) veya metin (.txt) formatında dosyalar yükleyebilirler.</p>
395
396 <h3>Sonuçların Yorumlanması:</h3> Elde edilen yüzlü ızgara grafik, seçilen kategorik değişkenlerin kombinasyonlarına göre sayısal değerlerin nasıl değiştiğini gösterir. Bu, veri setindeki gizli örüntüleri ve ilişkileri anlamak için kullanılır. Örnek olarak:</p>
397
398 <ul>
399 <li><strong>Pazar Segmentasyonu:</strong> Müşteri demografik özellikleri ve satın alma miktarlarına dayalı yüzlü ızgara grafik, pazar segmentlerinin detaylı analizini sağlar.</li>
400 <li><strong>Ürün Performansı:</strong> Ürün kategorileri ve satış bölgelerine göre yüzlü ızgara grafik, farklı pazarlardaki ürün performansını karşılaştırmak için kullanılır.</li>
401 <li><strong>Zaman Serisi Analizi:</strong> Zaman ve kategorik değişkenlerin kombinasyonlarına göre yüzlü ızgara grafik, zaman içindeki eğilimleri ve mevsimsel dalgalanmaları gözlemlemek için yararlıdır.</li>
402 </ul>
403
404 <p>Bu örnekler, yüzlü ızgara grafik analizinin, çok boyutlu veri setlerinden derinlemesine içgörüler elde etmek ve karmaşık ilişkileri anlamak için nasıl kullanılabileceğini gö
405
406sterir.</p>
407</div>
408")
409 ),
410 mainPanel(
411 plotlyOutput("facegrPlot", width = "100%", height = "850px")
412 )
413 )
414 ),
415 tabPanel("Box & Whisker Plot",
416 sidebarLayout(
417 sidebarPanel(
418 fileInput("boxandwhiskerup", "Upload CSV/XLSX File", accept = c(".csv", ".xlsx")),
419 actionButton("generatebaw", "Generate Box & Whisker"),
420 HTML("<div>
421 <h2>Box & Whisker Grafiği Bölümü</h2>
422 <p>
423 Bu panel, kullanıcıların CSV veya XLSX formatındaki veri dosyalarını yükleyerek, bu verilerin dağılımını Box & Whisker grafiği (box & whisker plot) şeklinde analiz etmelerine olanak tanır. Aşağıdaki adımlar takip edilmelidir:
424 </p>
425 <ol>
426 <li><strong>Dosya Yükleme:</strong> Kullanıcılar, <code>fileInput</code> aracılığıyla analiz etmek istedikleri CSV veya XLSX dosyasını yüklerler. Desteklenen formatlar <code>.csv</code> ve <code>.xlsx</code> uzantılı dosyalardır.</li>
427 <li><strong>Grafiği Oluşturma:</strong> Dosya yüklendikten sonra, <code>actionButton</code> ile tetiklenen <code>Generate Box & Whisker</code> butonuna basılarak kutu ve bıyık grafiği oluşturulur.</li>
428 <li><strong>Sonuçların Gösterimi:</strong> <code>plotlyOutput</code> aracılığıyla oluşturulan Box & Whisker grafiği, ana panelde gösterilir. Bu grafik, veri setindeki değişkenlerin dağılımını ve aykırı değerleri görsel olarak sunar.</li>
429 </ol>
430 <h3>Neden Kullanılır?</h3> Box & Whisker grafikleri, veri setlerindeki değişkenlerin dağılımını, merkezi eğilim ve yayılımı, ayrıca aykırı değerleri görselleştirmek için kullanılır. Bu grafikler, verilerin özetlenmesi ve anlaşılması için etkili bir yoldur.</p>
431 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Box & Whisker grafikleri, veri analizi, istatistiksel analiz ve veri madenciliği gibi alanlarda kullanılır. Bu grafikler, özellikle veri keşfi aşamasında, verilerin hızlı bir şekilde özetlenmesi ve anlaşılması için önemli bir araçtır.
432 <h3>Sonuçların Yorumlanması:</h3> Kullanıcılar, grafik üzerinde gösterilen kutu ve bıyıkların boyutunu ve konumunu inceleyerek, veri setindeki değişkenlerin dağılımını, medyanını, çeyrekliklerini ve potansiyel aykırı değerleri anlamaya çalışabilirler. Kutunun uzunluğu, veri setindeki dağılımın ne kadar yaygın olduğunu gösterirken, bıyıkların uzanımı, veri setinin uç değerlerini gösterir.
433 <h3>İnteraktif Kullanıcı Etkileşimi:</h3> Kullanıcılar, yüklenen veri dosyası üzerinden farklı değişkenler için Box & Whisker grafikleri oluşturabilir ve bu grafikleri interaktif bir şekilde inceleyebilirler. Bu, veri setindeki farklı değişkenlerin dağılımını ve aykırı değerlerini keşfetmek için kullanışlı bir yöntemdir.
434 <h3>Kullanım Alanları:</h3> Box & Whisker grafikleri, finans, biyoloji, sosyal bilimler, mühendislik ve ekonomi gibi birçok farklı alanda kullanılır. Örneğin, bir finans analisti, farklı hisse senetlerinin fiyat dağılımlarını inceleyebilir veya bir araştırmacı, sosyal bilimlerde anket verilerinin dağılımını analiz edebilir.</p>
435</div>")
436 ),
437 mainPanel(
438 plotlyOutput("bawPlot", width = "100%", height = "750px")
439 )
440 )
441 ),
442 tabPanel("Heatmap Correlation Plot",
443 sidebarLayout(
444 sidebarPanel(
445 fileInput("heatmapFile", "Upload CSV/XLSX File", accept = c(".csv", ".xlsx")),
446 actionButton("generateHeatmap", "Generate Heatmap"),
447 HTML("<div>
448 <h2>Isı Haritası Korelasyon Grafiği Bölümü</h2>
449 <p>
450 Bu panel, kullanıcıların CSV veya XLSX formatındaki veri dosyalarını yükleyerek, bu verilerin değişkenler arası korelasyonunu ısı haritası (heatmap) şeklinde görselleştirmelerine olanak tanır. İşlem adımları şöyledir:
451 </p>
452 <ol>
453 <li><strong>Dosya Yükleme:</strong> Kullanıcılar, <code>fileInput</code> aracılığıyla analiz etmek istedikleri CSV veya XLSX dosyasını yüklerler. Desteklenen formatlar <code>.csv</code> ve <code>.xlsx</code> uzantılı dosyalardır.</li>
454 <li><strong>Isı Haritası Oluşturma:</strong> <code>actionButton</code> ile tetiklenen <code>Generate Heatmap</code> butonuna basılarak, veri setindeki değişkenlerin birbiriyle olan korelasyon derecelerini gösteren ısı haritası oluşturulur.</li>
455 <li><strong>Sonuçların Gösterimi:</strong> <code>plotlyOutput</code> aracılığıyla oluşturulan ısı haritası, ana panelde gösterilir. Bu grafik, değişkenler arasındaki korelasyon ilişkilerini renk skalası üzerinden görsel olarak sunar.</li>
456 </ol>
457 <h3>Neden Kullanılır?</h3> Isı haritaları, bir veri setindeki çok sayıda değişken arasındaki korelasyonları görselleştirmek için etkilidir. Bu analiz, değişkenler arası ilişkilerin hızlı ve kolay bir şekilde anlaşılmasını sağlar.</p>
458 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Isı haritaları, veri analizi, istatistiksel analiz ve veri madenciliği gibi çeşitli veri bilimi uygulamalarında kullanılır. Özellikle çok değişkenli veri setlerinin keşfi ve analizi sırasında kullanışlıdır.
459 <h3>Sonuçların Yorumlanması:</h3> Kullanıcılar, ısı haritası üzerindeki renk yoğunluklarını inceleyerek değişkenler arasındaki korelasyonun gücünü ve yönünü anlamaya çalışabilirler. Koyu renkler yüksek korelasyonları, açık renkler ise düşük korelasyonları gösterir.
460 <h3>İnteraktif Kullanıcı Etkileşimi:</h3> Kullanıcılar, ısı haritası üzerinde interaktif incelemeler yaparak, değişkenler arasındaki korelasyon iliş
461kilerini daha detaylı bir şekilde gözlemleyebilirler. Bu, özellikle karmaşık veri setlerinde, değişkenler arası ilişkilerin ve etkileşimlerin keşfedilmesi için faydalı bir özelliktir.
462
463 <h3>Kullanım Alanları:</h3> Isı haritası korelasyon grafikleri, finans, biyoloji, sosyal bilimler, sağlık bilimleri ve daha pek çok alanda kullanılır. Örneğin, bir finans analisti farklı finansal göstergeler arasındaki ilişkileri inceleyebilir veya bir epidemiyolog sağlık verilerindeki değişkenler arası korelasyonları analiz edebilir.</p>
464</div>")
465 ),
466 mainPanel(
467 plotlyOutput("heatmapPlot", width = "100%", height = "750px")
468 )
469 )
470 ),
471 tabPanel("Basic Statistics Table",
472 sidebarLayout(
473 sidebarPanel(
474 fileInput("fileInputbs", "Upload CSV/XLSX/TXT File", accept = c(".csv", ".xlsx", ".txt")),
475 actionButton("generateStats", "Generate Statistics"),
476 HTML("<div>
477 <h2>Temel İstatistikler Tablosu Bölümü</h2>
478 <p>
479 Bu panel, kullanıcıların CSV veya XLSX formatındaki veri dosyalarını yükleyerek, bu verilerdeki temel istatistikleri bir tablo şeklinde görüntülemelerine olanak tanır. Aşağıdaki adımlar takip edilmelidir:
480 </p>
481 <ol>
482 <li><strong>Dosya Yükleme:</strong> Kullanıcılar, <code>fileInput</code> aracını kullanarak analiz etmek istedikleri metin dosyasını seçerler. Desteklenen formatlar düz metin dosyalarıdır (örneğin, <code>.txt</code> uzantılı dosyalar).</li>
483 <li><strong>İstatistikleri Oluşturma:</strong> Dosya yüklendikten sonra <code>generateStats</code> düğmesine tıklanarak, seçilen veri seti için temel istatistikler hesaplanır.</li>
484 <li><strong>Sonuçların Gösterimi:</strong> <code>DTOutput</code> aracılığıyla oluşturulan tablo, ana panelde gösterilir. Bu tablo, veri setindeki sayısal değişkenler için ortalama, standart sapma, minimum ve maksimum değerleri içerir.</li>
485 </li>
486 </ol>
487 <h3>Neden Kullanılır?</h3> Temel istatistikler, veri setindeki verilerin dağılımı ve özellikleri hakkında bilgi edinmek için kullanılır. Bu tür bir analiz, veri setindeki eğilimleri, grupları ve aykırı değerleri hızlıca tespit etmeye yardımcı olur.</p>
488 <h3>Veri Bilimi Alanındaki Kullanımı:</h3> Temel istatistikler, veri analizi, istatistiksel analiz, veri madenciliği ve makine öğrenimi gibi çeşitli veri bilimi uygulamalarında kullanılır. Bu istatistikler, veri setindeki değişkenlerin birbiriyle olan ilişkilerini ve korelasyonları anlamak için temel bir araçtır ve genellikle veri keşfetme aşamasında kullanılır.</p>
489 <h3>Sonuçların Yorumlanması:</h3> Kullanıcılar, tablodaki değerleri inceleyerek, veri setindeki sayısal değişkenler hakkında bilgi edinebilirler. Örneğin, ortalama, bir değişkenin genel değerini gösterir. Standart sapma, bir değişkenin değerlerinin ne kadar dağıldığını gösterir. Minimum ve maksimum değerler, bir değişkenin en düşük ve en yüksek değerlerini gösterir.</p>
490 <h3>İnteraktif Kullanıcı Etkileşimi:</h3>Kullanıcılar, farklı veri setleri veya değişkenler seçerek, farklı tablolar oluşturabilir ve bu tabloları interaktif bir şekilde inceleyebilirler. Bu, veri setindeki farklı değişkenlerin birbiriyle olan ilişkilerini keşfetme imkanı sunar.
491 <h3>Kullanım Alanları:</h3>Temel istatistikler, finans, ekonomi, sağlık bilimleri, sosyal bilimler ve mühendislik gibi çeşitli alanlarda kullanılır. Örneğin, bir işletme sahibi satış ve reklam harcamaları arasındaki ilişkiyi inceleyebilir veya bir sağlık araştırmacısı farklı sağlık göstergeleri arasındaki ortalama değerleri karşılaştırabilir.</p>
492</div>")
493 ),
494 mainPanel(
495 DTOutput("statsTable")
496 )
497 )
498 )
499 )
500)
501
502###Basic Statistics Table Function
503calculate_stats <- function(df) {
504 # Calculate stats for all columns and convert results to a data frame
505 stats_df <- lapply(names(df), function(name) {
506 col <- df[[name]]
507 if(is.numeric(col)) {
508 tibble(
509 Metric = c("Count", "Mean", "Median", "Min", "Max", "NA_Values"),
510 Value = c(
511 sum(!is.na(col)),
512 mean(col, na.rm = TRUE),
513 median(col, na.rm = TRUE),
514 min(col, na.rm = TRUE),
515 max(col, na.rm = TRUE),
516 sum(is.na(col))
517 ),
518 Column = name
519 )
520 } else {
521 tibble(
522 Metric = c("Count", "Unique_Values", "NA_Values"),
523 Value = c(
524 sum(!is.na(col)),
525 length(unique(col)),
526 sum(is.na(col))
527 ),
528 Column = name
529 )
530 }
531 }) %>% bind_rows() %>% mutate(Value = ifelse(is.na(Value), "NA", Value))
532
533 # Reshape data frame to wide format
534 stats_wide <- pivot_wider(stats_df, names_from = Column, values_from = Value, id_cols = Metric)
535
536 return(stats_wide)
537}
538
539server <- function(input, output, session) {
540
541 read_data <- function(filepath) {
542 ext <- tools::file_ext(filepath)
543 if (ext == "csv") {
544 read.csv(filepath, stringsAsFactors = FALSE)
545 } else if (ext == "xlsx") {
546 readxl::read_excel(filepath)
547 } else {
548 stop("Invalid file format. Please select a CSV or XLSX file.")
549 }
550 }
551
552 clean_column_names <- function(dataframe) {
553 colnames(dataframe) <- gsub("[^[:alnum:]_]", "", make.names(colnames(dataframe), unique = TRUE))
554 return(dataframe)
555 }
556
557 #Exploratory Data Analysis
558 # Reactive to store the uploaded data
559 datasp <- reactive({
560 # Ensure a file is uploaded
561 req(input$scatterupload)
562 # Process the file based on its type
563 file <- input$scatterupload
564 ext <- tools::file_ext(file$name)
565
566 if (ext == "csv") {
567 read.csv(file$datapath, na.strings = c("", "NA", "na"), stringsAsFactors = FALSE)
568 } else if (ext == "xlsx") {
569 readxl::read_xlsx(file$datapath, na = c("", "NA", "na"))
570 } else if (ext == "txt") {
571 read.delim(file$datapath, na.strings = c("", "NA", "na"), stringsAsFactors = FALSE)
572 }
573 })
574
575 # Add a reactive value to track if the button is clicked
576 isButtonClicked <- reactiveVal(FALSE)
577
578 # Observe when the button is clicked
579 observeEvent(input$scatterbtn, {
580 isButtonClicked(TRUE) # Set the flag when the button is clicked
581 req(datasp()) # Ensure data is available
582 # Clean the data
583 clean_data <- na.omit(datasp())
584 # Exclude categorical columns or handle them differently
585 clean_data <- clean_data[sapply(clean_data, is.numeric)]
586 # Ensure that 'x' and 'y' columns are selected
587 if (input$xcol %in% names(clean_data) && input$ycol %in% names(clean_data)) {
588 cleanData(clean_data) # Store cleaned data
589 } else {
590 cleanData(NULL) # Store NULL if columns are not selected
591 }
592 })
593
594 # Reset the button click flag when new file is uploaded
595 observeEvent(input$scatterupload, {
596 isButtonClicked(FALSE)
597 })
598
599 # UI output for column selectors
600 output$x_column_selector <- renderUI({
601 req(datasp())
602 selectInput("xcol", "X-axis Variable", names(datasp()))
603 })
604
605 output$y_column_selector <- renderUI({
606 req(datasp())
607 selectInput("ycol", "Y-axis Variable", names(datasp()))
608 })
609
610 # Render the scatter plot
611 output$scatterPlot <- renderPlotly({
612 req(isButtonClicked()) # Check if the button is clicked
613 req(cleanData()) # React only to cleanData
614 clean_data <- cleanData()
615
616 # Create a Plotly scatter plot
617 p <- plot_ly(clean_data, x = ~get(input$xcol), y = ~get(input$ycol), type = 'scatter', mode = 'markers')
618 p <- p %>% layout(title = 'Scatter Plot',
619 xaxis = list(title = input$xcol),
620 yaxis = list(title = input$ycol))
621 p
622 })
623
624
625 ##Three Columned Scatter Plot
626 # Reactive to store the uploaded data
627 dataThree <- reactive({
628 req(input$scatterThreeUpload)
629 file <- input$scatterThreeUpload
630 ext <- tools::file_ext(file$name)
631
632 if (ext == "csv") {
633 read.csv(file$datapath, na.strings = c("", "NA", "na"), stringsAsFactors = FALSE)
634 } else if (ext == "xlsx") {
635 readxl::read_xlsx(file$datapath, na = c("", "NA", "na"))
636 } else if (ext == "txt") {
637 read.delim(file$datapath, na.strings = c("", "NA", "na"), stringsAsFactors = FALSE)
638 }
639 })
640
641 # UI output for column selectors
642 output$x_column_three_selector <- renderUI({
643 req(dataThree())
644 selectInput("xcolThree", "X-axis Variable", names(dataThree()))
645 })
646
647 output$y_column_three_selector <- renderUI({
648 req(dataThree())
649 selectInput("ycolThree", "Y-axis Variable", names(dataThree()))
650 })
651
652 output$color_column_three_selector <- renderUI({
653 req(dataThree())
654 selectInput("colorcolThree", "Color Variable", names(dataThree()))
655 })
656
657 cleanData <- reactiveVal() # Initialize cleanData as a reactive value
658
659 # Update observeEvent to include color column
660 observeEvent(input$scatterThreeBtn, {
661 isButtonClicked(TRUE)
662 req(dataThree()) # Ensure data is available
663
664 # First, define 'clean_data'
665 clean_data <- na.omit(dataThree())
666 # Handle categorical data if needed or exclude non-numeric columns
667 clean_data <- clean_data[sapply(clean_data, is.numeric)]
668
669 # Then, check the columns and update 'cleanData'
670 if (all(c(input$xcolThree, input$ycolThree, input$colorcolThree) %in% names(clean_data))) {
671 cleanData(clean_data) # Update cleanData reactive value
672 } else {
673 cleanData(NULL)
674 }
675 })
676
677
678 # Reset the button click flag when new file is uploaded
679 observeEvent(input$scatterThreeUpload, {
680 isButtonClicked(FALSE)
681 })
682
683 # Render the scatter plot with color dimension
684 output$scatterThreePlot <- renderPlotly({
685 req(isButtonClicked()) # Check if the button is clicked
686 req(cleanData()) # React only to cleanData
687 clean_data <- cleanData()
688
689 # Create a Plotly scatter plot with color dimension
690 p <- plot_ly(clean_data, x = ~get(input$xcolThree), y = ~get(input$ycolThree),
691 type = 'scatter', mode = 'markers',
692 color = ~get(input$colorcolThree))
693 p <- p %>% layout(title = 'Scatter Plot with Color Dimension',
694 xaxis = list(title = input$xcolThree),
695 yaxis = list(title = input$ycolThree))
696
697 p
698 })
699
700 ##Pairs Plot
701 # Reactive expression to process the uploaded file
702 dataForPairs <- reactive({
703 req(input$pairsupload)
704 ext <- tools::file_ext(input$pairsupload$name)
705
706 if (ext == "csv") {
707 df <- read.csv(input$pairsupload$datapath, na.strings = c("", "NA"), stringsAsFactors = FALSE)
708 } else if (ext == "xlsx") {
709 df <- readxl::read_xlsx(input$pairsupload$datapath, na = c("", "NA"))
710 } else if (ext == "txt") {
711 df <- read.delim(input$pairsupload$datapath, na.strings = c("", "NA"), stringsAsFactors = FALSE)
712 }
713
714 df <- na.omit(df) # Remove NA values
715 df
716 })
717
718 output$pairsPlot <- renderPlotly({
719 df <- dataForPairs()
720
721 # Ensure at least two numeric columns are available
722 if (sum(sapply(df, is.numeric)) < 2) {
723 return(plot_ly() %>%
724 add_annotations(text = "Not enough numeric columns for Pairs Plot",
725 x = 0.5, y = 0.5, showarrow = FALSE,
726 font = list(size = 20)))
727 }
728
729 # Select only numeric columns
730 numeric_df <- select_if(df, is.numeric)
731
732 # Remove NA values
733 numeric_df <- na.omit(numeric_df)
734
735 # Optional: Handle categorical variables for color coding
736 # ... Code to handle categorical variables ...
737
738 # Create the pairs plot
739 p <- ggpairs(numeric_df, title = "Pairs Plot")
740
741 # Convert to Plotly
742 ggplotly(p)
743 })
744
745 #Histogram
746 # Reactive expression to process the uploaded file
747 datahp <- reactive({
748 req(input$histoupload)
749 inFile <- input$histoupload
750 ext <- tools::file_ext(inFile$name)
751 if (ext == "csv") {
752 read.csv(inFile$datapath, stringsAsFactors = FALSE, na.strings = c("", "NA", "na"))
753 } else if (ext == "xlsx") {
754 readxl::read_xlsx(inFile$datapath, na = c("", "NA", "na"))
755 } else if (ext == "txt") {
756 read.delim(inFile$datapath, stringsAsFactors = FALSE, na.strings = c("", "NA", "na"))
757 }
758 })
759
760
761 # Dynamic UI for column selection
762 output$histoColSelect <- renderUI({
763 req(datahp())
764 selectInput("histoCol", "Select Column", choices = names(datahp()))
765 })
766
767 selectedColumn <- reactiveVal()
768
769 observeEvent(input$generateHisto, {
770 # Update the selected column when the button is clicked
771 selectedColumn(input$histoCol)
772 })
773
774 # Render the histogram with progress bar
775 observeEvent(input$generateHisto, {
776 output$histoPlot <- renderPlotly({
777 req(datahp())
778 req(selectedColumn())
779
780 withProgress(message = 'Generating histogram...', value = 0, {
781 df <- datahp()
782
783 # Extended custom color palette with 20 unique colors
784 my_colors <- c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd",
785 "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf",
786 "#1a55FF", "#ffBB78", "#2ca02c", "#d62728", "#9467bd",
787 "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2",
788 "#7b4173", "#a55194", "#ce6dbd", "#de9ed6", "#31a354",
789 "#74c476", "#a1d99b", "#c7e9c0", "#756bb1", "#9e9ac8",
790 "#bcbddc", "#dadaeb", "#636363", "#969696", "#bdbdbd",
791 "#d9d9d9", "#393b79", "#5254a3", "#6b6ecf", "#9c9ede")
792
793 incProgress(0.3, detail = "Preparing Data") # Increment progress
794
795 # Determine if the column is numeric or non-numeric
796 is_numeric <- is.numeric(df[[selectedColumn()]])
797
798 incProgress(0.3, detail = "Creating Plot") # Increment progress
799
800 # Generate the histogram plot
801 colData <- as.factor(df[[selectedColumn()]])
802 plot <- if (is_numeric) {
803 # For numeric columns, use a single color
804 plot_ly(df, x = colData, type = "histogram",
805 marker = list(color = my_colors)) %>%
806 layout(title = paste("Histogram of", selectedColumn()),
807 xaxis = list(title = selectedColumn()),
808 yaxis = list(title = "Count"))
809 } else {
810 # For non-numeric columns, use distinct colors for each bar
811 colData <- as.factor(df[[selectedColumn()]])
812 plot_ly(df, x = colData, type = "histogram",
813 color = colData, colors = RColorBrewer::brewer.pal(8, "Set2")) %>%
814 layout(title = paste("Histogram of", selectedColumn()),
815 xaxis = list(title = selectedColumn()),
816 yaxis = list(title = "Frequency"))
817 }
818
819 incProgress(0.4, detail = "Finalizing") # Final increment to complete the progress
820
821 # Return the generated plot
822 plot
823 })
824 })
825 })
826
827 #Histogram Mean Plot
828 # Reactive expression to process the uploaded file
829 datahpn <- reactive({
830 req(input$histoupld)
831 inFile <- input$histoupld
832 ext <- tools::file_ext(inFile$name)
833 if (ext == "csv") {
834 read.csv(inFile$datapath, stringsAsFactors = FALSE, na.strings = c("", "NA", "na"))
835 } else if (ext == "xlsx") {
836 readxl::read_xlsx(inFile$datapath, na = c("", "NA", "na"))
837 } else if (ext == "txt") {
838 read.delim(inFile$datapath, stringsAsFactors = FALSE, na.strings = c("", "NA", "na"))
839 }
840 })
841
842
843 # Dynamic UI for column selection
844 output$histoColSel <- renderUI({
845 req(datahpn())
846 selectInput("histoCol", "Select Column", choices = names(datahpn()))
847 })
848
849 # Reactive value to store the selected column
850 selColhp <- reactiveVal()
851
852 # Observe the action button click to update the reactive value
853 observeEvent(input$genHisto, {
854 selColhp(input$histoCol)
855 })
856
857 output$histosecColSel <- renderUI({
858 req(datahpn())
859 selectInput("histosecCol", "Select Column for Mean Calculation", choices = names(datahpn()))
860 })
861
862 output$histosecColSel <- renderUI({
863 req(datahpn()) # Ensure data is available
864
865 # Debugging: Print column names to the console
866 print(names(datahpn()))
867
868 # Dynamically generate selectInput based on available column names
869 # Initialize with a placeholder choice if names are not available yet
870 choices <- if(is.null(names(datahpn()))) c("No columns available" = "") else names(datahpn())
871
872 selectInput("histosecCol", "Select Column for Mean Calculation", choices = choices)
873 })
874
875 # Extended custom color palette with 20 unique colors
876 my_colors <- c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd",
877 "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf",
878 "#1a55FF", "#ffBB78", "#2ca02c", "#d62728", "#9467bd",
879 "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2",
880 "#7b4173", "#a55194", "#ce6dbd", "#de9ed6", "#31a354",
881 "#74c476", "#a1d99b", "#c7e9c0", "#756bb1", "#9e9ac8",
882 "#bcbddc", "#dadaeb", "#636363", "#969696", "#bdbdbd",
883 "#d9d9d9", "#393b79", "#5254a3", "#6b6ecf", "#9c9ede")
884
885 observeEvent(input$genHisto, {
886 output$histPlot <- renderPlotly({
887 req(datahpn(), selColhp(), input$histosecCol)
888
889 df <- datahpn()
890 selected_col <- selColhp()
891 sec_col <- input$histosecCol
892
893 # Convert column names to symbols for dplyr to recognize them
894 selected_col_sym <- rlang::sym(selected_col)
895 sec_col_sym <- rlang::sym(sec_col)
896
897 # Check if the selected column is numeric
898 is_numeric <- is.numeric(df[[selected_col]])
899
900 if (is_numeric) {
901 # If the selected column is numeric, generate a standard histogram
902 mean_val <- mean(df[[sec_col]], na.rm = TRUE)
903
904 plot <- plot_ly(df, x = ~get(selected_col), type = "histogram",
905 marker = list(color = my_colors)) %>%
906 layout(title = paste("Histogram of", selected_col, "<br>Mean of", sec_col, ":", round(mean_val, 2)),
907 xaxis = list(title = selected_col),
908 yaxis = list(title = "Count"))
909 } else {
910 # For non-numeric columns, calculate the mean for each category
911 agg_data <- df %>%
912 group_by(!!selected_col_sym) %>%
913 summarise(Mean = mean(!!sec_col_sym, na.rm = TRUE), .groups = 'drop')
914
915 plot <- plot_ly(agg_data, x = ~get(selected_col), y = ~Mean, type = "bar",
916 marker = list(color = my_colors)) %>%
917 layout(title = paste("Mean of", sec_col, "for each category of", selected_col),
918 xaxis = list(title = selected_col),
919 yaxis = list(title = paste("Mean of", sec_col)))
920 }
921
922 plot # Return the generated plot
923 })
924 })
925
926 ##Bar Plot
927 # Reactive expression to process the uploaded file
928 databar <- reactive({
929 req(input$baroupld)
930 inFile <- input$baroupld
931 ext <- tools::file_ext(inFile$name)
932 if (ext == "csv") {
933 read.csv(inFile$datapath, stringsAsFactors = FALSE, na.strings = c("", "NA", "na"))
934 } else if (ext == "xlsx") {
935 readxl::read_xlsx(inFile$datapath, na = c("", "NA", "na"))
936 } else if (ext == "txt") {
937 read.delim(inFile$datapath, stringsAsFactors = FALSE, na.strings = c("", "NA", "na"))
938 }
939 })
940
941 # Dynamic UI for categorical column selection
942 output$barColSel <- renderUI({
943 req(databar())
944 # Exclude non-categorical columns if possible, otherwise let user decide
945 selectInput("barCategoricalCol", "Select Categorical Column", choices = names(databar()))
946 })
947
948 # Dynamic UI for numerical column selection
949 output$barsecColSel <- renderUI({
950 req(databar())
951 # Include only numerical columns if possible
952 selectInput("barNumericalCol", "Select Numerical Column", choices = names(databar()))
953 })
954
955 # Store the selected columns
956 selectedCategoricalCol <- reactiveVal()
957 selectedNumericalCol <- reactiveVal()
958
959 # Observe event for the 'Generate Bar Plot' button
960 observeEvent(input$genBar, {
961 selectedCategoricalCol(input$barCategoricalCol)
962 selectedNumericalCol(input$barNumericalCol)
963 })
964
965 # Render the bar plot
966 output$barPlotea <- renderPlotly({
967 req(databar(), selectedCategoricalCol(), selectedNumericalCol())
968 df <- databar()
969 catCol <- selectedCategoricalCol()
970 numCol <- selectedNumericalCol()
971
972 # Ensure the categorical column is a factor and numerical column is numeric
973 if(!is.factor(df[[catCol]]) && !is.Date(df[[catCol]])) {
974 df[[catCol]] <- as.factor(df[[catCol]])
975 }
976 if(!is.numeric(df[[numCol]])) {
977 stop("Selected numerical column is not numeric.")
978 }
979
980 # Generate the bar plot
981 p <- plot_ly(data = df, x = ~get(catCol), y = ~get(numCol), type = 'bar',
982 marker = list(color = 'rgb(158,202,225)', line = list(color = 'rgb(8,48,107)', width = 1.5)))
983 p <- p %>% layout(title = paste('Bar Plot of', catCol, 'vs', numCol),
984 xaxis = list(title = catCol),
985 yaxis = list(title = paste('Sum of', numCol)))
986 p
987 })
988
989 ##Faceted Grids Plot
990 # Reactive expression to process the uploaded file
991 datafacegr <- reactive({
992 req(input$facegrupld) # Ensure that a file is uploaded
993 inFile <- input$facegrupld # Get the uploaded file information
994 ext <- tools::file_ext(inFile$name) # Extract the file extension
995
996 # Read the file based on its extension and clean the column names
997 df <- if (ext == "csv") {
998 read.csv(inFile$datapath, stringsAsFactors = FALSE, na.strings = c("", "NA", "na"))
999 } else if (ext == "xlsx") {
1000 readxl::read_xlsx(inFile$datapath, na = c("", "NA", "na"))
1001 } else if (ext == "txt") {
1002 read.delim(inFile$datapath, stringsAsFactors = FALSE, na.strings = c("", "NA", "na"))
1003 } else {
1004 stop("Unsupported file type") # Stop execution if the file type is not supported
1005 }
1006
1007 # Ensure that the column names are valid R identifiers
1008 colnames(df) <- make.names(colnames(df), unique = TRUE)
1009 df # Return the cleaned data frame
1010 })
1011
1012 # Dynamic UI for categorical column selection
1013 output$facegrColSel <- renderUI({
1014 req(datafacegr()) # Ensure that the data is available
1015 # Allow user to select multiple categorical columns
1016 selectInput("facegrCatCols", "Select Categorical Columns", choices = names(datafacegr()), multiple = TRUE)
1017 })
1018
1019 # Dynamic UI for numerical column selection
1020 output$facegrNumColSel <- renderUI({
1021 req(datafacegr()) # Ensure that the data is available
1022 # Allow user to select a single numerical column
1023 selectInput("facegrNumCol", "Select Numerical Column", choices = names(datafacegr()))
1024 })
1025
1026 # Store the selected categorical and numerical columns
1027 slctdCatCols <- reactiveVal()
1028 slctdNumCol <- reactiveVal()
1029
1030 # Observe event for the 'Generate Faceted Grid' button
1031 observeEvent(input$genFacegr, {
1032 slctdCatCols(input$facegrCatCols)
1033 slctdNumCol(input$facegrNumCol)
1034 })
1035
1036 # Generate and render the Faceted Grid plot
1037 output$facegrPlot <- renderPlotly({
1038 req(datafacegr(), slctdCatCols(), slctdNumCol()) # Ensure data and selected columns are available
1039
1040 df <- datafacegr()
1041 selected_cat_columns <- slctdCatCols() # This will be a list of selected column names
1042 numerical_column <- slctdNumCol() # This will be the selected numerical column
1043
1044 # Ensure the column names are compatible with ggplot
1045 clean_names <- make.names(names(df))
1046 names(df) <- clean_names
1047
1048 # Update the selected columns with clean names
1049 selected_cat_columns <- clean_names[match(selected_cat_columns, names(df))]
1050 numerical_column <- clean_names[match(numerical_column, names(df))]
1051
1052 # Create the base ggplot object with color
1053 p <- ggplot(df, aes_string(x = selected_cat_columns[1], y = numerical_column, color = selected_cat_columns[1])) +
1054 geom_point() +
1055 scale_color_viridis(discrete = TRUE) # Use viridis color scale for discrete data
1056
1057 # If there's more than one categorical column, use facet_grid
1058 if (length(selected_cat_columns) > 1) {
1059 # Create a faceting formula based on the selected columns
1060 facet_formula <- paste(selected_cat_columns[-1], collapse = " + ")
1061 facet_formula <- as.formula(paste("~", facet_formula))
1062 p <- p + facet_grid(facet_formula, scales = "free")
1063 }
1064
1065 # If there's only one, use facet_wrap
1066 else if (length(selected_cat_columns) == 1) {
1067 p <- p + facet_wrap(~ .data[[selected_cat_columns[1]]], scales = "free")
1068 }
1069
1070 # Continue with theme and other ggplot2 settings
1071 p <- p + theme_minimal() +
1072 theme(axis.text.x = element_text(angle = 0, hjust = 10))
1073
1074 # Convert to plotly object
1075 ggplotly(p, tooltip = "text")
1076 })
1077
1078 ##Box and Whisker Plot
1079 # Reactive value to store the data
1080 databaw <- reactiveVal()
1081
1082 # Observe file upload and read the data
1083 observeEvent(input$boxandwhiskerup, {
1084 inFile <- input$boxandwhiskerup
1085 if (is.null(inFile)) return()
1086
1087 ext <- tools::file_ext(inFile$name)
1088 if (ext == "csv") {
1089 databaw(read.csv(inFile$datapath, na.strings = c("", "NA"), stringsAsFactors = FALSE))
1090 } else if (ext == "xlsx") {
1091 databaw(readxl::read_xlsx(inFile$datapath, na = c("", "NA")))
1092 }
1093 })
1094
1095 # Observe event for action button to generate box & whisker plots
1096 observeEvent(input$generatebaw, {
1097 # Get the data and filter out non-numeric columns
1098 df <- databaw() %>%
1099 select_if(is.numeric) %>%
1100 na.omit()
1101
1102 # If no numeric columns, return a message
1103 if (ncol(df) == 0) {
1104 output$bawPlot <- renderPlotly({
1105 plot_ly() %>%
1106 add_annotations(
1107 text = "No numeric columns available for plotting",
1108 x = 0.5, y = 0.5, showarrow = FALSE,
1109 font = list(size = 20)
1110 )
1111 })
1112 return()
1113 }
1114
1115 output$bawPlot <- renderPlotly({
1116 req(databaw()) # Ensure data is loaded
1117 df <- databaw() %>%
1118 select_if(is.numeric) %>%
1119 na.omit()
1120
1121 # If no numeric columns, return a message
1122 if (ncol(df) == 0) {
1123 plot_ly() %>%
1124 add_annotations(
1125 text = "No numeric columns available for plotting",
1126 x = 0.5, y = 0.5, showarrow = FALSE,
1127 font = list(size = 20)
1128 )
1129 } else {
1130 p <- plot_ly() # Start a plotly object
1131 # Add a box trace for each column
1132 for (col in names(df)) {
1133 p <- p %>% add_trace(
1134 y = df[[col]],
1135 name = col,
1136 type = 'box',
1137 marker = list(color = RColorBrewer::brewer.pal(8, "Set1")[col])
1138 )
1139 }
1140 # Finalize layout
1141 p %>% layout(
1142 yaxis = list(title = "Values"),
1143 # boxmode = "group" might not be needed if each trace is a separate box plot
1144 # If boxmode causes an error, it can be safely removed
1145 title = "Multiple Box & Whisker Plots"
1146 )
1147 }
1148 })
1149
1150 })
1151
1152 ##Heatmap Correlation Plot
1153 # Reactive value for storing the data
1154 datahm <- reactiveVal()
1155
1156 observeEvent(input$heatmapFile, {
1157 inFile <- input$heatmapFile
1158 if (is.null(inFile)) {
1159 return(NULL) # Exit if no file uploaded
1160 }
1161
1162 # Determine the file extension and read the data accordingly
1163 ext <- tools::file_ext(inFile$name)
1164 if (ext == "csv") {
1165 datahm(read.csv(inFile$datapath, na.strings = c("", "NA"), stringsAsFactors = FALSE))
1166 } else if (ext == "xlsx") {
1167 datahm(readxl::read_xlsx(inFile$datapath, na = c("", "NA")))
1168 }
1169 # You may need to handle other file types and conditions here
1170 })
1171
1172 observeEvent(input$generateHeatmap, {
1173 req(datahm()) # Ensure that data is not NULL before proceeding
1174 withProgress(message = 'Generating heatmap...', value = 0, {
1175 df <- datahm()
1176 if (is.null(df)) {
1177 showNotification("Data not loaded correctly", type = "error")
1178 return(NULL)
1179 }
1180
1181 # Ensure the dataframe is all numeric for correlation
1182 df_numeric <- df %>% select_if(is.numeric) %>% na.omit()
1183
1184 if (ncol(df_numeric) < 2) {
1185 showNotification("Not enough numeric columns for correlation", type = "error")
1186 return(NULL)
1187 }
1188
1189 correlation_matrix <- cor(df_numeric)
1190 heatmap_data <- reshape2::melt(correlation_matrix)
1191
1192 output$heatmapPlot <- renderPlotly({
1193 plot_ly(
1194 x = heatmap_data$Var1, y = heatmap_data$Var2, z = heatmap_data$value,
1195 type = "heatmap", colorscale = 'RdBu'
1196 ) %>% layout(title = 'Heatmap Correlation Plot')
1197 })
1198 incProgress(1) # Signal that the process is complete
1199 })
1200 })
