ggplot2中刻面上的边缘密度(或条形图)

时间:2018-04-06 15:21:31

标签: r ggplot2 bar-chart

我的问题如下:我有下表

        0   1-5  6-10 11-15 16-20 21-26 27-29
  a 0.019 0.300 0.296 0.211 0.117 0.042 0.014
  b 0.058 0.448 0.308 0.120 0.042 0.019 0.005
  c 0.026 0.277 0.316 0.187 0.105 0.068 0.020
  d 0.054 0.297 0.378 0.108 0.108 0.041 0.014
  e 0.004 0.252 0.358 0.216 0.102 0.053 0.015
  f 0.032 0.097 0.312 0.280 0.161 0.065 0.054
  g 0.113 0.500 0.233 0.094 0.043 0.014 0.003
  h 0.328 0.460 0.129 0.050 0.020 0.010 0.003

表示我的数据的每个子组(a到h)的一些边际频率(按行)。

我的数据集实际上是长格式(非常长,计数超过10万个条目),前6行如下所示:

                RX_SUMM_SURG_PRIM_SITE Nodes.Examined.Class
1                      Wedge Resection                  1-5
2                  Segmental Resection                  1-5
3 Lobectomy w/mediastinal LNdissection                 6-10
4 Lobectomy w/mediastinal LNdissection                 6-10
5 Lobectomy w/mediastinal LNdissection                  1-5
6 Lobectomy w/mediastinal LNdissection                11-15

当我按组绘制条形图时(上表只是这两个协变量的交叉列表,并且采用了行边缘概率),这里发生了什么:

enter image description here

我的代码是

ggplot(data.ln.red, aes(x=Nodes.Examined.Class))+geom_bar(aes(x=Nodes.Examined.Class, group=RX_SUMM_SURG_PRIM_SITE))+
  facet_grid(RX_SUMM_SURG_PRIM_SITE~.)

实际上,我只会非常高兴地在图的各个y轴(而不是计数)上使用边际频率(即表格中的那些)。

任何人都可以帮我这个吗?

感谢您的帮助! EM

1 个答案:

答案 0 :(得分:1)

geom_bar计算观察的计数和比例。您可以使用..prop..(旧方式)或calc(prop)(在较新版本的ggplot2中引入)来访问这些计算出的比例。使用它作为你的美学。

您还可以摆脱aes中的geom_bar,因为这只是ggplotfacet_grid所涵盖内容的重复。

看起来您的计数/比例在不同组之间会有很大差异,所以我正在为分面添加免费的y缩放。

以下是虹膜数据的类似情节示例,您可以对其进行建模:

library(tidyverse)

ggplot(iris, aes(x = Sepal.Length, y = calc(prop))) + 
    geom_bar() + 
    facet_grid(Species ~ ., scales = "free_y")

reprex package(v0.2.0)创建于2018-04-06。

修改:计算出的prop变量在每个组中的比例,而不是所有组中的比例,因此其工作方式不同当x是一个因素。对于分类x,prop将x视为组;要覆盖此内容,请在group = 0中添加aes或其他虚拟值。对不起,我第一次错过了!