如何改变闪亮的条形颜色
How to change the colour of the bar in shiny
我有一个包含当前项目的数据框:
情绪、颜色、推文
pos , 绿色 ,58
负 , 红色 ,3
中性 , 蓝色 ,46
在 R shiny 中,我使用了 Cran Package GoogleVis。但是当我绘制柱形图时
所有的条都得到相同的颜色。
服务器脚本
# server.R
library(googleVis)
library(shiny)
shinyServer(function(input, output) {
datasetInput <- reactive({
getFilteredBarFrame(input$dataset)
})
output$view <- renderGvis({
gvisColumnChart(datasetInput()
)
})
})
UI 脚本
library(shiny)
source("data.R")
lstCategorie <-
getlstCategorie(getGroupedData(getTweetTraining(openDBSentiment())))
shinyUI(pageWithSidebar(
headerPanel("Tweet Sentiment"),
sidebarPanel(
selectInput("dataset", "Selecteer bank:"
, choices = lstCategorie
, selected = "Rabobank"
)
),
mainPanel(
htmlOutput("view")
)
)
)
data.r
library(RMongo)
library(data.table)
library(ggplot2)
library(googleVis)
library(plyr)
#Make connection with MongoDB
openDBSentiment <- function (){
dbSentiment <- mongoDbConnect('Sentiment')
return (dbSentiment)
}
#Get Trainingset of Tweets
getTweetTraining <- function (dbSentiment){
getTrainingData <- dbGetQuery(dbSentiment,'TweetTraining','{}')
TrainingData <- data.frame(getTrainingData)
return (TrainingData)
}
#Aggegrate dataset
getGroupedData <-function(TrainingData){
grouped_data <- aggregate(TrainingData, by=list(TrainingData$colour,
TrainingData$tag, TrainingData$categorie), FUN=length)
#Remove empty rows
grouped_data <- subset(grouped_data,select=c(Group.1,Group.2,Group.3,
colour), subset =(Group.2 != "" ) )
#Rename columns
grouped_data <-
rename(grouped_data,c("Group.1"="kleur","Group.2"="sentiment","Group.3"="categorie","colour"="aantaltweets"))
return (grouped_data)
}
#Get list of categories
getlstCategorie <- function (grouped_data){
lstCategorie <- unique(grouped_data$categorie)
return (lstCategorie)
}
#Get dataframe for barplot
getFilteredBarFrame <- function (input) {
#Build dataframe from other functions
dfBarFrame <- getGroupedData(getTweetTraining(openDBSentiment()))
#Filter the data.frame based on the input parameter
dfBarFrame <- dfBarFrame[dfBarFrame$categorie == input , ]
#select only 2 fields of the data.frame
dfBarFrame <- dfBarFrame[c("sentiment","aantaltweets","kleur")]
#return the result tot the function
return (dfBarFrame)
}
GoogleVis 绘图结果
我可以在GGPLOT2中实现(见下面的代码)。但是不 GoogleVis!
ggplot(dfAGG, aes(x=categorie, y=aantaltweets, fill=sentiment)) +
geom_bar(position="dodge" , colour = "black" ,stat="identity") +
scale_fill_manual(values=c("red","orange","green"))
如何使用数据框中可用的颜色 属性 更改条形颜色。
非常感谢!
埃里克
如果您使用的是 R,您可以简单地执行以下操作,例如:
counts <- table(mtcars$gear)
color <- c("blue", "orange", "gold", "indianred", "skyblue4","light blue")
barplot(counts, main="Car Distribution", xlab="Number of Gears",col=color)
您可以在使用 gvisColumnChart
绘图之前重命名 colour
列 tweets.style
,并将该列作为 yvar
传递
这是一个示例,我使用了您在顶部提供的虚拟数据和您的 ui.R
(刚刚删除了 select 输入):
server.R
library(googleVis)
library(shiny)
shinyServer(function(input, output) {
data=data.frame(sentiment=c("pos","neg","neutral"),colour=c("green","red","blue"),tweets=c(58,3,46))
names(data)<-c("sentiment","tweets.style","tweets")
output$view <- renderGvis({
gvisColumnChart(data,xvar="sentiment",yvar=c("tweets","tweets.style"))
})
})
我得到这样的信息:
您可以获得有关角色和自定义 gvis 图的更多信息here
我有一个包含当前项目的数据框:
情绪、颜色、推文
pos , 绿色 ,58
负 , 红色 ,3
中性 , 蓝色 ,46
在 R shiny 中,我使用了 Cran Package GoogleVis。但是当我绘制柱形图时 所有的条都得到相同的颜色。
服务器脚本
# server.R
library(googleVis)
library(shiny)
shinyServer(function(input, output) {
datasetInput <- reactive({
getFilteredBarFrame(input$dataset)
})
output$view <- renderGvis({
gvisColumnChart(datasetInput()
)
})
})
UI 脚本
library(shiny)
source("data.R")
lstCategorie <-
getlstCategorie(getGroupedData(getTweetTraining(openDBSentiment())))
shinyUI(pageWithSidebar(
headerPanel("Tweet Sentiment"),
sidebarPanel(
selectInput("dataset", "Selecteer bank:"
, choices = lstCategorie
, selected = "Rabobank"
)
),
mainPanel(
htmlOutput("view")
)
)
)
data.r
library(RMongo)
library(data.table)
library(ggplot2)
library(googleVis)
library(plyr)
#Make connection with MongoDB
openDBSentiment <- function (){
dbSentiment <- mongoDbConnect('Sentiment')
return (dbSentiment)
}
#Get Trainingset of Tweets
getTweetTraining <- function (dbSentiment){
getTrainingData <- dbGetQuery(dbSentiment,'TweetTraining','{}')
TrainingData <- data.frame(getTrainingData)
return (TrainingData)
}
#Aggegrate dataset
getGroupedData <-function(TrainingData){
grouped_data <- aggregate(TrainingData, by=list(TrainingData$colour,
TrainingData$tag, TrainingData$categorie), FUN=length)
#Remove empty rows
grouped_data <- subset(grouped_data,select=c(Group.1,Group.2,Group.3,
colour), subset =(Group.2 != "" ) )
#Rename columns
grouped_data <-
rename(grouped_data,c("Group.1"="kleur","Group.2"="sentiment","Group.3"="categorie","colour"="aantaltweets"))
return (grouped_data)
}
#Get list of categories
getlstCategorie <- function (grouped_data){
lstCategorie <- unique(grouped_data$categorie)
return (lstCategorie)
}
#Get dataframe for barplot
getFilteredBarFrame <- function (input) {
#Build dataframe from other functions
dfBarFrame <- getGroupedData(getTweetTraining(openDBSentiment()))
#Filter the data.frame based on the input parameter
dfBarFrame <- dfBarFrame[dfBarFrame$categorie == input , ]
#select only 2 fields of the data.frame
dfBarFrame <- dfBarFrame[c("sentiment","aantaltweets","kleur")]
#return the result tot the function
return (dfBarFrame)
}
GoogleVis 绘图结果
我可以在GGPLOT2中实现(见下面的代码)。但是不 GoogleVis!
ggplot(dfAGG, aes(x=categorie, y=aantaltweets, fill=sentiment)) +
geom_bar(position="dodge" , colour = "black" ,stat="identity") +
scale_fill_manual(values=c("red","orange","green"))
如何使用数据框中可用的颜色 属性 更改条形颜色。
非常感谢!
埃里克
如果您使用的是 R,您可以简单地执行以下操作,例如:
counts <- table(mtcars$gear)
color <- c("blue", "orange", "gold", "indianred", "skyblue4","light blue")
barplot(counts, main="Car Distribution", xlab="Number of Gears",col=color)
您可以在使用 gvisColumnChart
绘图之前重命名 colour
列 tweets.style
,并将该列作为 yvar
这是一个示例,我使用了您在顶部提供的虚拟数据和您的 ui.R
(刚刚删除了 select 输入):
server.R
library(googleVis)
library(shiny)
shinyServer(function(input, output) {
data=data.frame(sentiment=c("pos","neg","neutral"),colour=c("green","red","blue"),tweets=c(58,3,46))
names(data)<-c("sentiment","tweets.style","tweets")
output$view <- renderGvis({
gvisColumnChart(data,xvar="sentiment",yvar=c("tweets","tweets.style"))
})
})
我得到这样的信息:
您可以获得有关角色和自定义 gvis 图的更多信息here