如何解决在 r: geom_bar 和 ggplot2 中的 facet_grid 中使用分箱数据错误地覆盖和显示 X 轴
我正在使用 ggplot2 制作数据直方图。我正在使用带有两个离散变量的 facet_grid,它们的所有组合都存在于数据中。我想在 y 轴上显示百分比(在这种特殊情况下,这是必需的,即使使用密度有很好的论据)。我最初发布了 this question,但添加了其他变量并改变了我的方法,现在我更喜欢使用 ggplot2。
我已经将 ggplot2 之外的数据分箱并使用了 geom_bar。这是对以下问题的第二个回答中描述的方法 - 即 OP 冯迈的回答:
Let ggplot2 histogram show classwise percentages on y axis
(我也尝试了上述问题的公认答案中描述的方法,这是由罗夏提出的。但是,每个图的 ns 似乎仍然是根据参与者总数而不是按类别计算的。现在我有在分档方面取得了更大的进展)。
我的问题是我在 x 轴上得到了意想不到的结果(参见下面的 reprex):
-
x 轴被多次覆盖。我认为这是因为正在为变量 Profile 的每个级别生成 x 轴,但我不确定如何阻止这种情况发生。
-
x 轴显示由 cut 函数生成的括号。也许这与第一个问题有关,也许不是。编辑:我期待 x 轴在每列下方显示 1-100,而不是 x 轴显示带括号的垃圾箱。用户冯迈似乎已经在我上面链接的问题中实现了这一点。
我将非常感谢您提供有关解决这些问题的建议。
library(tidyverse)
library(ggplot2)
library(scales)
d <- data.frame(
n = c(1L,7L,8L,17L,31L,24L,13L,16L,14L,19L,4L,1L,2L,15L,18L,6L,10L,3L,5L,22L,21L,29L,34L,9L,20L,35L,32L,33L,44L,23L,11L,42L),freq = c(0.0099009900990099,0.0693069306930693,0.0792079207920792,0.168316831683168,0.306930693069307,0.237623762376238,0.128712871287129,0.158415841584158,0.138613861386139,0.188118811881188,0.0396039603960396,0.0099009900990099,0.0198019801980198,0.148514851485149,0.178217821782178,0.0594059405940594,0.099009900990099,0.0297029702970297,0.0495049504950495,0.217821782178218,0.207920792079208,0.0847457627118644,0.135593220338983,0.491525423728814,0.288135593220339,0.576271186440678,0.152542372881356,0.0508474576271186,0.322033898305085,0.271186440677966,0.338983050847458,0.0677966101694915,0.0169491525423729,0.23728813559322,0.593220338983051,0.010989010989011,0.032967032967033,0.0549450549450549,0.351648351648352,0.362637362637363,0.186813186813187,0.483516483516484,0.252747252747253,0.120879120879121,0.0989010989010989,0.043956043956044,0.153846153846154,0.175824175824176,0.0659340659340659,0.021978021978022,0.164835164835165,0.461538461538462),Profile = as.factor(c("1","1","2","3","3")),TimeFactor = as.factor(c("FactorscoreO","FactorscoreO","FactorscoreM","FactorscoreP","FactorscoreD","FactorscoreD")),score_cut = as.factor(c("(20,30]","(40,50]","(50,60]","(60,70]","(70,80]","(80,90]","(90,100]","[0,10]","(10,20]","(20,"(30,40]",100]"))
)
hist <- ggplot(d,aes(x = score_cut,y = freq*100,fill=Profile)) +
geom_bar (stat="identity",position="dodge") +
xlab("Raw unweighted factor score") + ylab("Percentage of participants") +
theme_bw()+
facet_grid(vars(TimeFactor),vars(Profile)) +
theme(panel.grid.major = element_blank()) +
scale_fill_manual(values=c("#56B4E9","#E69F00","#999999"))
hist
由 reprex package (v0.3.0) 于 2021 年 4 月 30 日创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。