R语言基础绘图 —— 饼图piechart
数据准备
这里展示变异注释类型所占百分比:
filename <- "data/Count_by_effects.csv"
df <- read.csv(filename)
# 去除百分比符号,并转换为数值
df$Percent <- as.numeric(gsub("%", "", df$Percent))
# 四舍五入到4位小数
df$Percent <- round(df$Percent, 2)
df <- df[order(-df$Percent), ][1:10, ]
head(df)
baseR绘制饼图
调用 pie()
函数即可:
library(Cairo)
library(paletteer)
colors <- paletteer_d("ggthemes::Classic_Green_Orange_12")
CairoPDF("test.pdf", width=7, height=2.5)
par(mar=c(0, 0, 0, 8), oma=c(0, 0, 0, 15))
# 增加科学计数法的惩罚值
options(scipen = 999)
pie(x = df$Count,
labels = "",
cex = 1,
radius = 1,
clockwise = TRUE,
col = colors,
border = NA,
main = NA)
# 添加图例
legend(x = 1.2,
y = 1,
legend = paste0(df$Type, " (", df$Percent, "%)"),
bty = "n",
fill = colors,
border = NA,
#title = "SNP effect",
xpd = NA,
cex = 1)
dev.off()
-
x
: 这个参数接受一个数值向量,表示每个饼图片段的大小。 -
labels
: 用于指定每个饼图片段旁边显示的标签。这里因为我们的类别太多,如果都展示的话会显得很拥挤,所以这里给一个空的字符串。 -
cex
: 字符扩展大小(Character EXpansion size)。这个参数用于控制标签的字体大小,其中**1
是默认大小,小于1
的值会缩小字体,大于1
**的值会放大字体。 -
radius
: 饼图的半径,可以用来控制饼图的大小。在这里,**radius = 1
**表示使用默认的半径大小。 -
clockwise
: 一个逻辑值(TRUE或FALSE),用于指定饼图的绘制方向。**TRUE
表示饼图的片段将按顺时针方向绘制,而FALSE
**(默认值)表示按逆时针方向绘制。 -
col
: 为饼图的每个片段指定颜色。**colors
是一个颜色向量,它的长度应该和x
**参数的长度相匹配。每个饼图片段将按照这个向量中颜色的顺序进行着色。 -
main
: 指定饼图的主标题。
注意:我们这里绘制的图例标签非常长,为了将其完全展示出来,需要设置这几个参数:
-
图片长宽
-
使用**
par(mar=c())
或par(oma=c())
调整边界。mar
用于设置图形四周的边界大小,而oma
**用于设置外边界大小。 -
**
inset=c(-0.3, 0)
和xpd=NA
**参数确保图例即使很长也不会被裁剪,且能够完全展示在绘图区域之外。