我设法创建了一个帕累托图,但是,我想改进某些事情,但我缺乏这样做的技能。也许有人可以快速查看图表并让我知道,如果
我可以在右侧 y 轴上,累积频率(%)在哪里,我可以在数字后面加上百分比符号?这样我可以删除轴标题,这会很棒
如果不可能 1 号,我怎样才能使正确的 y 轴标题更大?
size = 12
无法输入,我不确定这将如何解决。我也在考虑轮换标题,但我再次不确定这是否可行是否可以旋转A、B、C、D...标签,使它们不是垂直的而是水平的?
我想知道是否可以选择在条形上方添加相对频率,以及在红色曲线上的点上方添加百分比,代表累积频率?
最小的例子
set.seed(42) ## for sake of reproducibility
c <- data.frame(value=factor(paste("value", 1:n)),counts=sample(18:130, n, replace=TRUE))
帕累托图的累积频率
# It's maybe not the most elegant way of doing it but it works
# If someone can offer an alternative, that would be nice
df <- data.frame(c,stringsAsFactors = FALSE)
df <- df[order(df$counts,decreasing=TRUE), ]
df$value <- factor(df$value, levels=df$value)
df$cumulative <- cumsum(df$counts)
df$cumulative <- 100 * df$cumulative/tail(df$cumulative, n=1)
scaleRight <- tail(df$cumulative, n=1)/head(df$counts, n=1)
ggplot中的帕累托图
ggplot(df, aes(x=value)) + theme_bw()+
geom_bar(aes(y=counts, fill=value), stat="identity",show.legend = FALSE) +
geom_path(aes(y=cumulative/scaleRight, group=1),colour="red", size=0.9) +
geom_point(aes(y=cumulative/scaleRight, group=1),colour="red") +
scale_y_continuous(sec.axis = sec_axis(~.*scaleRight, name = "Cumulative (%)"), n.breaks = 9) +
theme(axis.text.x = element_text(angle=90, vjust=0.6)) +
theme(
legend.title = element_blank(),
plot.title = element_text(hjust = 0.5),
panel.background =element_blank(),panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.title.x=element_blank(),
axis.text.x = element_text(size=12),
axis.text.y = element_text(size=12)) +
scale_color_grey(start=0, end=.6)+scale_fill_grey()+ ylab("Counts")