我有以下数据:
- 10个州
- 每个州有两种类型
- 每种类型都有1到29个实体
- 每个状态-实体-类型都有一个计数
完整的数据在此处。
我试图可视化每个实体的计数比例。为此,我使用了以下代码:
icc <- transform( icc, state=factor(state), entity=factor(entity), type=factor(type) )
p <- ggplot( icc, aes( x=state, y=count, fill=entity ) ) +
geom_bar( stat="identity", position="stack" ) +
facet_grid( type ~ . )
custom_theme <- theme_update(legend.position="none")
p
很不幸,由于具有许多实体的状态类型没有显示足够独特的颜色,我正在失去大量信息。
如上所述,我有125个实体,但是状态类型中最多的实体数为29。是否有一种方法可以强制ggplot2和colorbrewer在每个实体类型内分配唯一(并且希望相当独特)的颜色?
到目前为止,我想到的唯一方法是将entity
强制转换为整数,这样可以工作,但在级别之间提供的颜色差异不大。
scale_fill_manual( values=c(rep(c('red','blue'),125/2),'red') )
这样的东西,但它们不能保证在每个条形图内部交替出现。 - Ari B. Friedmanalternate <- function(x) factor(match(x, unique(x)) %% 2)
来创建一个新变量,并且在ave
中应用于分组:ave(entity, state, FUN = alternate)
(未经测试)。 - hadley