如何使用 geom_signif (ggsignif, R) 更改字体和括号大小?

How do you change font and bracket size with geom_signif (ggsignif, R)?

我正在尝试使用 ggplot2 绘制数据并使用 ggsignif 显示成对统计比较。 ggsignif 注释的字体太小,线宽太细。帮助指出 textsizesize 参数应分别更改字体大小和括号粗细,但是,这些对我不起作用。我试过在 theme() 中调整文本大小并设置 base_size。所有其他文本都是响应式的。我正在使用我认为是所有内容的最新版本(R v3.6.1,ggsignif v0.6.0)。

我不确定它是否相关,但我还发现 geom_signif() 错位了注释(例如“*”)但正确放置了比较括号。每当我在一个 geom_signif() 中添加多个比较时,就会发生这种情况。如果我添加多个 geom_signif() ,每个都进行单对比较(见下面的代码),那么我就不会遇到这个问题。即使我只添加一个 geom_signif() 它也不会影响 textsize/size 问题。

p = ggplot(population, aes(x=Cluster, y=Cells)) +
  geom_jitter(aes(colour=Sample), position=position_jitterdodge(jitter.width=0.3, dodge.width=0.7), size=1, alpha=0.1) +
  geom_point(data=population.sum, aes(y=Cells, fill=Sample), size=10, position=position_dodge(0.7)) +
  geom_errorbar(data=population.sum, aes(fill=Sample, ymin=CI.Lower, ymax=CI.Upper), width=0.2, size=2, position=position_dodge(0.7)) +
  scale_y_continuous(limits=c(0,1200), expand=c(0, 0)) +
  scale_color_brewer(palette="Paired") +
  theme_classic(base_size = 60) +
  theme(
    legend.justification=c(0, 1),
    legend.position=c(0.01, 1),
    legend.title=element_blank(),
    axis.text.x=element_text(angle=45, hjust=1),
    axis.title.x=element_blank(),
    plot.margin=unit(c(25.5,5.5,5.5,5.5),"pt")
  )

for (i in seq_along(cluster.levels)) # Shouldn't have to add individually?
  p = p + geom_signif(
    stat="identity",
    data=population.sig[i,],
    size=10, # This doesn't work!
    textsize=200, # This doesn't work!
    aes(x=x.start, xend=x.end, y=y, yend=y, annotation=Annotation)
  )

png("Population Scatter Plot.png", 4500, 3000)
p
dev.off()

数据集是:

人口 个人数据点。 30k 条记录(每簇 1k * 样本)。列:

population.sum 汇总数据。 30 条记录(每个簇 1 个 * 样本)。列:

population.sig 重要括号的格式数据。 15 条记录(每个集群 1 条)。列:

Example graph. The comparison bracket is too faint and the annotation text is too small

我还没有解决这个问题,但我已经使用 geom_segment() 和 geom_text() 解决了这个问题(有效地代替了 for 循环):

p = p +
  geom_segment(data=population.sig, aes(x=x.start, xend=x.end, y=y, yend=y), size=3) +
  geom_text(data=population.sig, aes(x=x.mid, y=y+10, label=Annotation, hjust=0.5, vjust=0), size=20)

我遇到了同样的问题。奇怪的是,当我在 geom_signif 的 aes() 中移动 textsize 函数时,问题就解决了。

对于您的情况,请尝试以下代码:

    geom_signif(
    stat="identity",
    data=population.sig[i,],
    #size=10, 
    #textsize=200, 
    aes(x=x.start, xend=x.end, y=y, yend=y, annotation=Annotation,size=10,textsize=200)