本内容为【科研私家菜】R可视化之美之科研绘图系列课程
快来收藏关注【科研私家菜】
01 径向柱状图
径向柱状图
径向柱状图也称为圆形柱状图或星图。
径向柱形图使用同心圆网格来绘制条形图,每个圆圈表示一个数值刻度,而径向分隔线(从中心延伸出来的线)则用作区分不同类别。刻度上较低的数值通常由中心点开始,然后数值会随着每个圆形往 外增加。此外,条形也可以如堆叠式条形图般堆叠起来。
径向柱形图也被称为圆形柱形图或星图。这种图表使用同心圆网格来绘制条形图。每个圆圈表示一个数值刻度,而径向分隔线(从中心延伸出来的线)则用作区分不同类别或间隔(如果是直方图)。刻度上较低的数值通常由中心点开始,然后数值会随着每个圆形往外增加,但也可以把任何外圆设为零值,这样里面的内圆就可用来显示负值。条形通常从中心点开始向外延伸,但也可以在别处为起点显示数值范围(如跨度图)。此外,条形也可以如堆叠式条形图般堆叠起来。
library(ggplot2)
library(RColorBrewer)
df <- data.frame(item=rep(LETTERS[1:10], 5),
score=rep(letters[1:5], each=10),
value=rep((1:5), each=10) + rnorm(50, 0, .5))
myAng <-seq(-20,-340,length.out =10)
ggplot(data=df,aes(item,value,fill=score))+
geom_bar(stat="identity", color="black", position=position_dodge(),width=0.7,size=0.25)+
coord_polar(theta = "x",start=0) +
ylim(c(-3,6))+
scale_fill_brewer(palette="YlGnBu")+
theme_light()+
theme( panel.background = element_blank(),
panel.grid.major = element_line(colour = "grey80",size=.25),
axis.text.y = element_text(size = 12,colour="black"),
axis.line.y = element_line(size=0.25),
axis.text.x=element_text(size = 13,colour="black",angle = myAng))
效果如下:
02 极坐标跨度图
极坐标跨度图可以用来表示时间序列的波动范围,比如用来表示成交额、气温等随着时间的变化而产生的波动。
极坐标跨度图是一种常用的时间序列的波动范围图表,对于数据量较多的数据,可以使用线条line )代替条形( bar )表示数据,可以用于表示价格、温度等随时间的波动变化。
极坐标区域图也被称之为玫瑰图、南丁格尔玫瑰图,又名鸡冠花图,是一种圆形的直方图。由于半径和面积的关系是平方的关系,极坐标区域图会将数据的比例大小夸大,尤其适合对比大小相近的数值,同时由于圆形有周期的特性,所以极坐标区域图也适用于表示一个周期内的时间概念,比如星期、月份。
极坐标图可用来显示一段时间内的数据变化,或显示各项之间的比较情况。适用于枚举的数据,比如不同地域之间的数据比较。
2、极坐标区域图的应用场景
1)适用场景
极坐标区域图适合比较大小相近的数值,因为图表会将数据的比例大小夸大,然后由于圆形具有周期的特性,也很适合用来表达周期内的时间概念。
2)不适用场景
极坐标区域图不适合于分类过少的场景或者部分分类数值过小的场景,也不适合表示趋势或者占比的数据。
library(ggplot2)
library(viridis)
library(scales)
df<-read.csv("第3章_类别比较型图表/PloarRange_Data.csv",sep=",",na.strings="NA",stringsAsFactors=FALSE)
df$date<-as.Date(df$date)
myAngle <-seq(-20,-340,length.out = 12)
ggplot(df, aes(date,
ymin = min.temperaturec,
ymax = max.temperaturec,
color = mean.temperaturec)) +
geom_linerange(size = 1.3, alpha = 0.75) +
scale_color_viridis("Temperature", option = "D") +
scale_x_date(labels = date_format("%m"), breaks = date_breaks("month")) +
ylim(-10, 35) +
coord_polar() +
theme_light() +
theme( panel.background = element_blank(),
panel.grid.major = element_line(colour = "grey80",size=.25),
axis.text.y = element_text(size = 12,colour="black"),
axis.line.y = element_line(size=0.25),
axis.text.x=element_text(size = 13,colour="black",angle = myAngle))
效果如下:
参考资料
《R语言数据可视化之美》
关注R小盐,关注科研私家菜(溦❤工众號: SciPrivate),有问题请联系R小盐。让我们一起来学习 R可视化之美之科研绘图