【发布时间】:2018-08-02 23:32:01
【问题描述】:
library(data.table)
library(ggplot2)
d <- data.table(setvalue = c("1.c , 1.d , 1.f , 2.b ", "1.b , 1.d , 1.f , 2.f ", "1.c , 1.d , 2.f , 2.h ", "1.b , 1.d , 1.f , 2.i ","1.c , 1.d , 2.f , 3.j "),
pct = c(0.06, 0.04, 0.028, 0.026, 0.017),
cumpct = c(0.06, 0.10, 0.128, 0.156, 0.173))
break_at_comma <- function(x) {gsub(",", "\n", x)}
ggplot(d, aes(x=reorder(setvalue, cumpct, sum), y=pct))+geom_bar(stat="identity")+
theme_bw()+
scale_y_continuous(labels=scales::percent, name="Procent of all combinations")+
scale_x_discrete(name="chosen combinations", labels=break_at_comma)
但是 - x 轴上列出的“组合”是有意义的。所以我想以“1.[az]{1}”开头的文本为绿色,以“2.[az]{1}”开头的文本,黄色,以及以“3.[az”开头的文本]{1}" 红色。
我希望这是有道理的。最终结果应该是这样的(标签是重复的,所以只看颜色):
【问题讨论】:
-
您可以使用
ifelse单独为轴标签着色,如下所示:stackoverflow.com/a/38862452/4421870,但是,我不知道是否存在在单个标签中具有多种颜色的功能。您可能必须分别绘制每一行轴标签,即绘制 1 的第一个,2 的第二个 -
您可能可以通过在
grid级别进行编辑来实现,但要找到您正在寻找的特定元素可能会很棘手:stackoverflow.com/a/25105646/4421870