【发布时间】:2014-10-29 04:33:18
【问题描述】:
我创建了一个图表,并希望根据变量为其中一个 x 轴项目着色。我看过这篇文章 (How to get axis ticks labels with different colors within a single axis for a ggplot graph?),但我很难将它应用到我的数据集。
df1 <- data.frame(var=c("a","b","c","a","b","c","a","b","c"),
val=c(99,120,79,22,43,53,12,27,31),
type=c("alpha","alpha","alpha","bravo","bravo","bravo","charlie","charlie","charlie"))
myvar="a"
ggplot(df1,aes(x=reorder(var,-val), y=val,fill=type)) + geom_bar(stat="identity")
当 x 轴值等于myvar 时,如何使 x 轴值变为红色?
更新:感谢@ddiez 提供一些指导。我终于意识到我必须在绘图之前重新排序。我也应该用 data.table 制作我的原始示例,所以不确定这是否会影响原始响应。我将我原来的数据集修改为data.table,并使用以下代码取得成功。
df1 <- data.table(var=c("a","b","c","a","b","c","a","b","c"),
val=c(99,120,79,22,43,53,12,27,31),
type=c("alpha","alpha","alpha","bravo","bravo","bravo","charlie","charlie","charlie"))
myvar="a"
df1[,axisColour := ifelse(var==myvar,"red","black")]
df1$var <- reorder(df1$var,-df1$val,sum)
setkey(df1,var,type)
ggplot(df1,aes(x=var, y=val,fill=type)) + geom_bar(stat="identity") +
theme(axis.text.x = element_text(colour=df1[,axisColour[1],by=var][,V1]))
【问题讨论】:
标签: r ggplot2 data.table