r语言 - ggVennDiagram,定义小数点



是否有人知道如何在使用ggVennDiagram函数(R)时改变显示的小数位数?

# Example code
install.packages("ggVennDiagram")
my_species <- paste("species", 1:50, sep="")
set.seed(2)
x <-list(A = sample(my_species, 12), 
B = sample(my_species, 20), 
C = sample(my_species, 16),
D = sample(my_species, 2))
# venn plot
ggVennDiagram(x, label="percent") +
theme(axis.text = element_blank(), 
legend.position = "none",
axis.ticks = element_blank(),
axis.title = element_blank())

从源代码(https://www.rdocumentation.org/packages/ggVennDiagram/versions/0.3/source)中,我看到作者为label="percent"定义了两位小数。我能在R代码中重写这个吗,这样我要么没有小数点,要么只有一个?

# from function "plot_venn()" in source code of ggVennDiagram 
counts <- counts %>%
mutate(percent=paste(round(.data$count*100/sum(.data$count),digits = 2),"%",sep=""))

提前非常感谢!

总有一个解决方案,但由于这是硬编码的方式,它会变得很难看。

在这种情况下,一种方法是初始化没有百分比的图形,然后像ggVennDiagram那样自己添加它们,这需要通过代码回溯并进入其内部。


g <- ggVennDiagram(x, label=NULL) +
theme(axis.text = element_blank(),
legend.position = "none",
axis.ticks = element_blank(),
axis.title = element_blank())
g
## Notice label=NULL above. We add labels ourself like so:
region_data <- ggVennDiagram:::four_dimension_ellipse_regions(n.sides=3000)
counts <- ggVennDiagram:::four_dimension_region_values(x)
polygon <- region_data[[1]]
center <- region_data[[2]]
counts <- counts %>%
mutate(percent=paste(round(.data$count*100/sum(.data$count),digits = 1),"%",sep="")) %>%
mutate(label = paste(.data$count,"n","(",.data$percent,")",sep=""))
data <- merge(counts,center)
g + geom_label(aes_string(label="percent"),data=data,label.size = NA, alpha=.5)

(注意,上面的代码只是从包本身复制的,工作是逆向工程,并确定您需要哪些位,以何种顺序)

您应该通知包的作者这个需求,并要求他将此作为函数参数提供。

ggVennDiagram现在在1.1版本中支持percent_digit配置。您可以更新它并按如下方式设置percent_digit:

ggVennDiagram(x, label_percent_digit = 1, label = "percent")

详情见https://venn.bio-spring.info/using-ggvenndiagram#setting-region-label

最新更新