3

假设因子变量是有序的,那么处理图中太多因子的最佳方法是什么?默认看起来不太好:

ggplot(data.frame(x=factor(trunc(runif(10000, 0, 100)), ordered=T)), aes(x=x)) +
  geom_histogram()

丑陋的例子

4

2 回答 2

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)

在此处输入图像描述

于 2013-04-11T14:26:43.830 回答
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))))

在此处输入图像描述

于 2013-04-11T19:55:13.393 回答