【发布时间】:2020-11-02 23:53:43
【问题描述】:
我正在使用钻石 df,
我想按类别为每个数字列绘制箱线图, 在这种情况下,类别将由“cut”列定义。
我正在使用 for 循环来完成这项任务,
这是我正在使用的代码:
##################################################################################
# Data #
# #
##################################################################################
data("diamonds")
basePlot <- diamonds[ names(diamonds)[!names(diamonds) %in% c("color", "clarity")] ]
##################################################################################
## set Plot view to 4 boxplots ##
par(mfrow = c(2,2))
## for-loop to boxplot all numerical columns ##
for (i in 1:(ncol(basePlot)-1)){
print(ggplot(basePlot, aes(as.factor(cut),
basePlot[c(i)],color=as.factor(cut)))
+ geom_boxplot(outlier.colour="black",outlier.shape=16,outlier.size=1,notch=FALSE)
+ xlab("Diamond Cut")
+ ylab(colnames(basePlot)[i])
)
}
控制台输出:
Don't know how to automatically pick scale for object of type data.frame. Defaulting to continuous.
Error in is.finite(x) : default method not implemented for type 'list'
还有其他方法可以完成这项任务吗?
【问题讨论】:
-
由于我们没有您的数据,您是否介意根据
mtcars或diamonds等公共数据集重新提出您的问题?另外,您是否考虑过使用 facets 或其他一些分组机制来替代生成多个图? -
嘿@r2evans,已经编辑,所以它可以是一个可重复的例子;没有使用构面
标签: r dataframe for-loop ggplot2 boxplot