R语言 删除垂直平均线并更改相似密度图中的透明度

k7fdbhmy  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(128)

使用library(“likert”)中的likert.density.plot,我试图制作一个likert数据的密度图。该图可以工作,但我似乎无法改变我所期望的可视化的所有方面。特别是我想改变:

  • 将透明度填充为不透明-非常确定传递给密度的参数是alpha=1,但我不知道它去了哪里
  • 删除均值处的垂直线。尝试使用geom_vline(FALSE),但不起作用。

最小工作示例:
(实际数据无法公开,因此以相同格式生成了一些)

df = data.frame(Q1Pre=c(1,2,1,2,1,3,2,1),Q1Post=c(2,1,3,2,3,2,3,2))

# Covert values to factors
df = lapply(df, factor, levels = 1:3)
df = as.data.frame(df)

#Convert to likert object
likertdf = likert(df)

likert.density.plot(likertdf, facet=FALSE, bw=0.5)

我希望它看起来更像这样(不透明的颜色和没有中线):

这可以用ggplot作为+ geom_density()来完成,所以尝试了

likert.density.plot(likertdf,facet=FALSE,bw=0.5,aes(geom_density))

没有任何变化。
这里是一个比工作示例稍大的示例,以显示我如何完成其他一些格式:

likert.density.plot(likertdf,facet=FALSE,bw=0.5) + 
  scale_x_continuous(breaks=c(1,2,3),
                     labels=c("Disagree", "Neutral", "Agree")) + 
  scale_fill_manual(values = c("red","blue"))

它会根据需要更改颜色和轴:

但相同类型的格式编辑不会更改填充或删除中线。

nr9pn0ug

nr9pn0ug1#

有两种可能的方法可以考虑,都假设你的likert图被称为p

p <- likert.density.plot(likertdf, facet=FALSE, bw=0.5)

方法一:从p中获取计算出的密度数据集并自行绘制

p[["data"]] %>%
  ggplot(aes(x = x, y = y, fill = Item)) +
  geom_polygon(color = "black", linewidth = 2)  +

# everything below here attempts to replicate likert.density.plot's default
# appearance; you can change them to suit your needs

  labs(fill = "Item", x = "", y = "") +
  scale_x_continuous(breaks = 1:likertdf$nlevels, 
                     labels = likert:::label_wrap_mod(paste0(levels(likertdf$items[, 1]), 
                                                             " (", 
                                                             1:likertdf$nlevels,
                                                             ")"), 
                                                      width = 10)) +
  theme(axis.text.y = element_blank(),
        axis.ticks.y = element_blank())

方法二:修改/删除p中的违规元素

p$layers[[1]]$aes_params$alpha <- 1        # set 1st layer (geom_polygon)'s alpha as 1
p$layers[[1]]$aes_params$colour <- "black" # add black outline
p$layers[[1]]$aes_params$linewidth <- 2    # specify thickness of black outline
p$layers[[3]] <- NULL # remove 3rd layer (geom_path)
p$layers[[2]] <- NULL # remove 2nd layer (geom_vline)

plot(p)

两种方法的结果:

相关问题