假设因子变量是有序的,在图中处理太多因素的最佳方法是什么?默认情况看起来不太好:
ggplot(data.frame(x=factor(trunc(runif(10000, 0, 100)), ordered=T)), aes(x=x)) +
geom_histogram()
答案 0 :(得分:4)
您可以翻转值。
ggplot(data.frame(x=factor(trunc(runif(10000, 0, 100)), ordered=T)), aes(x=x)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_histogram()
flip <- ggplot(data.frame(x=factor(trunc(runif(10000, 0, 100)), ordered=T)), aes(x=x)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_histogram()
如果它的味道太浓,你可以设置手动休息时间。在这种情况下,我使用五个。
prune <- ggplot(data.frame(x=factor(trunc(runif(10000, 0, 100)), ordered=T)), aes(x=x)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
scale_x_discrete(breaks = seq(0, 100, by = 5)) +
geom_histogram()
library(gridExtra)
grid.arrange(flip, prune)
答案 1 :(得分:2)
使用不同的可视化方法 - dotplot()
。您可以通过单个点表示频率,并将因子移动到y轴以水平显示而不是垂直显示。此加号为您提供了一个简单的每个因素的频率可视指示器。它在标签上有点密集,但如果你缩放,它仍会显示因素。以下是lattice
library(lattice)
d <- sort(table(factor(trunc(runif(10000, 0, 100)))))
dotplot(d, col=1, cex=0.5, scales = list(y = list(cex=0.5)))
但也许你想要的是因子频率直方图,虽然我不知道你会用它做什么。只是不要旋转x轴标签,这使它变得不可读。
d <- factor(trunc(runif(10000, 0, 100)))
histogram(d, scales = list(x = list(at=seq(1,length(levels(dd)),5))))