做柱形图的时候如果要区分不同的类别 最直观的方式就是用不同的颜色,但是有的期刊如果要求黑白灰配色的话,用颜色可能就不太好区分,这个时候可以用添加底纹的形式。R语言的
ggplot2
包没有提供直接绘制带有底纹的柱形图的函数,如果想要实现需要借助扩展包patternplot
,参考链接 https://cran.r-project.org/web/packages/patternplot/vignettes/patternplot-intro.html
下面介绍几个简单小例子
第一次使用这个包需要安装,直接运行install.packages("patternplot")
命令进行安装
第一个是普通的柱形图
示例数据
画图代码
代码语言:javascript复制library(patternplot)
library(readxl)
library(ggplot2)
df1<-read_excel("patternplot/patternplot_example.xlsx",
sheet = "Sheet1")
df1
patternbar(df1,x,y,
density = c(10,10,10),
pattern.type = c('hdashes', 'blank', 'crosshatch'))
scale_y_continuous(expand = c(0,0),
limits = c(0,15))
这里画图函数是patternbar()
必须的参数
- 数据集
- 代表x轴的变量名
- 代表y轴的变量
- density是底纹的密度
- pattern.type是底纹的类型
通过 ?patternbar
命令查看帮助文档 ,底纹的类型有a vector of patterns to be filled in the bars The pattern types include: 'blank', 'bricks', 'vdashes', 'hdashes', 'crosshatch','dots', 'grid','hlines','nelines', 'nwlines', 'vlines', 'waves' and more.
画个图会更直观
代码语言:javascript复制df<-data.frame(x=LETTERS[1:10],y=1:10)
df
pattern_type<-c('blank', 'bricks', 'vdashes',
'hdashes', 'crosshatch','hlines',
'nelines', 'nwlines', 'vlines','waves')
a<-factor(df$x)
b<-df$y
patternbar(df,a,b,
density = rep(10,10),
pattern.type = pattern_type)
scale_y_continuous(expand = c(0,0),
limits = c(0,12))
这里还有一个类型是 dots,如果用这个类型会遇到报错Error in readPNG(paste(location, "/", pattern.type[i], ".png", sep = "")) : unable to open C:/Users/pome/AppData/Local/Temp/Rtmp2Lr3pm/dots.png
暂时不知道是什么原因
簇状柱形图重复的时候一直遇到报错 暂时还不知道如何解决 今天的内容先到这里了