我正在尝试使用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”作为标签。
感谢您的帮助!
答案 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