【发布时间】:2018-01-19 06:47:15
【问题描述】:
我有一些关于可视化的问题。我有数据框:
df <- data.frame(
Campaign = c('month 10', 'month 11','month 10', 'month 11','month 10', 'month 11'),
name = c('TI', 'TI', 'SI', 'SI', 'NPS', 'NPS'),
values = c(93,96,83,84, 43,36))
我需要按条件设置颜色:
ifelse(df$values>95,'green',ifelse(df$values>90,'yellow','red'))
我尝试了三个不同的版本,但都不能正常工作。
1.
p <- ggplot(df, aes(name,values, group = Campaign))+
geom_bar(stat = 'identity',aes(fill = factor(name)))+
facet_grid(.~Campaign)
p + scale_fill_manual(values = paste(ifelse(df$values>
95,'green',ifelse(df$values>90, 'yellow',' red'))))+
2. cols <-ifelse(df$values>95,'green',ifelse(df$values>90,'yellow','red'))
p + scale_fill_manual(values = cols)
3. df$color <- ifelse(df$values>95,'green',ifelse(df$values>90,'yellow','red'))
p + scale_fill_manual(values = paste(df$color))
and this:
p + scale_fill_manual(values = unique(as.character(df$color)))
然后我使用 facet_grid() 我的颜色条件不能正常工作。但它在不使用 facet_grid() 的情况下效果很好。怎么了?
【问题讨论】:
-
df$fill.group = cut(df$values, breaks=c(-Inf, 90, 95, Inf))。然后,ggplot(df, aes(name,values, group = Campaign, fill=fill.group)) + ... + scale_fill_manual(values=c("red", "yellow", "green")。另外,(1)删除fill=factor(name),因为它看起来像你想填充values的范围,(2)如果你在Campaign上分面,那么就不需要group=Campaign。
标签: r ggplot2 visualization facet-grid