我试图为我的数据框中的每个变量生成一个简单的直方图,我可以使用下面的sapply来做。但是,如何在标题或x轴中包含变量的名称,以便知道我正在查看哪一个? (我有大约20个变量。)
这是我目前的代码:
x = # initialize dataframe
sapply(x, hist)
答案 0 :(得分:1)
以下是使用iris
数据集作为示例修改现有方法以包含列名作为每个直方图的标题的方法:
# loop over column *names* instead of actual columns
sapply(names(iris), function(cname){
# (make sure we only plot the numeric columns)
if (is.numeric(iris[[cname]]))
# use the `main` param to put column name as plot title
print(hist(iris[[cname]], main=cname))
})
运行之后,您将能够使用查看器窗格中的箭头翻转图表(假设您正在使用R Studio)。
p.s。如果要将直方图排列到单个绘图窗口并将其保存到单个文件中,请检查grid::grob()
,gridExtra::grid.arrange()
和相关函数。
答案 1 :(得分:1)
这个怎么样?假设您有宽数据,可以使用gather将其转换为长格式。比使用geom_histogram和facet_wrap的ggplot解决方案:
library(tidyverse)
# make wide data (20 columns)
df <- matrix(rnorm(1000), ncol = 20)
df <- as.data.frame(df)
colnames(df) <- LETTERS[1:20]
# transform to long format (2 columns)
df <- gather(df, key = "name", value = "value")
# plot histigrams per name
ggplot(df) +
geom_histogram(aes(value)) +
facet_wrap(~name, ncol = 5)