前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言circlize包实例2:环形的柱形图

R语言circlize包实例2:环形的柱形图

作者头像
用户7010445
发布2020-03-03 15:06:43
1.5K0
发布2020-03-03 15:06:43
举报
原文为circlize作者写的一本书

https://jokergoo.github.io/circlize_book/book/high-level-plots.html

正常柱形图
代码语言:javascript
复制
category<-paste0("category","_",1:9)
percent<-sort(sample(40:80,9))
color<-rev(rainbow(length(percent)))
category
percent
color
df<-data.frame(category,percent)
df
library(ggplot2)
ggplot(df,aes(x=category,y=percent))+
  geom_col(aes(fill=category))+
  scale_fill_manual(values = color)+
  theme_bw()+coord_flip()+labs(x="")+
  theme(legend.position = "none")

image.png

环形的柱形图

Rplot13.png

代码语言:javascript
复制
library(circlize)
circos.par("start.degree" = 90, cell.padding = c(0, 0, 0, 0))
circos.initialize("a",xlim=c(0,100))
circos.track(ylim = c(0.5, length(percent)+0.5), track.height = 0.8, 
             bg.border = NA, panel.fun = function(x, y) {
               xlim = CELL_META$xlim
               circos.segments(rep(xlim[1], 9), 1:9,
                               rep(xlim[2], 9), 1:9,
                               col = "#CCCCCC")
               circos.rect(rep(0, 9), 1:9 - 0.45, percent, 1:9 + 0.45,
                           col = color, border = "white")
               circos.text(rep(xlim[1], 9), 1:9, 
                           paste(category, " - ", percent, "%"), 
                           facing = "downward", adj = c(1.05, 0.5), cex = 0.8) 
               breaks = seq(0, 85, by = 5)
               circos.axis(h = "top", major.at = breaks, labels = paste0(breaks, "%"), 
                           labels.cex = 0.6)
             })
circos.clear()

以上代码实际出图

image.png

如何通过代码去掉灰色的线条呢?我的是出图后再编辑的 另外函数circos.rect()和函数circos.segments()的用法还不太懂!

更新

circos.segments() 是用来画线的,如果把下面代码去掉的话

代码语言:javascript
复制
circos.segments(rep(xlim[1], 9), 1:9,
                               rep(xlim[2], 9), 1:9,
                               col = "#CCCCCC")

图中就没有灰色线条了 circos.rect()是用来画矩形的 例子

代码语言:javascript
复制
library(circlize)
library(RColorBrewer)
col<-RColorBrewer::brewer.pal(6,"Paired")
df<-data.frame(chr=sample(c(paste0("chr",1:6)),1000,replace = T),
               x=rnorm(1000),
               y=rnorm(1000))
head(df)
circos.initialize(factors = df$chr,x=df$x)
circos.trackPlotRegion(factors = df$chr,y=df$y,
                       panel.fun = function(x,y){
                         circos.axis()
                       })
circos.segments(x0=0,x1=1,y0=0,y1=1)
circos.rect(xleft=0,xright=1,ybottom = -1,ytop=1,col="red")
circos.rect(xleft=-1,xright=1,ybottom = -1,ytop=1,
            col="blue",sector.index = "chr1")
circos.rect(xleft=-1,xright=1,ybottom = -5,ytop=5,
            col="green",sector.index = "chr2")
circos.clear()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文为circlize作者写的一本书
  • 正常柱形图
  • 环形的柱形图
  • 更新
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档