如何用2种类型的视觉效果在rggplot循环中显示标题



我想在一个循环中打印数据集中所有列的图形,以便每个图形都有适当的列名。

我用下面的代码做到了这一点:

headers <- names(dataset)
for (name in headers) {
print(ggplot(dataset, aes_string(x= name)) + geom_bar())
}

现在我被困在以下添加中:我的数据要么是连续(int)要么是分类(string),因此我添加了一个if条件(如果in -绘制密度线,如果因子-绘制条形图)。

它也可以工作,但现在每个图的名称实际上是'x'而不是列名。

for (colum in dataset) {
if (class(colum) == "integer") {
print(ggplot(dataset, aes_string(x= column)) + geom_density())
} else {
print(ggplot(dataset, aes_string(x= column)) + geom_bar())
}
}

添加标题列表获得适当的名称,但将所有图形转换为条形图,因为x每次都获得一个字符串并调用第二个if语句。

我如何保持if语句工作,但在图的美学中添加列的适当名称?

您可以使用以下命令:

library(ggplot2)
for (column in names(dataset)) {
if (is.integer(dataset[[column]])) {
print(ggplot(dataset, aes(x= .data[[column]])) + geom_density())
} else {
print(ggplot(dataset, aes(x= .data[[column]])) + geom_bar())
}
}

请注意,aes_string已被弃用,建议使用.data,它将保留x轴上的列名。

最新更新