ggplot2绘制圆形热图

常见的热图看腻了,这节来介绍如何通过ggplot2绘制圆形热图,为了方便各位观众老爷观看,我制作了一个交互式文档
https://mp.weixin.qq.com/s/lbTqk8ZlLp6A-VX-MYLgFA

加载R包

library(tidyverse)
library(ggthemes)
library(cowplot)

读入数据

accidents <- read.csv("accidents_per_month.txt") %>% 
  mutate(Year=as.numeric(Year)) %>% as_tibble()
> accidents
# A tibble: 156 x 3
    Year Deaths Month
   <dbl>  <int> <int>
 1  2007    126     1
 2  2007    105     2
 3  2007    133     3
 4  2007    137     4
 5  2007    128     5
 6  2007    108     6
 7  2007    170     7
 8  2007    143     8
 9  2007    146     9
10  2007    145    10

数据可视化

先画一张常见的热图

ggplot(accidents, aes(x=Month, y=Year, fill=Deaths)) +
  geom_tile(colour="white") +
  scale_fill_gradient(low = "white", high = "#c85c32") -> p1

p1
image

更改刻度范围

p1 + xlim(-11,13) + ylim(2000,2020) -> p2

p2
image

转换为极坐标

p2 + coord_polar(theta = "x", start = pi/3) -> p3

p3
image

修改主题

 p3 + theme(panel.background=element_rect(fill = "white"),
        axis.title=element_blank(),
        panel.grid=element_blank(),
        axis.text.x = element_blank(),
        axis.ticks=element_blank(),
        axis.text.y=element_blank(),
        legend.position = c(0.48,0.52),
        legend.direction = "vertical",
        legend.background = element_blank(),
        legend.text = element_text(size = 8)) -> p4

p4
image

geom_text添加文本

p4 + geom_text(aes(x=12.5, y=Year, label=Year),hjust=-0.2,
            size=2.5, angle= -53,
            inherit.aes = FALSE) +
  geom_text(aes(x=1, y=2020, label="1"),
            hjust=0.5, vjust = 0,size=3,
            angle= 120, inherit.aes = FALSE) + 
  geom_text(aes(x=11, y=2020, label="11"),
            hjust=0.5, vjust = 0,size=3,
            angle=-30, inherit.aes = FALSE)+
  geom_text(aes(x=12, y=2020, label="12"),hjust=0.5, vjust = 0,
            size=3, angle= -44, inherit.aes = FALSE )+
  geom_text(aes(x=10, y=2020, label="10"),
            hjust=0.5, vjust = 0,size=3,
            angle=-18, inherit.aes = FALSE) + 
  geom_text(aes(x=9, y=2020, label="9"),
            hjust=0.5, vjust = 0,size=3,
            angle=5, inherit.aes = FALSE)+
  geom_text(aes(x=8, y=2020, label="8"),hjust=0.5, vjust = 0,
            size=3, angle= 18, inherit.aes = FALSE )+
  geom_text(aes(x=7, y=2020, label="7"),
            hjust=0.5, vjust = 0,size=3,
            angle=31, inherit.aes = FALSE) + 
  geom_text(aes(x=6, y=2020, label="6"),
            hjust=0.5, vjust = 0,size=3,
            angle=44, inherit.aes = FALSE)+
  geom_text(aes(x=5, y=2020, label="5"),hjust=0.5, vjust = 0,
            size=3, angle= 70, inherit.aes = FALSE )+
  geom_text(aes(x=4, y=2020, label="4"),hjust=0.5, vjust = 0,
            size=3, angle= 80, inherit.aes = FALSE )+
  geom_text(aes(x=3, y=2020, label="3"),hjust=0.5, vjust = 0,
            size=3, angle= 90, inherit.aes = FALSE )+
  geom_text(aes(x=2, y=2020, label="2"),hjust=0.5, vjust = 0,
            size=3, angle= 110, inherit.aes = FALSE )+
  guides(fill = guide_colourbar(barheight = 2.5, barwidth = 1,
  ticks= F,title.position = "left",
  title.theme = element_text(size = 12, angle = 90),
  label.theme = element_text(size = 7)))
image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,610评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,275评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,049评论 2 7