上一章介绍了用Python制作南丁格尔玫瑰图(https://www.jianshu.com/p/260d23bddbbc),这里发现用R更方便,堪称一秒变玫瑰!
下面我们来看看怎么用R来画南丁格尔玫瑰图:
1、加载所需的包
library(ggplot2)
2、读入数据
疫情地图.csva1 = read.csv("E:\\hill2020\\Python相关\\疫情地图.csv",sep=',',header=TRUE)
#取前20条数据
a <- a1[1:20,]
3、画柱形图
p <- ggplot(a,aes(x=continent, y=num, fill=continent))+ geom_bar(stat="identity", color="black")
4、1秒钟变玫瑰图,使用极坐标,被像折扇子一样将柱形图折叠为玫瑰图
p + coord_polar()
5、图片调整:去掉背景&中间留空:
ylim函数用于调整y坐标轴的最大最小值。
p + coord_polar() + theme_bw() + ylim(-50000,200000)
6、如果想按照数值从高到小排序的话,调整一下ggplot的参数即可:
修改处是reorder函数:
p <- ggplot(a,aes(x=reorder(continent,num), y=num, fill=continent))+ geom_bar(stat="identity", color="black")
p + coord_polar() + theme_bw() + ylim(-20000,170000)
7、稍微调整下图片形式,去除坐标轴、网格线、设置标签等,使图表更清晰,并在中心加文字等:
a$label <- paste(a$continent,a$num)
p <- ggplot(a,aes(x=reorder(continent,num), y=num, fill=continent,label=label))+ geom_bar(stat="identity", color="black")
p + coord_polar() + theme_bw() + ylim(-20000,170000) +
theme(
panel.grid = element_blank(),
panel.border= element_blank(),
axis.text.y = element_blank(),
axis.text.x = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank(),
plot.margin = unit(c(0,-20,-20,-20),"cm")) +
annotate("text",x=0, y=-20000, label="累计确诊\ntop20国家", fontface="bold", colour="steelblue", size=6) +
geom_text(aes(label = label),size=3, vjust = "left", hjust = "outward", color = "dark blue", fontface="bold" ) +
guides(fill=F) #不显示图例
1)添加标签的函数是geom_text(),函数中各参数的含义:
·size:设置字体大小
·fontface:可设置粗体或斜体,“plain”默认普通值, “bold” 粗体、 “italic”斜体。
·vjust:调整纵向位置 ["bottom","middle","top","inward(文字对齐到主画面)","outward"]
·hjust:调整横向位置 ["left","center","right","inward(文字对齐到主画面)","outward"]
2)plot.margin用于调整边界参数,通过数值的调整可以改变图片大小。
最终生成的玫瑰图:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更多数据相关文章,欢迎关注公众号“大数据会”,一起学习交流,留言可以获取相关数据哦!
网友评论