在 r: geom_bar 和 ggplot2 中的 facet_grid 中使用分箱数据错误地覆盖和显示 X 轴

如何解决在 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):

  1. x 轴被多次覆盖。我认为这是因为正在为变量 Profile 的每个级别生成 x 轴,但我不确定如何阻止这种情况发生。

  2. 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?