前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言ggplot2做玫瑰图(花瓣图)的简单小例子

R语言ggplot2做玫瑰图(花瓣图)的简单小例子

作者头像
用户7010445
发布2021-09-22 10:24:26
3.9K0
发布2021-09-22 10:24:26
举报
文章被收录于专栏:小明的数据分析笔记本

P0(FN2ZN}QH8QSC$2~ZEJGI.jpg

今天在一个交流群里看到有人问这个图如何实现?这种图叫玫瑰图或者花瓣图,如果使用R语言的ggplot2来做的话, 比较常规的实现办法是先做柱形图,然后再用极坐标,比如

代码语言:javascript
复制
df<-data.frame(x=LETTERS[1:6],
               y=sample(1:10,6))

library(ggplot2)

ggplot(df,aes(x=x,y=y))+
  geom_col(aes(fill=x),show.legend = F)+
  coord_polar()

image.png

但是这个花瓣是圆弧形的,并不是推文开头提到的图片中的样式。

印象里好像见过python实现推文开头提到的图。所以搜了关键词 python rose plot,找到了参考链接 https://www.codesansar.com/python-programming-examples/plot-rose-curves.htm 发现他构造数据的代码是使用正余弦函数,我们试着用R语言的ggplot2试一下

假设我们有10个数据

代码语言:javascript
复制
x<-1:180
x
y<-sin(10*x*pi/180)

df<-data.frame(x=x,y=abs(y))

df$yz<-df$y*df$z

ggplot(data=df,aes(x=x,y=y))+
  geom_area(fill="blue",
            alpha=0.5,
            color="black")+
  coord_polar()+
  theme_bw()+
  theme(axis.text = element_blank(),
        axis.ticks = element_blank(),
        panel.border = element_blank(),
        axis.title = element_blank())

image.png

这种思路是可行的

下面是完整的代码

代码语言:javascript
复制
library(tidyverse)
library(ggplot2)

set.seed(123456)

df<-data.frame(x=LETTERS[1:10],
               y=sample(1:20,10))
df

x<-1:180
x
y<-sin(10*x*pi/180)

df1<-data.frame(x1=x,
               y1=abs(y),
               var=gl(10,18,labels = LETTERS[1:10]))
df1
merge(df1,df,by.x = 'var',by.y = 'x') %>% 
  mutate(new_y=y1*y) -> df2
  
ggplot(data=df2,aes(x=x,y=new_y))+
  geom_area(aes(fill=var),
            alpha=0.8,
            color="black",
            show.legend = F)+
  coord_polar()+
  theme_bw()+
  theme(axis.text.y = element_blank(),
        axis.ticks = element_blank(),
        panel.border = element_blank(),
        axis.title = element_blank())+
  scale_x_continuous(breaks = seq(9,180,18),
                     labels = df$x)+
  geom_text(data=df,aes(x=seq(9,180,18),
                         y=y+1,
                         label=y))

image.png

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 假设我们有10个数据
  • 下面是完整的代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档