数据-R语言-图表-决策-Linux-Python

R语言:pie绘制饼图

2019-11-03  本文已影响0人  胡童远

导读

饼图可以展示整体中各个部分占整体的比例。利用label,col,border可分别调整pie图的标签、饼颜色、边颜色。如果输入数据是矩阵,即需要绘制很多个指数的饼图,可以使用for循环快速批量画图,这是一般基于图形界面的画图软件做不到的。下面是以上参数的使用方法。

一、模拟输入数据

set.seed(1995)  
# 随机种子

data=matrix(abs(round(rnorm(20, mean=20, sd=5))), 5, 4)  
# 随机正整数,5行,4列

colnames(data)=paste("C", 1:4, sep=".")  
# 列名

rownames(data)=paste("R", 1:5, sep=".")  
# 行名

data  # 查看数据,如下:

    C.1 C.2 C.3 C.4
R.1  25  18  20  20
R.2  18  20  19   8
R.3  21  20  21  13
R.4  22  19  25   7
R.5  28  28  13  20

二、画一个饼图

以第一列为绘图输入画一个饼图。

pdf("pie1.pdf")

pie(data[,1])

dev.off()

打开pie1.pdf,绘图结果如下:

图片.png

三、配色

使用RColorBrewer包的brewer.pal函数设置配色方案为"Set3"。"Set3"能给相邻单元绘上对比鲜明的颜色。
关键参数:
border="white" # 边界线条设为白色
col=brewer.pal(5, "Set3") # 5种颜色,Set3方案

library(RColorBrewer)

pdf("pie2.pdf")

pie(data[,1], border="white", col=brewer.pal(5, "Set3"))

dev.off()

打开pie2.pdf,绘图结果如下:

图片.png

四、定制标签

关键参数:
data[,1]/sum(data[,1] # 计算每个占总比
round(xx, 1) # 保留一位小数
rownames(data) # 取行名
paste(xx, "(", percent, "% )") # 字符粘贴

pdf("pie3.pdf")

percent <- round(data[,1]/sum(data[,1])*100, 1)
# 计算比例,保留一位小数
label <- paste(rownames(data), "(", percent, "% )")
# 定制标签
pie(data[,1], border="white", col=brewer.pal(5, "Set3"), label=label)

dev.off()

打开pie3.pdf,绘图结果如下:

图片.png

五、画多个饼图

使用for循环将多个饼图画到一个pdf文件中。
关键参数:
length(data[1,]) # 计算列数作为for循环数
main=colnames(data)[i] # 以列名命名每个pie

pdf("pie4.pdf")

for(i in 1:length(data[1,]))
{
    percent <- round(data[,i]/sum(data[,i])*100, 1)
    # 计算比例,保留一位小数
    label <- paste(rownames(data), "(", percent, "% )")
    # 定制标签
    pie(data[,i], border="white", col=brewer.pal(5, "Set3"), label=label, main=colnames(data)[i])
}

dev.off()

打开pie4.pdf,绘图结果如下:

图片.png
图片.png
图片.png
图片.png

\color{green}{😀😀原创文章,码字不易,转载请注明出处😀😀}

上一篇 下一篇

猜你喜欢

热点阅读