上一篇文章中我们了解了条形图的R小姐实现过程,利用条形图我们展示不同类别数据之间的数量关系。
对于类别较小的数据我们当然可以这做,那么当类别较多时又该怎么办呢?
1
入门
本期所用数据
image
library(gcookbook)
library(ggplot2)
library(dplyr)#入门#取出数据框前20行,3个对应列tophit <- tophitters2001[1:20,c('name','lg','avg')]
ggplot(tophit,aes(x=avg,y=name)) + #设置点的形状、大小、填充色
geom_point(shape=21,size=3,fill='red') + #默认主题背景灰色,网格白色
theme_gray()
image
ggplot(tophit,aes(x=avg,y=name)) + #设置点的形状、大小、填充色 geom_point(shape=21,size=3,fill='red') + #自定义主题背景白色,网格灰色 theme_bw()
image
2
进阶
#进阶#reorder函数将name按照avg的大小重新排列ggplot(tophit,aes(x=reorder(name,avg),y=avg)) + ##设置点的形状、大小、填充色 geom_point(shape=21,size=3,fill='#00CED1',colour='#00CED1') + #设置X轴的名称 xlab(label = 'Name') + #设置Y轴的名称 ylab(label = 'Avg') + #自定义主题 theme_bw() + #更改主题元素:文本倾斜60°角,hjust的取值范围0-1,大家自己尝试一下 theme(axis.text.x = element_text(angle = 60,hjust = 1), #删除Y轴的主刻度线 panel.grid.major.y = element_blank(), #删除Y轴的次刻度线 panel.grid.minor.y = element_blank(), #设置X轴主刻度线的颜色和类型 panel.grid.major.x = element_line(colour = 'orange',linetype = 'dashed')) + #设置线段到数据点出结束 geom_segment(aes(xend=name),yend=0,colour='#00CED1')
image
3
精通
#精通#利用order函数先对lg排序,再对avg排序nameorder <- tophit$name[order(tophit$lg,tophit$avg)]#将toptip数据中的name变量按照上面的排序规则转换为因子tophit$name <- factor(tophit$name,levels = nameorder)#利用lg变量对数据分组ggplot(tophit,aes(x=avg,y=name,colour=lg)) + #设置线段到数据点出结束,和颜色
geom_segment(aes(yend=name),xend=0,colour='grey60') + #设置点的大小
geom_point(size=3) + #设置点的填充色
scale_colour_manual(values = c('lightblue','pink')) + #设置主题
theme_bw() + #删除Y轴主刻度线
theme(panel.grid.major.y = element_blank(), #设置图例的位置,两参数范围均为0-1
legend.position = c(0.9,0.55))
image
本期的重点是主题参数的调节,在下绘制了一份简略的思维导图,望笑纳。
image
作者:此地古同
链接:https://www.jianshu.com/p/c12205f6c7ce
x
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4236/viewspace-2819323/ ,如需转载,请注明出处,否则将追究法律责任。