gpt4 book ai didi

r - 如何在多面板中删除饼图中的间距并使用 r 在顶部只有一个图例

转载 作者:行者123 更新时间:2023-12-04 20:36:17 29 4
gpt4 key购买 nike

饼图:

Initial pie charts diagram

数据链接:https://drive.google.com/file/d/0BwoPt0jyGdzORkM3cVA0WjJodVk/view?usp=sharing

Mydata<-read.csv(file="final_analysis_candy_analysis.csv",head=TRUE,sep=",")

dhfr.Arg <- table(Mydata$dhfr.Arg.59.163.137.)
dhfr.Ile <- table(Mydata$dhfr.Ile.51.214.65.)
dhfr.Asn108 <- table(Mydata$dhfr.Asn108.328.372.)
glu.540 <- table(Mydata$glu.540.538.326.200.)
gly.437 <- table(Mydata$gly.437.848.300.)

library(plotrix)

par(op)
op <-par(mfrow=c(2,3),mar=c(0,0,1,0))
pct <- round(dhfr.Arg/sum(dhfr.Arg)*100)
lbls <- paste(names(dhfr.Arg), pct) # add percents to labels
lbls <- paste(lbls,"%",sep="") # ad % to labels
lp<-pie3D(dhfr.Arg,radius=0.8,labels=lbls,explode=0.1,
labelrad=1.4,main="dhfr Arg 59(163,137)")
pct <- round(dhfr.Ile/sum(dhfr.Ile)*100)
lbls <- paste(names(dhfr.Ile), pct) # add percents to labels
lbls <- paste(lbls,"%",sep="") # ad % to labels
lp<-pie3D(dhfr.Ile,radius=0.8,labels=lbls,explode=0.1,
labelrad=1.4,main="dhfr Ile 51(214,65)")
pct <- round(dhfr.Asn108/sum(dhfr.Asn108)*100)
lbls <- paste(names(dhfr.Asn108), pct) # add percents to labels
lbls <- paste(lbls,"%",sep="") # ad % to labels
lp <- pie3D(dhfr.Asn108,radius=0.8,labels=lbls,explode=0.1,
labelrad=1.4,main="dhfr Asn108(328,372)")
pct <- round(glu.540/sum(glu.540)*100)
lbls <- paste(names(glu.540), pct) # add percents to labels
lbls <- paste(lbls,"%",sep="") # ad % to labels
lp<-pie3D(glu.540,radius=0.8,labels=lbls,explode=0.1,
labelrad=1.4,main="glu 540(538,326,200)")
pct <- round(gly.437/sum(gly.437)*100)
lbls <- paste(names(gly.437), pct) # add percents to labels
lbls <- paste(lbls,"%",sep="") # ad % to labels
lp <- pie3D(gly.437,radius=0.8,labels=lbls,explode=0.1,
labelrad=1.4,main="gly 437(848,300)")
par(op)

pie charts with white space marked in black

最佳答案

使用 2D 可视化将使您的绘图更容易理解。因此,使用 ggplot 的替代 2D 解决方案:

# load needed packages
library(data.table)
library(ggplot2)
library(scales)

# process & summarise the data (with data.table)
mydat <- melt(setDT(Mydata),
id=1,
measure.vars=4:8)[, .N, by = .(variable,value)
][, `:=` (perc = round(N/sum(N),2),
pos = cumsum(N)-0.5*N), by = variable]

# create the plot with ggplot2 & scales
ggplot(mydat) +
geom_bar(stat="identity", aes(x="", y=N, fill=value)) +
geom_text(aes(x = "", y = pos, label = percent(perc))) +
scale_x_discrete(expand = c(0,0)) +
scale_y_continuous(expand = c(0,0)) +
coord_polar(theta = "y") +
facet_grid(.~ variable, scales = "free") +
theme_minimal(base_size = 16) +
theme(axis.title = element_blank(), axis.text = element_blank(),
panel.grid = element_blank(), legend.title = element_blank())

这给出了以下情节:

enter image description here

this answer如何计算 pos带有基础 R 或 plyr 和 dplyr 包的变量。

然而,饼图大多不是可视化数据的最佳方式。同样在这种情况下,bart 图表将导致更清晰的可视化。和:
ggplot(mydat, aes(x=variable, y=perc, fill=value)) +
geom_bar(stat="identity", aes(label = percent(perc)), width=0.6) +
scale_y_continuous(labels = percent(c(0,0.25,0.50,0.75,1.00))) +
coord_flip() +
theme_minimal(base_size = 14) +
theme(axis.title = element_blank(), legend.title = element_blank())

你得到:

enter image description here

关于r - 如何在多面板中删除饼图中的间距并使用 r 在顶部只有一个图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35079912/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com