如何解决使用频率表数据中的 ggplot 分组条形图
我有一个频率表,我想用它来做一个分组的条形图。 感兴趣的主题(即狩猎、钓鱼)将在 x 轴上,这些项目的值将在 y 轴上,它们将按年龄组分组。
数据如下:
structure(list(ï..Topic = c("Hunting","Game Lands","Boating","Fishing","Bird watching","Wildlife Viewing (other than bird watching)","Research Reports","Law Enforcement","NCWRC Rules and Regulations","Human Wildlife Interactions","Trapping","Learning & Education Opportunities","Agency Events","Commissioner and Agency Staff Profiles & Awards","Citizen Science Opportunities","Volunteer Opportunities","Private Land Management","Shooting Sports","Archery","Wildlife Associated Recreation (Photography,hiking,botany)","Conservation","Species Information","Diversity,Equality,and Inclusivity","Youth Opportunities","Philanthropy","Wildlife Facilities (hatcheries,education centers,etc)","Other"),X18.24 = c("12.35"," 9.88"," 4.94","12.35"," 0.00"," 2.22"," 4.44"," 3.95"," 8.15"," 1.23"," 0.99"," 5.19"," 4.69"," 1.98"," 3.70"," 5.93"," 6.91"," 5.43"," 0.00"),X25.34 = c(" 6.96","10.17"," 5.18"," 7.90"," 1.47"," 1.70"," 2.19"," 7.32"," 0.89"," 2.32"," 3.21"," 1.20"," 0.13"," 2.41"," 2.54"," 3.66"," 3.61"," 3.79"," 6.78"," 7.05"," 0.49"," 0.18"," 5.27"," 0.54"),X35.54 = c("8.92","8.04","5.86","9.75","1.44","2.73","2.99","2.85","7.52","2.43","2.54","2.84","1.13","0.26","1.38","2.37","4.22","5.05","3.71","3.60","5.14","5.72","0.33","3.84","0.27","4.78","0.32"),X55.64 = c("7.88","7.29","6.26","9.82","2.36","3.18","3.46","3.64","8.29","2.97","1.66","3.02","1.23","0.18","1.32","3.00","3.67","5.46","2.87","3.31","4.23","6.86","0.49","1.94","0.19","5.10","0.34"),X65.or.older = c(" 7.58"," 5.72"," 6.68","10.32"," 3.23"," 4.59"," 3.43"," 3.50"," 8.78"," 3.85"," 1.13"," 2.92"," 1.05"," 0.35"," 1.16"," 2.40"," 2.61"," 4.80"," 1.75"," 4.29"," 4.48"," 7.14"," 0.45"," 1.67"," 0.25"," 5.50"," 0.41"),Prefer.not.to.share = c("5.74","6.01","6.28","7.79","1.09","7.92","2.60","3.83","6.69","3.28","3.96","1.64","0.00","3.42","2.05","5.74","4.51","2.32","0.68","2.19")),class = "data.frame",row.names = c(NA,-27L))
我尝试使用以下方法更改格式:
library(reshape2) ages<- melt(age.table[,c("ï..Topic",'X18.24','X25.34','X35.54','X55.64',"X65.or.older")],id.vars = 1)
* 我真的不需要这里的“宁愿不回答”的回答。
然后使用
绘图library(ggplot2)
b<-ggplot(ages,aes(x=ï..Topic,y=value,fill = variable)) + geom_bar(stat="identity",position= "dodge")+ coord_flip() +scale_fill_brewer(palette = "Paired")
我得到了一个图,但这些值与原始表中的值不一致。另外,我如何防止它重新排列年龄组的顺序并保持每个主题的一致性(即从最低年龄类别升到最高,而不是根据值排序) 见下表
解决方法
您的问题是您的数据都不是数字 - "12.35"
带引号,是字符串。没有引号的 12.35
是一个数字。您需要将数字列转换为数字类。 age.table <- type.convert(age.table)
应该做得很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。