美文网首页数据科学与R语言
如何制作玫瑰图-ggplot2-R

如何制作玫瑰图-ggplot2-R

作者: Para_changan | 来源:发表于2020-03-19 22:53 被阅读0次

来自博主个人公众号,原文链接:在这里

人民日报公众号在疫情期间推送的消息,有几副图大家肯定见了不止一次。

尤其是下边这副,无论是大小、颜色还是视角效果,都很棒,可读性很强!

image.jpeg

人民日报的图

想想excel出来的条形图,我不禁打开了尘封了三天的电脑、R和firefox:

极坐标与玫瑰图

玫瑰图可以视为是条形图在极坐标系中的表达

利用ggplot实现的思路也是先构建bar(geom_bar),然后将坐标系转为极坐标系(coord_polar)

下边是官方文档给出的例子:

# A coxcomb plot = bar chart + polar coordinates
cxc <- ggplot(mtcars, aes(x = factor(cyl))) +
  geom_bar(width = 1, colour = "black")

multiplot(cxc,cxc + coord_polar(),cols=2)
image.png

这种思路也可以用在饼状图的制作中,不过饼状图需要以堆积的条形图为基础。

# A pie chart = stacked bar chart + polar coordinates
pie <- ggplot(mtcars, aes(x = factor(1), fill = factor(cyl))) +
 geom_bar(width = 1)
multiplot(pie,pie + coord_polar(theta = "y"),cols=2)
image.png

理清了大致思路,我们着手进入实践。

实践流程

准备数据,以3月5日的疫情数据为例:

head(data0305)
##     X     省 省确诊       日期
## 1   1 广东省   1352 2020-03-05
## 2  34 河南省   1272 2020-03-05
## 3  52 浙江省   1215 2020-03-05
## 4 102 湖南省   1018 2020-03-05
## 5 126 安徽省    990 2020-03-05
## 6 154 江西省    935 2020-03-05

首先,构建条形图。并按照确诊人数排序,颜色(渐进色)填充,gg都hold不住的条形图

copl1=ggplot(data0305)+
  geom_bar(stat="identity",aes(y=省确诊,x=reorder(省, 省确诊),fill=省确诊)) #这里要reorder一下,让省按照省确诊来排列,不然参差不齐
copl1
image.png

将坐标系换成极坐标系

copl2=ggplot(data0305)+
  geom_bar(stat="identity",aes(y=省确诊,x=reorder(省, 省确诊),fill=省确诊))+ #如上,#这里要reorder一下,让省按照省确诊来排列,不然参差不齐
  coord_polar()
copl2
image.png

看起来有那么点意思了,再调调色试一下

  copl2+
  scale_fill_gradient(low='white',high='red')+ #渐变色填充,由白到红
  theme_bw()
image.png

调整下边框、坐标轴文本、图例

copl= copl2+scale_fill_gradient(low='white',high='red')+
  theme_bw()+
    theme(axis.text.y = element_blank(),
        axis.text.x = element_text(colour = 'black', face = 'bold',size = 9),
        panel.border = element_blank())+
  xlab(label = '')+ylab(label = '')+
  guides(fill=FALSE)
copl
image.png

对比下人民日报的原图:

image.jpeg

人民日报的图

此图明显不是渐进色的填充,根据不同地区选择了不同颜色;而且标签文本进行了相应的调整,需要耗费不少的精力。

然而,实践中的出图已经达到了神似的水平,为下一步打磨奠定了坚实的基础。。。。

尤其是加上指示标签后,不是吗,夯夯夯

copl+geom_text_repel(aes(label = 省, y = 省确诊,x=省),size=3)+
  theme(axis.text.y = element_blank(),
        axis.text.x = element_text(colour = 'white', face = 'bold',size = 2),
        panel.border = element_blank())
image.png

相关文章

  • 如何制作玫瑰图-ggplot2-R

    来自博主个人公众号,原文链接:在这里 人民日报公众号在疫情期间推送的消息,有几副图大家肯定见了不止一次。 尤其是下...

  • GIF图的最高奥义

    目录1.关于如何制作GIF动图2.如何优化GIF图3.使用PS作GIF图的心得 1.关于如何制作gif动图 这期文...

  • 如何制作长图?

    如何制作长图? ​ 或许你会问,什么叫长图(what)?为什么要制作长图(why)?而不是像我这样直接说,如何...

  • Excel 制作南丁格尔玫瑰图

    一直觉得南丁格尔玫瑰图超级超级好看,今天终于自己动手做了一个。 假如现有如上数据,共8个系列,每个系列具有不同的百...

  • alteryx+Tableau轻松完成南丁格尔玫瑰图

    本篇文章讲讲南丁格尔玫瑰图,大致分为以下几个部分:南丁格尔玫瑰图来源,适用场景,包括这张图如何用alteryx+t...

  • 看完这篇文章,让你分分钟学会制作动态GIF图

    前几天看到有人在逆袭群里问如何制作GIF动图,今天我就给大家说说我是如何制作GIF动图的,看完你也可以轻松制作哦!...

  • 在线绘制流程图的小技巧

    如何在线制作流程图?流程图现在在工作上的使用率是越来越大了,但是如何制作流程图才是让许多人感到头疼的问题。制作流程...

  • Word小技巧:如何制作流程图?

    Word如何制作流程图?很多朋友应该都有制作过流程图的经历,Word也是可以制作流程图的,你知道吗?下面小Q就来给...

  • 思维导图的制作过程

    思维导图的制作过程: 先学会如何制作思维导图是关键,学习制作思维导图是需要的,并且很关键,关键的很,是这样的,也会...

  • 用tableau制作南丁格尔玫瑰图

    如下图所示,每个花瓣代表一个月,颜色代表不同的类别,销售额大的月份花瓣会特别突出。 下面开始制作。 1. 首先准备...

网友评论

    本文标题:如何制作玫瑰图-ggplot2-R

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