我正在试图绘制关于国会中代表对协议的研究的概率密度.想一想:与跨党派对相比,同党对唱名投票的协议分布情况如何.为此,我为国会中的每一位议员创建了不同的配对,并跟踪了他们在所有点名时的投票.然后,我将其汇总,并确定每对协议的比例.您可以想象,同一党派对在点名投票上有很高的一致比例,而跨党派对则不是.因此,此字段可以假定的最大值为1,这意味着一个政党对所有唱名投票都达成了一致.最小值为0,反之亦然.我对每个可以想象到的配对都这样做,并绘制它们的概率密度图.

不幸的是,对于一些国会来说,我遇到了一个问题,即情节右侧的线不会到达x轴.

enter image description here

 h117$pdplot <- 
  ggplot(data = 
         h117$pairs_votes_proportions %>%
         filter(proportion_of_agreements < 1 & proportion_of_agreements > 0.00), 
       aes(
         x = proportion_of_agreements,
         fill = pair_type)) +
  geom_density(adjust = 2, 
               alpha = 0.4, 
               size = 0.7) +
  scale_fill_grey(start = 0.1, end = 0.8) +
  labs(title = paste("House of Representatives 117;",length(unique(h117$votes$rollnumber)),"roll calls"),
       x = "Proportion of Agreements",
       y = "Density") +
  theme_minimal() +
   theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5, face = "bold")) +
  xlim(0, 1)

现在,我不明白的是,为什么这条线要超过x=1.它不是应该保持在x的范围内吗?其次,我如何在ggploy或其他替代方案中解决这个问题?

try :调整Alpha、修剪、过滤掉或保留数据的边缘、切换到STAT_Density

推荐答案

没有规则规定密度函数必须截取x轴,你的曲线图也没有一定的错误.事实上,如果线did在x=1处截取x轴,这将不能准确地表示您的数据.这将传达这样的信息:当x=1时,概率密度为0--本质上,有no cases个符合比例为1.但实际上,在某些情况下,符合比例为1;因此,x=1处的概率密度为>;0,因此这条线必然在该点的x轴上方.

所以我会让你的地保持原样.也就是说,你can使用outline.type = "full"在密度函数周围添加一个轮廓.

set.seed(13)
library(ggplot2)

# example data
dat <- data.frame(
  x = c(rbeta(250, 3, 7), rbeta(250, 10, 1)),
  grp = rep(c("a", "b"), each = 250)
)

ggplot(dat) +
  geom_density(aes(x, fill = grp), alpha = 0.4, outline.type = "full") +
  scale_fill_grey(start = 0.1, end = 0.8) +
  theme_minimal() +
  xlim(0, 1)

在我看来,这是误导性的--看起来B组有很多 case 的x非常接近1,但没有一个 case 的x等于1,这是不准确的.

折衷的办法可能是向绘图添加边框,而不是向密度形状添加边框:

ggplot(dat) +
  geom_density(aes(x, fill = grp), alpha = 0.4) +
  scale_x_continuous(limits = c(0, 1), expand = c(0, 0)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
  scale_fill_grey(start = 0.1, end = 0.8) +
  theme_minimal() +
  theme(panel.border = element_rect(linewidth = 1, fill = NA))

至少对我来说,这使得密度函数的结束看起来不那么突然,并不意味着存在x=1的0种情况.

R相关问答推荐

根据选中三个复选框中的一个或两个来调整绘图

lightgbm发动机在tidymmodels中的L1正则化""

如何改变时间图R中的悬停信息?

R-更新面内部的栅格值

IMF IFS数据以R表示

用两种 colored颜色 填充方框图

使用R中的dist()迭代ID匹配的欧几里德距离

为什么在BASE R中绘制线条时会看到线上的点?

汇总数据帧中的复制列,保持行的唯一性

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

警告消息";没有非缺失的参数到min;,正在返回数据中的inf";.表分组集

如何对r中包含特定(未知)文本的行求和?

如何在反曲线图中更改X标签

我如何使用循环来编写冗余的Rmarkdown脚本?

按镜像列值自定义行顺序

使用ggplot2绘制具有边缘分布的坡度图

计算多变量的加权和

Broom.Mixed::Augment不适用于Sample::分析

随机生成样本,同时在R内的随机样本中至少包含一次所有值

如何在一个GGPLATE中绘制多个灰度平滑?