画个圈圈表示你

作者: 小洁忘了怎么分身 | 来源:发表于2021-08-19 16:16 被阅读0次

0.数据和R包

dat = data.frame(Group = paste0("A",1:10),
                     value = runif(10))
dat

##    Group     value
## 1     A1 0.6278805
## 2     A2 0.7196941
## 3     A3 0.9113772
## 4     A4 0.3292087
## 5     A5 0.5395085
## 6     A6 0.8165624
## 7     A7 0.1775485
## 8     A8 0.8311558
## 9     A9 0.2654154
## 10   A10 0.5712543

#install.packages("tidyverse")
library(tidyverse)

1.基础的环状barplot

min_break = floor(min(dat$value))
max_break = ceiling(max(dat$value))
mid_break = mean(c(min_break,max_break))

p = ggplot(dat) +
  geom_hline(dat = data.frame(y = c(min_break,mid_break,max_break)),
             aes(yintercept = y),color = "lightgrey") + 
  geom_col(aes(x = Group,y = value,fill = value),
           position = "dodge2",show.legend = TRUE,alpha = .9) +
  geom_segment(aes(x = Group,y = min_break,xend = reorder(Group, value),yend = max_break),
               linetype = "dashed",color = "gray12") + 
  coord_polar()+
  theme_bw()
p

基础图由自定义的水平和垂直线、直方图组成。是ggplot2画滴

2.可以按照值的大小排个顺序

p2 = ggplot(dat) +
  geom_hline(data = data.frame(y = c(min_break,mid_break,max_break)),
             aes(yintercept = y),color = "lightgrey") + 
  geom_col(aes(x = reorder(Group, value),y = value,fill = value),
    position = "dodge2",show.legend = TRUE,alpha = .9) +
  geom_segment(aes(x = reorder(Group, value),y = min_break,xend = reorder(Group, value),yend = max_break),
               linetype = "dashed",color = "gray12") + 
  coord_polar()+
  theme_bw()
p2

3.细节调整

接下来是修改配色、刻度位置、图例等细节。

k = nrow(dat)+0.7
p2  +
  annotate(x = k, y = min_break, label = min_break, geom = "text", color = "gray12") +
  annotate(x = k, y = mid_break, label = mid_break, geom = "text", color = "gray12") +
  annotate(x = k, y = max_break, label = max_break, geom = "text", color = "gray12") +
  scale_y_continuous(limits = c(-mid_break, max_break),
                     breaks = c(0, min_break, mid_break, max_break),expand = c(0, 0)) + 
  scale_fill_gradientn("Amount",colours = c( "#6C5B7B","#C06C84","#F67280","#F8B195")) +
  guides(fill = guide_colorsteps(barwidth = 15, barheight = .5, title.position = "top", title.hjust = .5)) +
  theme(axis.title = element_blank(),axis.ticks = element_blank(),
        axis.text.y = element_blank(),legend.position = "bottom")

中间的空白圈圈是通过y轴的limits调整来实现的。

齐活儿~

相关文章

  • 画个圈圈表示你

    0.数据和R包 1.基础的环状barplot 基础图由自定义的水平和垂直线、直方图组成。是ggplot2画滴 2....

  • 画圈圈

    画一个圈圈 表示完整一年 今夜子时 旧的圈圈必将画完 开始描画新的圈圈

  • 画个圈圈

    画个圈圈,将喜欢的你圈在里面, 画个圈圈,将家人包住, 画个圈圈,将记忆锁住, 画个圈圈,将幸运留住, …… 喜欢...

  • 画个圈圈…你

    “帮我点个赞呗。”“转发下去,不转不是中国人。”“请投个票。”这些是朋友圈里经常能看到的一些内容。一个圈圈里,确实...

  • 我是him的女儿♛二(9)突如其来的幸福

    自从孤月的初吻没了以后,孤月就陷入了抑郁,整天都蹲在角落,在地上画圈圈,并念叨“画个圈圈诅咒你,画个圈圈诅咒你……...

  • 画个圈圈

  • 画个圈圈

    蹲在地上的不一定是看蚂蚁的小孩,有可能是画圈圈的大人。我真希望这个圈圈能有神奇的魔力,让那些画大饼的人得到应有的惩...

  • 画个圈圈

    你信命吗?不管你信不信,我信!因为在我把自己关起来不言不语躺了一周后,终于决定远走高飞!可是呢?当我收拾好行囊,就...

  • 画个圈圈

    玩圆规,画了一个圈圈。不如在圈圈里面写点字吧,能背的古诗文也不多,就来写一篇耳熟能详的陋室铭吧。 嘿嘿,别说,圈圈...

  • 画个圈圈祝福你

    刘小泽上篇写于18.10.3 ,中篇写于18.10.4,下篇写于18.10.6学习障碍的规律往往是:不是因为它多难...

网友评论

    本文标题:画个圈圈表示你

    本文链接:https://www.haomeiwen.com/subject/emkabltx.html