#'Rbarima
#' @export
rtextmining <- function(wc.input.text = .Last.value,
launch.browser = False) {
################################################################################################################
#ui.R
################################################################################################################
ui <- dashboardPage(
dashboardHeader(title = "TextMining"),
dashboardSidebar(
useShinyjs(),
div(
style = "padding: 15px",
helpText("1. Upload a text file saved as UTF-8. Max upload size is 700KB on shinyapp.io. It goes up to 15MB when running locally. The data only updates after clicking Upload button.")
),
fileInput("wc", "Upload your text file", multiple = F, accept = "text/plain"),
actionButton("wc_upload", "Upload"),
br(),
div(
style = "padding: 15px",
helpText("2. Adjust up or down to set your min/max word.")
),
sliderInput("wordfreq", "MIN frequency of word", 1, 100, 10),
sliderInput("maxword", "MAX frequency of word", 1, 10000, 1000),
br(),
div(
style = "padding: 15px",
helpText("3. Select and remove stopwords")
),
uiOutput("choose_stopwords"),
actionButton("wc_stopwords_update", "Upload")
),
dashboardBody(
tabsetPanel(
tabPanel("Word Cloud",
icon = shiny::icon("cloud"),
br(),
h4("What is Wordcloud?"),
br(),
div(
style ="padding: 20px",
p("Word clouds or tag clouds are graphical representations of word frequency that give greater prominence to words that appear more frequently in a source text.
The larger the word in the visual the more common the word was in the document(s).
This type of visualization can assist evaluators with exploratory textual analysis by identifying words that frequently appear in a set of interviews, documents, or other text. It can also be used for communicating the most salient points or themes in the reporting stage."),
a(href ="http://www.betterevaluation.org/en/evaluation-options/wordcloud", "<BetterEvaluation>")
),
hr(),
sidebarLayout(
sidebarPanel(
div(
helpText("4. Design and create your own wordcloud."),
br(),
style = "padding: 15px",
h4("Style 1.")
),
selectInput("colorbrewer", "Rcolorbrewer", c("Set3", "Set2", "Set1", "Pastel2", "Pastel1", "Paired", "Dark2", "Accent",
"YIOrRd", "YIOrBr", "YIGnBu", "YIGn", "Reds", "RdPu"), selected = "Set2", selectize = TRUE),
selectInput("vfont", "Font", c("serif", "sans serif", " script", "gothic english", "serif symbol"), selected = "serif", selectize = TRUE),
br(), br(), br(), br(), br(), br(), br(), br(),
hr(),
div(
style = "padding: 15px",
h4("Style 2.")
),
selectInput("color", "Colortheme", c("random-light", "random-dark", "white", "aliceblue", "antiquewhite" , "aquamarine", "azure",
"beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood",
"cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "cyan", "darkblue", "darkcyan",
"darkgoldenrod", "darkgreen", "darkgrey", "darkkhaki","darkmagenta","darkolivegreen", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue" ,"darkslategray", "darkslategrey", "darkturquoise", "darkviolet","deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue",
"firebrick" ,"floralwhite", "forestgreen",
"gainsboro", "ghostwhite", "gold", "goldenrod","gray", "green", "greenyellow", "grey","honeydew","hotpink", "indianred", "ivory",
"khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrod", "lightgoldenrodyellow", "lightgray", "lightgreen" , "lightgrey", "lightpink" , "lightsalmon" , "lightseagreen" ,"lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow","limegreen" , "linen",
"magenta", "maroon", "mediumaquamarine" , "mediumblue" , "mediumorchid", "mediumseagreen", "mediumslateblue" , "mediumspringgreen", "mediumturquoise", "mediumvioletred" , "midnightblue" , "mintcream" , "mistyrose" , "moccasin",
"navajowhite" , "navy", "navyblue" , "oldlace" , "olivedrab", "orchid" ,
"palegoldenrod" , "palegreen" , "paleturquoise" , "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple",
"red", "rosybrown", "royalblue", "saddlebrown" , "salmon", "sandybrown" , "seagreen", "seashell" , "sienna", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen" , "steelblue" ,
"tan", "thistle" , "tomato","turquoise" , "violet" , "violetred", "wheat" , "whitesmoke" , "yellow", "yellowgreen"), selected = "aliceblue", selectize = TRUE),
selectInput("bg_color", "BG Colortheme", c("white", "aliceblue", "antiquewhite" , "aquamarine", "azure",
"beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood",
"cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "cyan", "darkblue", "darkcyan",
"darkgoldenrod", "darkgreen", "darkgrey", "darkkhaki","darkmagenta","darkolivegreen", "darkorange","darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue" ,"darkslategray", "darkslategrey", "darkturquoise", "darkviolet","deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue",
"firebrick" ,"floralwhite", "forestgreen",
"gainsboro", "ghostwhite", "gold", "goldenrod","gray", "green", "greenyellow", "grey","honeydew","hotpink", "indianred", "ivory",
"khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrod", "lightgoldenrodyellow", "lightgray", "lightgreen" , "lightgrey", "lightpink" , "lightsalmon" , "lightseagreen" ,"lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow","limegreen" , "linen",
"magenta", "maroon", "mediumaquamarine" , "mediumblue" , "mediumorchid", "mediumseagreen", "mediumslateblue" , "mediumspringgreen", "mediumturquoise", "mediumvioletred" , "midnightblue" , "mintcream" , "mistyrose" , "moccasin",
"navajowhite" , "navy", "navyblue" , "oldlace" , "olivedrab", "orchid" ,
"palegoldenrod" , "palegreen" , "paleturquoise" , "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple",
"red", "rosybrown", "royalblue", "saddlebrown" , "salmon", "sandybrown" , "seagreen", "seashell" , "sienna", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen" , "steelblue" ,
"tan", "thistle" , "tomato","turquoise" , "violet" , "violetred", "wheat" , "whitesmoke" , "yellow", "yellowgreen"), selected = "lightsteelblue", selectize = TRUE),
selectInput("font", "Font", c("Agency FB" , "Aharoni", "Algerian" , "Andalus",
"Angsana New", "AngsanaUPC", "Aparajita", "Arabic Typesetting",
"Arial Black", "Arial", "Arial Narrow", "Arial Rounded MT Bold",
"Arial Unicode MS", "Baskerville Old Face", "Bauhaus 93", "Bell MT",
"Book Antiqua", "Bookman Old Style", "Bookshelf Symbol 7", "Bradley Hand ITC",
"Britannic Bold", "Broadway", "Browallia New", "BrowalliaUPC",
"Brush Script MT", "Calibri" , "Calibri Light", "Californian FB",
"Calisto MT" , "Cambria" , "Candara", "Castellar",
"GB1"), selected = "serif", selectize = TRUE),
selectInput("fig", "Figure", c("Twitter", "Facebook", "RStudio"), selected = "Twitter", selectize = TRUE),
fileInput("wc_fig", "Upload your figure", accept = c('image/png', 'image/jpeg')),
actionButton("wc_fig_upload", "Upload"),
width = 2
),
mainPanel (
h4("Wordcloud - Style 1"),
plotOutput("wc_plot", width = "650px", height = "450px"),
br(),
hr(),
h4("Wordcloud - Style 2"),
wordcloud2Output("wc_plot_2", width = "650px", height = "450px"),
helpText("Wordcloud - style 2 is NOT available on Chrome. Please use Internet Explore.")
)
)
),
tabPanel("Word Cloud Table",
icon = icon("bar-chart-o"),
br(),
h4("Wordcloud - Barplot"),
br(),
plotOutput("wc_barplot"),
br(),
dataTableOutput("wc_table"),
br(),
downloadButton(outputId = "wc_mydownload", label = "Download Data")),
tabPanel("Sentiment Analysis",
icon = icon("meh-o"),
br(),
h4("What is Sentiment Analysis?"),
br(),
div(
style ="padding: 20px",
p("Opinion mining (sometimes known as sentiment analysis or emotion AI) refers to the use of natural language processing,
text analysis, computational linguistics, and biometrics to systematically identify, extract, quantify, and study affective
states and subjective information. Sentiment analysis is widely applied to voice of the customer materials such as reviews
and survey responses, online and social media, and healthcare materials for applications that range from marketing to customer service to clinical medicine."),
br(),
p("Generally speaking, sentiment analysis aims to determine the attitude of a speaker, writer, or other subject with respect
to some topic or the overall contextual polarity or emotional reaction to a document, interaction, or event.
The attitude may be a judgment or evaluation (see appraisal theory), affective state (that is to say, the emotional state of
the author or speaker), or the intended emotional communication (that is to say, the emotional effect intended by the author or interlocutor)."),
a(href ="https://en.wikipedia.org/wiki/Sentiment_analysis", "<Wikipedia>")
),
br(),
hr(),
br(),
h4("Sentiment Analysis"),
br(),
plotOutput("sa_plot"),
br(),
dataTableOutput("sa_table"),
br(),
downloadButton(outputId = "sa_mydownload", label = "Download Data")),
tabPanel("Link",
br(),
h4("Link"),
icon = icon("link"),
br(),
a(href ="http://searchbusinessanalytics.techtarget.com/definition/text-mining", "[1] text mining (text analytics)"),
br(),
a(href ="https://www.tidytextmining.com/index.html", "[2] Text Mining with R"),
br(),
a(href ="http://www.betterevaluation.org/en/evaluation-options/wordcloud", "[3] Word Cloud"),
br(),
a(href ="https://moderndata.plot.ly/create-colorful-graphs-in-r-with-rcolorbrewer-and-plotly/", "[4] CREATE COLORFUL GRAPHS IN R WITH RCOLORBREWER AND PLOTLY"),
br(),
a(href ="https://www.r-bloggers.com/how-to-expand-color-palette-with-ggplot-and-rcolorbrewer/", "[5] How to expand color palette with ggplot and RColorBrewer"),
br(),
a(href ="http://astrostatistics.psu.edu/su07/R/html/grDevices/html/Hershey.html", "[6] Hershey Vector Fonts in R"),
br(),
a(href ="https://www.wordclouds.com/", "[7] WordClouds tool"),
br(),
a(href ="http://fontawesome.io/icons/", "[8] The Icons"),
br(),
a(href ="http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf", "[9] Colors in R")
),
tags$head(tags$script(src = "test.js"))
)
)
)
################################################################################################################
#server.R
################################################################################################################
options(shiny.maxRequestSize=30*1024^2)
server <- function(input, output, session) {
# corpus cleaning
wc_data_corpus <- reactive({
input$wc_upload
isolate({
withProgress({
setProgress(message = "Processing corpus...")
wc_file <- input$wc
if(!is.null(wc_file)){
wc_text <- readLines(wc_file$datapath, encoding = "UTF-8")
}
else
{
wc_text <- readLines(wc.input.text, encoding = "UTF-8")
}
wc_corpus <- Corpus(VectorSource(wc_text))
remove_url <- function(x) gsub("http[^[:space:]]*", "", x)
remove_NumPunct <- function(x) gsub("[^[:alpha:][:space:]]*", "", x)
wc_corpus_clean <- tm_map(wc_corpus, content_transformer(function(x) iconv(x, to="UTF-8", sub="byte")))
wc_corpus_clean <- tm_map(wc_corpus_clean, content_transformer(tolower)) #convert to lowercase
wc_corpus_clean <- tm_map(wc_corpus_clean, content_transformer(remove_url))
wc_corpus_clean <- tm_map(wc_corpus_clean, content_transformer(removeNumbers)) #remove numbers
wc_corpus_clean <- tm_map(wc_corpus_clean, content_transformer(removeWords), stopwords()) #remove stopwords
wc_corpus_clean <- tm_map(wc_corpus_clean, content_transformer(remove_NumPunct))
wc_corpus_clean <- tm_map(wc_corpus_clean, content_transformer(stripWhitespace)) #remove whitespace
wc_corpus_clean <- tm_map(wc_corpus_clean, content_transformer(trimws))
wc_corpus_clean <- tm_map(wc_corpus_clean, content_transformer(replace_abbreviation))
})
})
})
# creating stemDocument
wc_data_stem <- reactive({
wc_stem <- tm_map(wc_data_corpus(), stemDocument)
wc_stem
})
# creating dictionary
wc_copy <- reactive({
wc_copy <- wc_data_corpus()
wc_copy <- unlist(strsplit(as.character(wc_copy), " "))
wc_copy <- unique(wc_copy)
})
d.complete <- reactive({
#TermDocumentMatrix
dtm <- TermDocumentMatrix(wc_data_stem())
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v), freq=v)%>%
filter(freq>(input$wordfreq-1) & (freq<input$maxword-1))
d.list <- as.character(d$word)
#stemCompletion
d.stemCompletion <- function(x, dictionary) {
stemCompletion(x, dictionary = dictionary)
}
d.complete<-d.stemCompletion(d.list, wc_copy())
#data.frame
d.complete <-as.data.frame(d.complete)
d.complete <-d.complete %>%
cbind(d$freq) %>%
rename(word = d.complete, freq= `d$freq`)
})
########Tab1- wordcloud
wc_plot_input <- function(){
wordcloud_rep <- repeatable(wordcloud)
withProgress({
setProgress(message = "Creating wordcloud...")
d.complete <- d.complete()
d.complete.list <- as.character(d.complete$word)
#Stopwords Update
output$choose_stopwords <- renderUI({
selectInput('wc_stopwords', label = h5("Stopwords"), selected = wc_stopwords_reactive(), choices = d.complete.list, multiple = TRUE)
})
wc_stopwords_reactive <- reactive({
input$wc_stopwords_update
isolate({
wc<-input$wc_stopwords
wc
})
})
d<-d.complete[!d.complete$word %in% wc_stopwords_reactive(), ]
#Rcolorbrewer
#Select a Color theme
wc_colorb = "Set2"
if(input$colorbrewer == "Set3"){
wc_colorb = "Set3"
}else if(input$colorbrewer == "Set2"){
wc_colorb = "Set2"
}else if(input$colorbrewer == "Set1"){
wc_colorb = "Set1"
}else if(input$colorbrewer == "Pastel2"){
wc_colorb = "Pastel2"
}else if(input$colorbrewer == "Pastel1"){
wc_colorb = "Pastel1"
}else if(input$colorbrewer == "Paired"){
wc_colorb = "Paired"
}else if(input$colorbrewer == "Dark2"){
wc_colorb = "Dark2"
}else if(input$colorbrewer == "Accent"){
wc_colorb = "Accent"
}else if(input$colorbrewer == "YIOrRd"){
wc_colorb = "YIOrRd"
}else if(input$colorbrewer == "YIOrBr"){
wc_colorb = "YIOrBr"
}else if(input$colorbrewer == "YIGnBu"){
wc_colorb = "YIGnBu"
}else if(input$colorbrewer == "YIGn"){
wc_colorb = "YIGn"
}else if(input$colorbrewer == "Reds"){
wc_colorb = "Reds"
}else{
wc_colorb = "RdPu"
}
#vfornt
#Select a Color theme
wc_vfont = "serif"
if(input$vfont == "serif"){
wc_vfont = "serif"
}else if(input$vfont == "sans serif"){
wc_vfont= "sans serif"
}else if(input$vfont == "script"){
wc_vfont= "script"
}else if(input$vfont == "serif symbol"){
wc_vfont= "serif symbol"
}else{
wc_vfont= "gothic english"
}
par(bg = "grey30")
wordcloud(d$word, d$freq, colors = brewer.pal(8, wc_colorb), random.order=FALSE, rot.per=0.3, vfont=c(wc_vfont, "plain"))
wordcloud
})
}
output$wc_plot <- renderPlot({
wc_plot_input()
})
########Tab1- wordcloud2
wordcloud2_rep <- repeatable(wordcloud2)
wc_plot_2_input <- reactive({
withProgress({
setProgress(message = "Creating wordcloud...")
# Select figure
fig.sel.reactive <- reactive({
input$wc_fig_upload
fig.sel <-"Twitter.png"
if(input$fig == "Twitter"){
fig.sel = "Twitter.png"
}else if(input$fig == "Facebook"){
fig.sel = "Facebook.png"
}else{
fig.sel = "RStudio.png"
}
isolate({
inFile <- input$wc_fig
#Select a figure
if(!is.null(inFile)){
file.copy(inFile$datapath, file.path("Fig/", inFile$name))
fig.sel <- inFile$name
}else{
fig.sel <- fig.sel
}
})
})
figPath <- paste("Fig/", fig.sel.reactive(), sep="")
d.complete <- d.complete()
d.complete.list <- as.character(d.complete$word)
#Stopwords Update
output$choose_stopwords <- renderUI({
selectInput('wc_stopwords', label = h5("Stopwords"), selected = wc_stopwords_reactive(), choices = d.complete.list, multiple = TRUE)
})
wc_stopwords_reactive <- reactive({
input$wc_stopwords_update
isolate({
wc<-input$wc_stopwords
wc
})
})
d<-d.complete[!d.complete$word %in% wc_stopwords_reactive(), ]
#R color_wordcloud 2
#Select a Color theme
wc_color = "random-light"
if(input$color == "random-light"){
wc_color = "random-light"
}else if(input$color == "random-dark"){
wc_color = "random-dark"
}else if(input$color == "white"){
wc_color = "white"
}else if(input$color == "aliceblue"){
wc_color = "aliceblue"
}else if(input$color == "antiquewhite"){
wc_color = "antiquewhite"
}else if(input$color == "aquamarine"){
wc_color = "aquamarine"
}else if(input$color == "azure"){
wc_color = "azure"
}else if(input$color == "beige"){
wc_color = "beige"
}else if(input$color == "bisque"){
wc_color = "bisque"
}else if(input$color == "black"){
wc_color = "black"
}else if(input$color == "blanchedalmond"){
wc_color = "blanchedalmond"
}else if(input$color == "blue"){
wc_color = "blue"
}else if(input$color == "blueviolet"){
wc_color = "blueviolet"
}else if(input$color == "brown" ){
wc_color = "brown"
}else if(input$color == "burlywood"){
wc_color = "burlywood"
}else if(input$color == "cadetblue" ){
wc_color = "cadetblue"
}else if(input$color == "chartreuse"){
wc_color = "chartreuse"
}else if(input$color == "chocolate"){
wc_color = "chocolate"
}else if(input$color == "coral"){
wc_color = "coral"
}else if(input$color == "cornflowerblue"){
wc_color = "cornflowerblue"
}else if(input$color == "cornsilk"){
wc_color = "cornsilk"
}else if(input$color == "cyan"){
wc_color = "cyan"
}else if(input$color == "darkblue"){
wc_color = "darkblue"
}else if(input$color == "darkcyan"){
wc_color = "darkcyan"
}else if(input$color == "darkgoldenrod"){
wc_color = "darkgoldenrod"
}else if(input$color == "darkgray"){
wc_color = "darkgray"
}else if(input$color == "darkkhaki" ){
wc_color = "darkkhaki"
}else if(input$color == "darkmagenta"){
wc_color = "darkmagenta"
}else if(input$color == "darkolivegreen"){
wc_color = "darkolivegreen"
}else if(input$color == "darkorange"){
wc_color = "darkorange"
}else if(input$color == "darkorchid"){
wc_color = "darkorchid"
}else if(input$color == "darksalmon"){
wc_color = "darksalmon"
}else if(input$color == "darkseagreen"){
wc_color = "darkseagreen"
}else if(input$color == "darkslateblue"){
wc_color ="darkslateblue"
}else if(input$color == "darkslategray"){
wc_color = "darkslategray"
}else if(input$color == "darkturquoise"){
wc_color = "darkturquoise"
}else if(input$color == "darkviolet" ){
wc_color = "darkviolet"
}else if(input$color == "deeppink"){
wc_color = "deeppink"
}else if(input$color == "deepskyblue" ){
wc_color = "deepskyblue"
}else if(input$color == "firebrick"){
wc_color = "firebrick"
}else if(input$color == "dimgrey"){
wc_color = "dimgrey"
}else if(input$color == "floralwhite"){
wc_color = "floralwhite"
}else if(input$color == "forestgreen"){
wc_color = "forestgreen"
}else if(input$color == "gainsboro"){
wc_color = "gainsboro"
}else if(input$color == "ghostwhite"){
wc_color = "ghostwhite"
}else if(input$color == "gold"){
wc_color = "gold"
}else if(input$color == "goldenrod"){
wc_color = "goldenrod"
}else if(input$color == "gray"){
wc_color = "gray"
}else if(input$color == "green"){
wc_color = "green"
}else if(input$color == "grey"){
wc_color = "grey"
}else if(input$color == "honeydew"){
wc_color = "honeydew"
}else if(input$color == "hotpink" ){
wc_color = "hotpink"
}else if(input$color == "indianred"){
wc_color = "indianred"
}else if(input$color == "ivory"){
wc_color = "ivory"
}else if(input$color == "khaki" ){
wc_color = "khaki"
}else if(input$color == "lavender"){
wc_color = "lavender"
}else if(input$color == "lawngreen"){
wc_color = "lawngreen"
}else if(input$color == "lemonchiffon"){
wc_color = "lemonchiffon"
}else if(input$color == "lightblue" ){
wc_color ="lightblue"
}else if(input$color == "lightcoral"){
wc_color = "lightcoral"
}else if(input$color == "lightcyan" ){
wc_color = "lightcyan"
}else if(input$color == "lightgoldenrod"){
wc_color = "lightgoldenrod"
}else if(input$color == "lightgoldenrodyellow"){
wc_color = "lightgoldenrodyellow"
}else if(input$color == "lightgray"){
wc_color = "lightgray"
}else if(input$color == "lightgrey"){
wc_color = "lightgrey"
}else if(input$color == "lightpink"){
wc_color = "lightpink"
}else if(input$color == "lightsalmon"){
wc_color = "lightsalmon"
}else if(input$color == "lightseagreen" ){
wc_color = "lightseagreen"
}else if(input$color == "lightskyblue"){
wc_color = "lightskyblue"
}else if(input$color == "lightslateblue"){
wc_color = "lightslateblue"
}else if(input$color =="lightsteelblue"){
wc_color = "lightsteelblue"
}else if(input$color == "lightyellow"){
wc_color = "lightyellow"
}else if(input$color == "limegreen" ){
wc_color = "limegreen"
}else if(input$color == "linen"){
wc_color = "linen"
}else if(input$color == "magenta"){
wc_color = "magenta"
}else if(input$color == "maroon"){
wc_color = "maroon"
}else if(input$color == "mediumaquamarine"){
wc_color = "mediumaquamarine"
}else if(input$color == "mediumblue"){
wc_color = "mediumblue"
}else if(input$color == "mediumseagreen"){
wc_color = "mediumseagreen"
}else if(input$color == "mediumslateblue"){
wc_color = "mediumslateblue"
}else if(input$color == "mediumspringgreen"){
wc_color = "mediumspringgreen"
}else if(input$color == "mediumturquoise"){
wc_color = "mediumturquoise"
}else if(input$color == "mediumvioletred"){
wc_color = "mediumvioletred"
}else if(input$color == "midnightblue"){
wc_color = "midnightblue"
}else if(input$color == "mintcream"){
wc_color = "mintcream"
}else if(input$color == "mistyrose"){
wc_color = "mistyrose"
}else if(input$color == "moccasin"){
wc_color = "moccasin"
}else if(input$color == "navajowhite"){
wc_color ="navajowhite"
}else if(input$color == "navy"){
wc_color = "navy"
}else if(input$color == "navyblue"){
wc_color = "navyblue"
}else if(input$color == "oldlace"){
wc_color = "oldlace"
}else if(input$color == "olivedrab"){
wc_color = "olivedrab"
}else if(input$color == "orange"){
wc_color = "orange"
}else if(input$color == "orangered"){
wc_color = "orangered"
}else if(input$color == "orchid"){
wc_color = "orchid"
}else if(input$color == "palegoldenrod"){
wc_color = "palegoldenrod"
}else if(input$color == "palegreen"){
wc_color = "palegreen"
}else if(input$color == "paleturquoise"){
wc_color = "paleturquoise"
}else if(input$color == "palevioletred"){
wc_color = "palevioletred"
}else if(input$color =="papayawhip"){
wc_color = "papayawhip"
}else if(input$color == "peachpuff"){
wc_color = "peachpuff"
}else if(input$color == "peru"){
wc_color = "peru"
}else if(input$color == "pink"){
wc_color = "pink"
}else if(input$color == "powderblue"){
wc_color = "powderblue"
}else if(input$color == "purple"){
wc_color = "purple"
}else if(input$color == "red"){
wc_color = "red"
}else if(input$color == "royalblue"){
wc_color = "royalblue"
}else if(input$color == "saddlebrown"){
wc_color = "saddlebrown"
}else if(input$color == "seagreen"){
wc_color = "seagreen"
}else if(input$color == "seashell"){
wc_color = "seashell"
}else if(input$color == "sienna"){
wc_color = "sienna"
}else if(input$color == "skyblue"){
wc_color = "skyblue"
}else if(input$color == "slateblue"){
wc_color = "slateblue"
}else if(input$color == "slategray"){
wc_color = "slategray"
}else if(input$color == "snow"){
wc_color = "snow"
}else if(input$color == "springgreen"){
wc_color = "springgreen"
}else if(input$color == "steelblue"){
wc_color = "steelblue"
}else if(input$color == "tan"){
wc_color = "tan"
}else if(input$color == "thistle"){
wc_color = "thistle"
}else if(input$color == "tomato"){
wc_color ="tomato"
}else if(input$color == "turquoise"){
wc_color = "turquoise"
}else if(input$color == "violet"){
wc_color = "violet"
}else if(input$color == "violetred"){
wc_color = "violetred"
}else if(input$color == "wheat"){
wc_color = "wheat"
}else if(input$color == "whitesmoke"){
wc_color = "whitesmoke"
}else if(input$color == "yellow" ){
wc_color = "yellow"
}else{
wc_color = "yellowgreen"
}
#Select a background color
#wc_bg_color = "brown"
#if(input$bg_color == "brown"){
# wc_bg_color = "brown"
#}else if(input$bg_color == "white"){
# wc_bg_color = "white"
#}else if(input$bg_color == "black"){
# wc_bg_color = "black"
#}else{
# wc_bg_color = "grey"
#}
#Select a bg_color theme
wc_bg_color = "random-light"
if(input$bg_color == "random-light"){
wc_bg_color = "random-light"
}else if(input$bg_color == "random-dark"){
wc_bg_color = "random-dark"
}else if(input$bg_color == "white"){
wc_bg_color = "white"
}else if(input$bg_color == "aliceblue"){
wc_bg_color = "aliceblue"
}else if(input$bg_color == "antiquewhite"){
wc_bg_color = "antiquewhite"
}else if(input$bg_color == "aquamarine"){
wc_bg_color = "aquamarine"
}else if(input$bg_color == "azure"){
wc_bg_color = "azure"
}else if(input$bg_color == "beige"){
wc_bg_color = "beige"
}else if(input$bg_color == "bisque"){
wc_bg_color = "bisque"
}else if(input$bg_color == "black"){
wc_bg_color = "black"
}else if(input$bg_color == "blanchedalmond"){
wc_bg_color = "blanchedalmond"
}else if(input$bg_color == "blue"){
wc_bg_color = "blue"
}else if(input$bg_color == "blueviolet"){
wc_bg_color = "blueviolet"
}else if(input$bg_color == "brown" ){
wc_bg_color = "brown"
}else if(input$bg_color == "burlywood"){
wc_bg_color = "burlywood"
}else if(input$bg_color == "cadetblue" ){
wc_bg_color = "cadetblue"
}else if(input$bg_color == "chartreuse"){
wc_bg_color = "chartreuse"
}else if(input$bg_color == "chocolate"){
wc_bg_color = "chocolate"
}else if(input$bg_color == "coral"){
wc_bg_color = "coral"
}else if(input$bg_color == "cornflowerblue"){
wc_bg_color = "cornflowerblue"
}else if(input$bg_color == "cornsilk"){
wc_bg_color = "cornsilk"
}else if(input$bg_color == "cyan"){
wc_bg_color = "cyan"
}else if(input$bg_color == "darkblue"){
wc_bg_color = "darkblue"
}else if(input$bg_color == "darkcyan"){
wc_bg_color = "darkcyan"
}else if(input$bg_color == "darkgoldenrod"){
wc_bg_color = "darkgoldenrod"
}else if(input$bg_color == "darkgray"){
wc_bg_color = "darkgray"
}else if(input$bg_color == "darkkhaki" ){
wc_bg_color = "darkkhaki"
}else if(input$bg_color == "darkmagenta"){
wc_bg_color = "darkmagenta"
}else if(input$bg_color == "darkolivegreen"){
wc_bg_color = "darkolivegreen"
}else if(input$bg_color == "darkorange"){
wc_bg_color = "darkorange"
}else if(input$bg_color == "darkorchid"){
wc_bg_color = "darkorchid"
}else if(input$bg_color == "darksalmon"){
wc_bg_color = "darksalmon"
}else if(input$bg_color == "darkseagreen"){
wc_bg_color = "darkseagreen"
}else if(input$bg_color == "darkslateblue"){
wc_bg_color ="darkslateblue"
}else if(input$bg_color == "darkslategray"){
wc_bg_color = "darkslategray"
}else if(input$bg_color == "darkturquoise"){
wc_bg_color = "darkturquoise"
}else if(input$bg_color == "darkviolet" ){
wc_bg_color = "darkviolet"
}else if(input$bg_color == "deeppink"){
wc_bg_color = "deeppink"
}else if(input$bg_color == "deepskyblue" ){
wc_bg_color = "deepskyblue"
}else if(input$bg_color == "firebrick"){
wc_bg_color = "firebrick"
}else if(input$bg_color == "dimgrey"){
wc_bg_color = "dimgrey"
}else if(input$bg_color == "floralwhite"){
wc_bg_color = "floralwhite"
}else if(input$bg_color == "forestgreen"){
wc_bg_color = "forestgreen"
}else if(input$bg_color == "gainsboro"){
wc_bg_color = "gainsboro"
}else if(input$bg_color == "ghostwhite"){
wc_bg_color = "ghostwhite"
}else if(input$bg_color == "gold"){
wc_bg_color = "gold"
}else if(input$bg_color == "goldenrod"){
wc_bg_color = "goldenrod"
}else if(input$bg_color == "gray"){
wc_bg_color = "gray"
}else if(input$bg_color == "green"){
wc_bg_color = "green"
}else if(input$bg_color == "grey"){
wc_bg_color = "grey"
}else if(input$bg_color == "honeydew"){
wc_bg_color = "honeydew"
}else if(input$bg_color == "hotpink" ){
wc_bg_color = "hotpink"
}else if(input$bg_color == "indianred"){
wc_bg_color = "indianred"
}else if(input$bg_color == "ivory"){
wc_bg_color = "ivory"
}else if(input$bg_color == "khaki" ){
wc_bg_color = "khaki"
}else if(input$bg_color == "lavender"){
wc_bg_color = "lavender"
}else if(input$bg_color == "lawngreen"){
wc_bg_color = "lawngreen"
}else if(input$bg_color == "lemonchiffon"){
wc_bg_color = "lemonchiffon"
}else if(input$bg_color == "lightblue" ){
wc_bg_color ="lightblue"
}else if(input$bg_color == "lightcoral"){
wc_bg_color = "lightcoral"
}else if(input$bg_color == "lightcyan" ){
wc_bg_color = "lightcyan"
}else if(input$bg_color == "lightgoldenrod"){
wc_bg_color = "lightgoldenrod"
}else if(input$bg_color == "lightgoldenrodyellow"){
wc_bg_color = "lightgoldenrodyellow"
}else if(input$bg_color == "lightgray"){
wc_bg_color = "lightgray"
}else if(input$bg_color == "lightgrey"){
wc_bg_color = "lightgrey"
}else if(input$bg_color == "lightpink"){
wc_bg_color = "lightpink"
}else if(input$bg_color == "lightsalmon"){
wc_bg_color = "lightsalmon"
}else if(input$bg_color == "lightseagreen" ){
wc_bg_color = "lightseagreen"
}else if(input$bg_color == "lightskyblue"){
wc_bg_color = "lightskyblue"
}else if(input$bg_color == "lightslateblue"){
wc_bg_color = "lightslateblue"
}else if(input$bg_color =="lightsteelblue"){
wc_bg_color = "lightsteelblue"
}else if(input$bg_color == "lightyellow"){
wc_bg_color = "lightyellow"
}else if(input$bg_color == "limegreen" ){
wc_bg_color = "limegreen"
}else if(input$bg_color == "linen"){
wc_bg_color = "linen"
}else if(input$bg_color == "magenta"){
wc_bg_color = "magenta"
}else if(input$bg_color == "maroon"){
wc_bg_color = "maroon"
}else if(input$bg_color == "mediumaquamarine"){
wc_bg_color = "mediumaquamarine"
}else if(input$bg_color == "mediumblue"){
wc_bg_color = "mediumblue"
}else if(input$bg_color == "mediumseagreen"){
wc_bg_color = "mediumseagreen"
}else if(input$bg_color == "mediumslateblue"){
wc_bg_color = "mediumslateblue"
}else if(input$bg_color == "mediumspringgreen"){
wc_bg_color = "mediumspringgreen"
}else if(input$bg_color == "mediumturquoise"){
wc_bg_color = "mediumturquoise"
}else if(input$bg_color == "mediumvioletred"){
wc_bg_color = "mediumvioletred"
}else if(input$bg_color == "midnightblue"){
wc_bg_color = "midnightblue"
}else if(input$bg_color == "mintcream"){
wc_bg_color = "mintcream"
}else if(input$bg_color == "mistyrose"){
wc_bg_color = "mistyrose"
}else if(input$bg_color == "moccasin"){
wc_bg_color = "moccasin"
}else if(input$bg_color == "navajowhite"){
wc_bg_color ="navajowhite"
}else if(input$bg_color == "navy"){
wc_bg_color = "navy"
}else if(input$bg_color == "navyblue"){
wc_bg_color = "navyblue"
}else if(input$bg_color == "oldlace"){
wc_bg_color = "oldlace"
}else if(input$bg_color == "olivedrab"){
wc_bg_color = "olivedrab"
}else if(input$bg_color == "orange"){
wc_bg_color = "orange"
}else if(input$bg_color == "orangered"){
wc_bg_color = "orangered"
}else if(input$bg_color == "orchid"){
wc_bg_color = "orchid"
}else if(input$bg_color == "palegoldenrod"){
wc_bg_color = "palegoldenrod"
}else if(input$bg_color == "palegreen"){
wc_bg_color = "palegreen"
}else if(input$bg_color == "paleturquoise"){
wc_bg_color = "paleturquoise"
}else if(input$bg_color == "palevioletred"){
wc_bg_color = "palevioletred"
}else if(input$bg_color =="papayawhip"){
wc_bg_color = "papayawhip"
}else if(input$bg_color == "peachpuff"){
wc_bg_color = "peachpuff"
}else if(input$bg_color == "peru"){
wc_bg_color = "peru"
}else if(input$bg_color == "pink"){
wc_bg_color = "pink"
}else if(input$bg_color == "powderblue"){
wc_bg_color = "powderblue"
}else if(input$bg_color == "purple"){
wc_bg_color = "purple"
}else if(input$bg_color == "red"){
wc_bg_color = "red"
}else if(input$bg_color == "royalblue"){
wc_bg_color = "royalblue"
}else if(input$bg_color == "saddlebrown"){
wc_bg_color = "saddlebrown"
}else if(input$bg_color == "seagreen"){
wc_bg_color = "seagreen"
}else if(input$bg_color == "seashell"){
wc_bg_color = "seashell"
}else if(input$bg_color == "sienna"){
wc_bg_color = "sienna"
}else if(input$bg_color == "skyblue"){
wc_bg_color = "skyblue"
}else if(input$bg_color == "slateblue"){
wc_bg_color = "slateblue"
}else if(input$bg_color == "slategray"){
wc_bg_color = "slategray"
}else if(input$bg_color == "snow"){
wc_bg_color = "snow"
}else if(input$bg_color == "springgreen"){
wc_bg_color = "springgreen"
}else if(input$bg_color == "steelblue"){
wc_bg_color = "steelblue"
}else if(input$bg_color == "tan"){
wc_bg_color = "tan"
}else if(input$bg_color == "thistle"){
wc_bg_color = "thistle"
}else if(input$bg_color == "tomato"){
wc_bg_color ="tomato"
}else if(input$bg_color == "turquoise"){
wc_bg_color = "turquoise"
}else if(input$bg_color == "violet"){
wc_bg_color = "violet"
}else if(input$bg_color == "violetred"){
wc_bg_color = "violetred"
}else if(input$bg_color == "wheat"){
wc_bg_color = "wheat"
}else if(input$bg_color == "whitesmoke"){
wc_bg_color = "whitesmoke"
}else if(input$bg_color == "yellow" ){
wc_bg_color = "yellow"
}else{
wc_bg_color = "yellowgreen"
}
#fornt
#selectInput("font", "Wordcloud 1: Font", c("Agency FB" , "Aharoni", "Algerian" , "Andalus",
# "Angsana New", "AngsanaUPC", "Aparajita", "Arabic Typesetting",
# "Arial Black", "Arial", "Arial Narrow", "Arial Rounded MT Bold",
# "Arial Unicode MS", "Baskerville Old Face", "Bauhaus 93", "Bell MT",
# "Book Antiqua", "Bookman Old Style", "Bookshelf Symbol 7", "Bradley Hand ITC",
# "Britannic Bold", "Broadway", "Browallia New", "BrowalliaUPC",
# "Brush Script MT", "Calibri" , "Calibri Light", "Californian FB",
# "Calisto MT" , "Cambria" , "Candara", "Castellar",
# "GB1"), selected = "serif", selectize = TRUE)
#Select a Color theme
wc_font = "Agency FB"
if(input$font == "Agency FB" ){
wc_font = "Agency FB"
}else if(input$font == "Aharoni"){
wc_font= "Aharoni"
}else if(input$font == "Algerian" ){
wc_font= "Algerian"
}else if(input$font == "Andalus"){
wc_font= "Andalus"
}else if(input$font == "Angsana New"){
wc_font= "Angsana New"
}else if(input$font == "AngsanaUPC"){
wc_font= "AngsanaUPC"
}else if(input$font == "Aharoni"){
wc_font= "Aharoni"
}else if(input$font == "Algerian" ){
wc_font= "Algerian"
}else if(input$font == "Aparajita" ){
wc_font= "Aparajita"
}else if(input$font == "Arabic Typesetting"){
wc_font= "Arabic Typesetting"
}else if(input$font == "Arial Black"){
wc_font= "Arial Black"
}else if(input$font == "Arial"){
wc_font= "Arial"
}else if(input$font == "Arial Narrow"){
wc_font= "Arial Narrow"
}else if(input$font == "Arial Rounded MT Bold" ){
wc_font= "Arial Rounded MT Bold"
}else if(input$font == "Arial Unicode MS"){
wc_font= "Arial Unicode MS"
}else if(input$font == "Baskerville Old Face" ){
wc_font= "Baskerville Old Face"
}else if(input$font == "Bauhaus 93"){
wc_font= "Bauhaus 93"
}else if(input$font == "Bell MT"){
wc_font= "Bell MT"
}else if(input$font == "Book Antiqua"){
wc_font= "Book Antiqua"
}else if(input$font == "Bookman Old Style" ){
wc_font= "Bookman Old Style"
}else if(input$font == "Bookshelf Symbol 7"){
wc_font= "Bookshelf Symbol 7"
}else if(input$font == "Bradley Hand ITC"){
wc_font= "Bradley Hand ITC"
}else if(input$font == "Britannic Bold"){
wc_font= "Britannic Bold"
}else if(input$font == "Broadway" ){
wc_font= "Broadway"
}else if(input$font == "Browallia New"){
wc_font= "Browallia New"
}else if(input$font == "BrowalliaUPC" ){
wc_font= "BrowalliaUPC"
}else if(input$font == "Brush Script MT"){
wc_font= "Brush Script MT"
}else if(input$font == "Calibri" ){
wc_font= "Calibri"
}else if(input$font == "Calibri Light"){
wc_font= "Calibri Light"
}else if(input$font == "Californian FB" ){
wc_font= "Californian FB"
}else if(input$font == "Calisto MT"){
wc_font= "Calisto MT"
}else if(input$font == "Cambria" ){
wc_font= "Cambria"
}else if(input$font == "Candara"){
wc_font= "Candara"
}else if(input$font == "Castellar"){
wc_font= "Castellar"
}else{
wc_font= "GB1"
}
wc2 <- wordcloud2(d, figPath = figPath, color = wc_color, backgroundColor = wc_bg_color, fontFamily = wc_font)
wc2
})
})
output$wc_plot_2 <- renderWordcloud2({
wc_plot_2_input()
})
#Tab 2:Wordcloud table
output$wc_barplot <-renderPlot({
withProgress({
setProgress(message = "Creating word frequency table...")
d.complete <- d.complete()
d.complete.list <- as.character(d.complete$word)
#Stopwords Update
output$choose_stopwords <- renderUI({
selectInput('wc_stopwords', label = h5("Stopwords"), selected = wc_stopwords_reactive(), choices = d.complete.list, multiple = TRUE)
})
wc_stopwords_reactive <- reactive({
input$wc_stopwords_update
isolate({
wc<-input$wc_stopwords
wc
})
})
d<-d.complete[!d.complete$word %in% wc_stopwords_reactive(), ]
d %>%
top_n(10) %>%
ggplot(aes(reorder(word, freq), as.factor(freq), fill=as.factor(freq))) +
scale_fill_brewer() +
geom_bar(alpha = 0.8, stat = "identity", show.legend = FALSE) +
labs(y = "Top 10 wordcloud words", x = NULL) +
coord_flip()
})
})
#Table download
wc_table_data <- reactive({
d.complete <- d.complete()
d.complete.list <- as.character(d.complete$word)
#Stopwords Update
output$choose_stopwords <- renderUI({
selectInput('wc_stopwords', label = h5("Stopwords"), selected = wc_stopwords_reactive(), choices = d.complete.list, multiple = TRUE)
})
wc_stopwords_reactive <- reactive({
input$wc_stopwords_update
isolate({
wc<-input$wc_stopwords
wc
})
})
d<-d.complete[!d.complete$word %in% wc_stopwords_reactive(), ]
d
})
output$wc_table <- renderDataTable({
wc_table_data()
},
filter = 'top',
rownames = FALSE)
output$wc_mydownload <-downloadHandler(
filename = "data.csv",
content = function(file){
write.csv(wc_table_data(), file)
})
#Tab3: Sentiment Analysis
bing_word_counts_rep <- repeatable(bing_word_counts)
output$sa_plot <-renderPlot({
withProgress({
setProgress(message = "Creating sentiment analysis...")
d.complete <- d.complete()
d.complete.list <- as.character(d.complete$word)
#Stopwords Update
output$choose_stopwords <- renderUI({
selectInput('wc_stopwords', label = h5("Stopwords"), selected = wc_stopwords_reactive(), choices = d.complete.list, multiple = TRUE)
})
wc_stopwords_reactive <- reactive({
input$wc_stopwords_update
isolate({
wc<-input$wc_stopwords
wc
})
})
d<-d.complete[!d.complete$word %in% wc_stopwords_reactive(), ]
#sentiment Analysis_Bing Words Count
bing_word_counts <- d %>%
right_join(get_sentiments("bing")) %>% #"afinn" is for numeric scores
filter(!is.na(freq))
bing_word_counts <- bing_word_counts[which(bing_word_counts$freq > input$wordfreq & bing_word_counts$freq < input$maxword),]
#Rcolorbrewer
#Select a Color theme
wc_colorb = "Set2"
if(input$colorbrewer == "Set3"){
wc_colorb = "Set3"
}else if(input$colorbrewer == "Set2"){
wc_colorb = "Set2"
}else if(input$colorbrewer == "Set1"){
wc_colorb = "Set1"
}else if(input$colorbrewer == "Pastel2"){
wc_colorb = "Pastel2"
}else if(input$colorbrewer == "Pastel1"){
wc_colorb = "Pastel1"
}else if(input$colorbrewer == "Paired"){
wc_colorb = "Paired"
}else if(input$colorbrewer == "Dark2"){
wc_colorb = "Dark2"
}else if(input$colorbrewer == "Accent"){
wc_colorb = "Accent"
}else if(input$colorbrewer == "YIOrRd"){
wc_colorb = "YIOrRd"
}else if(input$colorbrewer == "YIOrBr"){
wc_colorb = "YIOrBr"
}else if(input$colorbrewer == "YIGnBu"){
wc_colorb = "YIGnBu"
}else if(input$colorbrewer == "YIGn"){
wc_colorb = "YIGn"
}else if(input$colorbrewer == "Reds"){
wc_colorb = "Reds"
}else{
wc_colorb = "RdPu"
}
bing_word_counts %>%
group_by(sentiment) %>%
top_n(10) %>%
ggplot(aes(reorder(word, freq), freq, fill = sentiment)) +
scale_fill_brewer(palette = wc_colorb) +
geom_bar(alpha = 0.8, stat = "identity", show.legend = FALSE) +
facet_wrap(~sentiment, scales = "free_y") +
labs(y = "Top 10 Nagative & Positive", x = NULL) +
coord_flip()
})
})
sa_table_data <- reactive({
d.complete <- d.complete()
d.complete.list <- as.character(d.complete$word)
#Stopwords Update
output$choose_stopwords <- renderUI({
selectInput('wc_stopwords', label = h5("Stopwords"), selected = wc_stopwords_reactive(), choices = d.complete.list, multiple = TRUE)
})
wc_stopwords_reactive <- reactive({
input$wc_stopwords_update
isolate({
wc<-input$wc_stopwords
wc
})
})
d<-d.complete[!d.complete$word %in% wc_stopwords_reactive(), ]
#sentiment Analysis_Bing Words Count
bing_word_counts <- d %>%
right_join(get_sentiments("bing")) %>% #"afinn" is for numeric scores
filter(!is.na(freq))
bing_word_counts <- bing_word_counts[which(bing_word_counts$freq > input$wordfreq & bing_word_counts$freq < input$maxword),]
bing_word_counts
})
output$sa_table <- renderDataTable({
sa_table_data()
},
filter = 'top',
rownames = FALSE)
# Download
output$sa_mydownload <-downloadHandler(
filename = "data.csv",
content = function(file){
write.csv(sa_table_data(), file)
})
}
runGadget(ui, server, viewer = browserViewer())
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.