在R中使用ggplot和Shiny制作条形图

时间:2018-11-05 14:50:31

标签: r ggplot2 shiny

我正在尝试使用R中的ggplot和Shiny制作条形图,但是我的数据以一种奇怪的方式构造,这似乎使此任务比预期的要困难。数据框看起来像这样:

Name       Percent 1     Percent 2    Percent 3
A          45            10           45
B          30            20           50
C          10            35           55

基本上,我希望制作条形图以根据某人的选择将每个百分比显示为“条形”。例如,如果我的Shiny应用程序的下拉菜单显示“选择名称”,并且有人选择A,则结果图形应为三个条形,分别显示45%,10%和45%,分别为“ Percent 1”,“ Percent 2 ”和“百分比3”作为标签。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我认为您必须先整理一些数据,然后才能对此数据进行任何可视化。以下是一些可以帮助您完成此工作的代码示例:

stack <- data.frame( name = c('A','B','C'),
                      percent1 = c(45,10,45),
                      percent2 = c(30,20,50),
                      percent3 = c(10,35,55),
                      stringsAsFactors = FALSE)
stack_ <- stack %>% gather(percent, value, percent1:percent3)

stack_ <- stack_ %>% filter(name == 'A')

p<-ggplot(data=stack_, aes(x=percent, y=value)) +
  geom_bar(stat="identity")
p

答案 1 :(得分:0)

首先,您需要确保您拥有“整洁的数据”(=每个变量都在一个列中,并且每个列都是一个变量)。为此,您可以使用tidyr包的collect()函数;例如:

gather(stack, percent, value, -Name)

您可以在此处找到有关整洁数据的更多信息:https://r4ds.had.co.nz/tidy-data.html