R语言基础 - 饼图piechart

时间:2024-03-19 09:26:15

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(0008), oma=c(00015))
# 增加科学计数法的惩罚值
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**参数确保图例即使很长也不会被裁剪,且能够完全展示在绘图区域之外。

ggplot2绘制饼图

<