专栏首页生物信息云R语言基础绘图教程——第4章:面积图和饼图

R语言基础绘图教程——第4章:面积图和饼图

ggplot2绘制面积图

ggplot2绘制面积图的代码格式:

ggplot(sunspotyear, aes(x,y))+ geom_area()

绘制面积图,文件格式如下:

#draw simple area plot
ggplot(sunspotyear, aes(Year,Sunspots))+
  geom_area()

改变填充色

#change fill colour and alpha
ggplot(sunspotyear, aes(Year,Sunspots))+
  geom_area(colour="black", fill="blue", alpha=.2)

删除面积图下的黑线

#delete the black line under the area plot
ggplot(sunspotyear, aes(Year,Sunspots))+
  geom_area(fill="blue", alpha=.2) +
  geom_line()

按分组作图,文件格式如下:

library(ggplot2)

#read in data
data = read.table("area_plot2.txt", sep="\t", header=T)
levels(data$AgeGroup)
#relevel the factor 
data$AgeGroup = factor(as.character(data$AgeGroup), levels = c("<5", "5-14", "15-24", "25-34", "35-44", "45-54", "55-64", ">64"))

#draw area plot, amazing things will happen.
ggplot(data, aes(Year, Thousands, fill=AgeGroup)) +
  geom_area()

更改另一个配色面板并重新排列年龄组

#change another colorpanel and reorder the agegroup 
ggplot(data, aes(Year, Thousands, fill=AgeGroup)) +
  geom_area(color="black", size=0.2, alpha=0.4) +
  scale_fill_brewer(palette="Blues", breaks=rev(levels(data$AgeGroup)))

绘制饼图

pie()函数绘制饼图

案例数据格式:

代码:

#read in data
data = read.table("pie_plot.txt", sep="\t", header=T)
data

#draw pie chart using function "pie"
pie(data$Value, labels=data$Group)
pie(data$Value, labels=data$Group, radius=0.4)
pie(data$Value, labels=data$Group, radius=0.8, clockwise=T)
pie(data$Value, labels=data$Group, radius=0.8, clockwise=T, init.angle=90)
pie(data$Value, labels=data$Group, radius=0.8, clockwise=T, init.angle=90, density=20)
pie(data$Value, labels=data$Group, radius=0.8, clockwise=T, init.angle=90, density=20, col=rainbow(8))
pie(data$Value, labels=data$Group, radius=0.8, clockwise=T, init.angle=90, density=20, col=rainbow(8), border="black")
pie(data$Value, labels=data$Group, radius=0.8, clockwise=T, init.angle=90, density=NULL, col=rainbow(8), border="black", lty=2)
pie(data$Value, labels=data$Group, radius=0.8, clockwise=T, init.angle=90, density=NULL, col=rainbow(8), border="black", lty=2, main="My First Pie Chart using R")

优化参数,参数意思英文直译就是。

#用优化的参数绘制完美的par图
par(mar=c(0,6,6,6))
pie(data$Value, 
    labels=paste(data$Group,"(",substring(data$Value,0,4), ")"), 
    radius=0.8, 
    clockwise=T, 
    init.angle=9, 
    density=NULL, 
    col=rainbow(8), 
    border="black", 
    lty=2, 
    main="Fig1. XXX Value of different conditions"
)

绘制一个光碟,彩虹渐变色

#draw a round rainbow
par(mar=c(0,0,0,0))
#first start with 10
pie(rep(1,10), col=rainbow(10), lty=0, labels='', init.angle=90, border=NA)
#what will happen if set the number of the values to a big one, try 200 or even bigger one 2000
#Let's see the charm of R language
par(mar=c(0,0,0,0))
pie(rep(1,2000), col=rainbow(2000), lty=0, labels='', init.angle=90, border=NA)

绘制3D饼图

案例数据:

代码:

#read in data
data = read.table("3d_pie_plot.txt", sep="\t", header=T)
data

library(plotrix)
pie3D(data$Value, radius=0.8, height=0.1, theta=0.5,
      labels=paste(data$Group,substring(data$Value,0,4), sep="\n"), 
      explode=0.1, main="Fig1. XXX value of different conditions",
      labelrad=1.5, shade=0.5)

pie3D函数并没有设置顺或逆时针的参数,下面是解决方案。

#think of this, the pie3D function in package plotrix does NOT have the parameter "clockwise" like the function "pie"
#what should we do if we want to reverse the order of the pie chart? Think about that.
#Here is the answer.
data.rev = data[nrow(data):1,]
pie3D(data.rev$Value, radius=0.8, height=0.1, theta=0.5,
      labels=paste(data.rev$Group,substring(data.rev$Value,0,4), sep="\n"), 
      explode=0.1, main="Fig1. XXX value of different conditions",
      labelrad=1.5, shade=0.5)

本文分享自微信公众号 - MedBioInfoCloud(MedBioInfoCloud),作者:DoubleHelix

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R语言基础绘图教程——第5章:直方图和柱状图

    DoubleHelix
  • R绘图笔记 | 一般的散点图绘制

    plot函数中,x和y分别表示所绘图形的横坐标和纵坐标;函数中的...为附加的参数。plot函数默认的使用格式如下:

    DoubleHelix
  • R绘图笔记 | 散点分布图与柱形分布图

    https://docs.qq.com/sheet/DV0dxREV1YkJ0ZmVj

    DoubleHelix
  • React第三方组件6(状态管理之Mobx的使用④TodoList下)

    本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React第三方组件6(状态管理之Mobx的使用①简单...

    前端人人
  • datatables,表格

    windseek
  • BootstrapTable的列排序怎么搞

    先搞一个table,使用ajax将数据查询出来,然后可以在所有列都加上排序。满足自己的需求。

    别先生
  • 上映4天,票房7.4亿的《海王》,用Python分析数据看大片!

    《海王》一部电影带你重温《驯龙高手》《变形金刚》《星球大战》《星河战队》《铁血战士》《安德的游戏》《异形》可能还借鉴了对手的《钢铁侠》与《黑豹》剧情,再稍稍带一...

    周三不加班
  • 【go】剑指offer:常见排序算法

    冒泡排序是比较简单的排序算法,它的关键思想是移动指针不断的进行两两比较,将最大的数字不断的进行更换位置,直至到最后,即完成一趟比较,都会寻找到最大的数字,且最大...

    陌无崖
  • python实现在线翻译

    砸漏
  • go实现利用最大堆寻找最小k个数

    昨天分享了寻找最小k个数的算法是,那么有没有更为迅速的方法呢?今天就来分享关于如何使用最大堆进行解决。

    陌无崖

扫码关注云+社区

领取腾讯云代金券