连续x个变量的ggplot直方图误差,

时间:2019-02-03 03:07:38

标签: r ggplot2

我想使直方图用于在数据帧中的所有的定量变量。

数据可以在这里找到

https://knightsucfedu39751-my.sharepoint.com/:x:/g/personal/peili_knights_ucf_edu/Ea6wk4iPln9DpH-eDQupx60BkN8DaMNdnl7YlKxHfiicdA?e=BIUPca

代码在这里:

library(ggplot2)
cereal <- read.csv('Cereals.csv')
quantitative <- c("calories", "protein", "fat", "sodium", "fiber", "carbo", "sugars", "potass", "vitamins", "weight", "cups")
cereal[,quantitative] <- as.numeric(as.character(unlist(cereal[,quantitative])))
    for (variable in quantitative){
                                   plot <- ggplot(cereal, aes(variable)) 
                                           +geom_histogram(binwidth = 0.5)
                                   print(plot)
                                   }

但是我总是收到错误消息:“ StatBin需要连续的x变量:x变量是离散的。也许您想要stat =“ count”?“

我已经检查了一些解决方案,例如将geom_histogram更改为geom_bar或添加binwidth = 0.; 5,但这些方法都没有帮助。

没有人知道如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

您需要使用aes_string而不是aes。您的for循环正在传递字符串(即“卡路里”)而不是对象卡路里。

for (variable in quantitative){
 plot <- ggplot(cereal, aes_string(variable)) +
geom_histogram(binwidth = 0.5)
 print(plot)
 }

现在您的代码将只打印最后一个图,因为随着for循环的进行,每个顺序图都会被擦除。因此,您应该考虑将绘图对象存储在列表中,以便可以查看所有对象。