r - 在 R 中调整帕累托图上的第二个 y 轴
问题描述
我在 R 中创建了两个帕累托图,都使用相同的数据。一个使用 ggplots stat_pareto,另一个使用 qcc 库中的 pareto.chart 函数。
ggplot(DT4, aes(x = reorder(sap_object_type_desc, -sum_duration), y =
sum_duration)) +
geom_bar(stat="identity") +
theme(axis.text.x=element_text(angle=90,hjust=1)) +
stat_pareto(point.color = "red",
point.size = 2,
line.color = "black",
#size.line = 1,
bars.fill = c("blue", "orange"))
或者使用pareto.chart
函数
pareto.chart(avector,
ylab = "Sum",
# xlab = "Objective Type Description",
main = "Avector Pareto Chart",
cumperc = c(20,40,60,80,100)) # or = seq(0, 100, by =25)
我想要做的是调整上述两个图上的第二个 y 轴,以便 100% 累积百分比与最高条对齐,就像第三个示例一样。有什么建议么?
解决方案
这是有关如何执行此操作的完整示例,包括所有数据处理和标题等。希望对您有所帮助:)
counts <- c(0.2, 1.3,4.2,9.0,1.0,1.7,1.0,1.0,13.1)
tags <- c("BL11-a","BL-11b","BL-12","BL-13","BL-15","BL-16","BL-17","BL-18","Everything Else")
df <- data.frame(counts=counts,tags=tags,stringsAsFactors = FALSE)
df <- df[order(df$counts,decreasing=TRUE), ]
df$tags <- factor(df$tags, levels=df$tags)
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)
library(ggplot2)
ggplot(df, aes(x=df$tags)) +
geom_bar(aes(y=df$counts), fill='deepskyblue4', stat="identity") +
geom_path(aes(y=df$cumulative/scaleRight, group=1),colour="red", size=0.9) +
geom_point(aes(y=df$cumulative/scaleRight, group=1),colour="red") +
scale_y_continuous(sec.axis = sec_axis(~.*scaleRight, name = "Cumulative (%)")) +
theme(axis.text.x = element_text(angle=90, vjust=0.6)) +
labs(title="Pareto Chart", subtitle="SNS Hyspec Background Contributions", x="Background Source", y=expression(Counts(~mu~Ah/~mu~s)))
ggsave("snsParetoChart.png")
产生:
推荐阅读
- javascript - 单击元素时如何隐藏或显示所需的块?
- python - 我在 python 上做一个虚拟助手,我不知道为什么语音识别不听并打印我所说的
- python - 如何将浮点像素值写入带有枕头的图像文件?
- postgresql - 为 RHEL 8 设置 ODBC,出现错误 [IM002][unixODBC]Missing database name in call to CC_connect
- python - 如何将给定数据的输出转换为字典格式?
- jquery - 我的上下文相关 useEffect 钩子仅在第一次调用时触发
- amazon-ec2 - Aws Ec2 与 VPN 的反向连接
- javascript - 使用 jQuery 来操作一个组合的 HTML 页面?
- javascript - For Loop Javascript ScrollTo.Document 项目在重构后不起作用
- javascript - 添加区域后上传编辑器图像