配色神器R-grafify
前言
这里介绍一下grafify这个包,虽然它只能做基础绘图和基础分析,比如说柱状图、点图和ANOVA,
但是它「做的图很漂亮」。这个配色,让我不禁想到了小洁老师的画图配色,真的有点像。
R-grafify的颜色展示
颜值党最关注的肯定是颜色了。
grafify的颜色对色盲友好,可以使用以下这些色盘。
默认的色板是其中okabe_ito:
离散/名称/分类变量可以使用:
okabe_ito`, `bright`, `contrast, dark`, `kelly`, `light`, `muted`,`pale`, `r4`,`safe`, `vibrant
连续变量可以使用(decrete=FALSE):
grey_conti`, `blue_conti`, `yellow_conti #连续色也是很明显的,毕竟是渐变色
分歧数据(也是连续变量)可以使用(decrete=FALSE):OrBl_div
, PrGn_div
(两头渐变)
grafify常用参数看过来:
对于plot_开头的系列函数(也就是grafify自带的函数们),「最常用三个参数」是ColPal
(使用哪一个色盘), ColSeq
(为FALSE时非连续挑选颜色,默认为TRUE),ColRev
(是否倒置颜色顺序)
由于是「和ggplot2联动」,所以也可以贴心的在ggplot种使用这些颜色:scale_fill_
and scale_colour_
(或者scale_color_
)。常用的参数也会调整为:Colseq(挑选非连续远距离颜色),reverse=TRUE(颜色倒序)
举几个栗子
- 1.颜色倒序
ggplot(data = InsectSprays, #data table
aes(x = spray, y = count))+
geom_point(size = 3,
aes(colour = spray))+
scale_colour_grafify(reverse = TRUE)+ #默认色盘倒序颜色
labs(title = "scale_colour_grafify",
subtitle = "reverse `okabe_ito` palette")+
theme_classic(base_size = 21)
- 2.Colseq---不连续的取色
- 3.连续的向量也能取色
ggplot(mtcars, aes(x = mpg, y = disp))+
geom_point(aes(fill = gear), #按照gear的数值映射颜色
size = 4, shape = 21)+
scale_fill_grafify(palette = "OrBl_div")+ #blue_conti是默认的
theme_classic(base_size = 21)+
labs("`yellow_conti` colour scheme")+
theme_classic(base_size = 21)
- 4.使用
plot_grafify_palette
函数,就可以查看每个色盘颜色长啥样(调色神器)
plot_grafify_palette(palette = "okabe_ito")
正式画图
以下是此包能够绘制的19张图
这里面一共又可以分为6个大类,接下来我们就针对6大类来绘制一下
1.双变量图(x是分类变量)(花式秀箱线图与小提琴图)
双变量需要的是长数据形式,默认顺序是data,xcol,ycol
柱状图:可以画散点图plot_dot...或者抖动图(针对稍微多的数据)plot_scatter... plot_scatterbar_sd & plot_dotbar_sd那就可以加上标准差
下面介绍常用参数:
bsize
:柱体粗细
ewid
:误差棒宽度
symsize or dotsize
:点大小
b_alpha
(bar alpha柱透明度)和 s_alpha
(symsize apha点透明度):控制透明度
jitter=0
针对的是scatter函数:不抖动
plot_scatterbar_sd(data_1w_death, #data
Genotype, #向量x
Death, #向量y
symsize = 3, fontsize = 25, #点与字体大小
b_alpha = 0.5,#柱状就设置半透明(凸显颜色)
s_alpha = 0.5,#点设置半透明
ColPal = "vibrant", #色盘
ColRev = T, #反颜色
ColSeq = F, #颜色远距离不连续
TextXAngle = 45,#字体倾斜
jitter=0)+ # 不抖动
labs(title = "complex")+ #设置标题
guides(fill = "none") # 无图例
- 箱线图:
plot_scatterbox
,plot_dotbox
; 同上,这里的b_alpha
的意思是box alpha箱体透明度
plot_scatterbox(data_t_pratio, #data
Genotype, #X轴
Cytokine, #Y轴
ColPal = "muted",#设置色盘
jitter = 0.1, #加入抖动
s_alpha = 0.7, #点透明度
b_alpha = 0)+ #箱体透明度
labs(title = "Scatter & box plot, `muted` palette",#加上大小标题
subtitle = "jitter & bar opacity")+
scale_y_log10()+ #对y轴范围取log
annotation_logticks(sides = "l") #在左侧加上指示位置
小提琴图:·plot_scatterviolin
,plot_dotviolin
小提琴图也差不多,其中特有的参数
其中添加了
s_alpha
还是点的透明度
v_alpha
小提琴透明度
b_alpha
里面的箱子的透明度
trim = FALSE
设置有无提琴头
#继续叠buff
plot_scatterviolin(data_t_pratio, #data
Genotype, #X轴
Cytokine, #Y轴
ColPal = "pale", fontsize = 25,#色盘
jitter = 0.2, #加抖动
s_alpha = 0.8,#点透明度
v_alpha = 0.2,#小提琴透明度
b_alpha = 0.5,#箱体透明度
bwid = 0.2, #箱体宽度
trim = T)+ #去除提亲两头
labs(title = "All in")+#标题
scale_y_log10()+ #log Y轴
annotation_logticks(sides = "l")+#加上log注释棒
guides(fill = "none")#不要图例
还有俩函数plot_bar_sd
& plot_point_sd
都是只展示均值和标准差。
2.多变量图(还可以加统计信息额)
可以绘制多于两个变量的柱状图箱线图等,还可以加上ANOVA统计!!!
- 柱状图
:plot_3d_scatterbar
,plot_4d_scatterbar
- 箱线图:
plot_scatterbox
,plot_dotbox
- 小提琴图:
plot_scatterviolin
,plot_dotviolin
其中可以大致的分为plot-3d以及plot-4d两个情况。plot3d可以做单因素方差分析,4d是双因素方差分析
- plot_3d_sctterbar & plot_3d_sctterbox
(1) 柱状图
plot_3d_scatterbar(data_1w_death,
Genotype, #x轴分组信息
Death, #y轴数值信息
Experiment, #区域因子(影响因素)
b_alpha = 0.5, #透明度
jitter = 0.4, #增加抖动
ColPal = "contrast", #色盘
ColRev = T)+ #逆转颜色
labs(title = "1way RB, bar/SD",
subtitle = "(`contrast` palette)")
#blocking factor就是区域因子也就是不重要但是会影响到实验的因素
plot_4d_scatterbar(data_2w_Tdeath, #数据
Genotype, #x轴分类因素
PI, #y轴数值型向量
Time, #第二个分类因子(双因素嘛)
Experiment, #blocking factor
b_alpha = 0.7, #透明度
ColPal = "okabe_ito")+ #色盘
labs(title = "2way/RM, bars/SD",
subtitle = "(shapes = randomised blocks)")
plot_4d_scatterbox(data_2w_Tdeath,
Genotype,
PI,
Time,
Experiment,
b_alpha = 0.7,
ColPal = "okabe_ito")+
labs(title = "2way/RM, box/whiskers",
subtitle = "(shapes = randomised blocks)")
3. 定量x-y图
- 三个变量都是数值型变量:
plot_xy_NumGroup
plot_xy_NumGroup(dplyr::filter(diamonds, cut == "Premium" & clarity == "SI1"),
depth, #x轴
price, #y轴
carat, #渐变的数据
s_alpha = .5, #点透明度
ColPal = "PrGn_div")+ #选取了分歧数据色盘
labs(title = "`PrGn_div` colour palette")
- 两个数值型变量加一个分类变量:
1plot_xy_CatGroup
plot_xy_CatGroup(data=neuralgia,
xcol= Age,
ycol= Duration,
CatGroup=Pain,#通过这个参数进行分组
symsize = 3,
ColPal = "vibrant")+ #palette
labs(title = "2 numeric & 1 categorical variable",
subtitle = "(reverse 'vibrant' palette, facet_wrap)")+
facet_wrap("Treatment")
4.前后对应图
有助于显示对应数据的变化情况。作图时依然需要长数据,此外还需要groups参数一列标注数据之间的对应关系。:
- 不同对应有不同的颜色:
plot_befafter_colours
(plot_befafter_colors
)
plot_befafter_colours(data_1w_death,
Genotype,
Death,
Experiment,
symsize = 4,
ColRev = T)+
labs(title = "Mutiple groups, matched colours",
subtitle = "(reversed `okabe_ito`)")
不同组间绘制前后图
plot_befafter_colours(data_2w_Tdeath,
Time,
PI,
Experiment,
symsize = 3)+
facet_wrap("Genotype")+#分面
labs(title = "Two-way repeated measures",
subtitle = "(matched shapes, `okabe_ito` palette)")
plot_befafter_shapes
plot_befafter_shapes(data_2w_Tdeath,#data
Time,#xcol
PI,#ycol
Experiment,#match
s_alpha= 0.7, #点透明度
symsize = 2, #点大小
symthick = 1.5, #描边宽度
ColPal = "contrast",#指定色盘
ColRev = T)+ #倒序颜色
facet_wrap("Genotype")+#分面
labs(title = "Two-way repeated measures\nmatched shapes",
subtitle = "(`contrast` palette reversed)")
#如果想要单色,直接使用SingleColour参数
plot_befafter_colours(data_t_pdiff,
Condition,
Mass,
Subject,
SingleColour = "ok_orange")#单色是橙色
plot_befafter_shapes(data_t_pdiff,
Condition,
Mass,
Subject,
SingleColour = "ok_bluegreen")#单色是形状
5.数据分布图
QQ图:plot_qqline
需要数据表,y值以及分组因子(如果有的话)
plot_qqline(data_t_pratio,
log(Cytokine), #log transformed-data
Genotype)+
labs(title = "QQ plot with log-transformation",
subtitle = "(`all_grafify` palette)")
密度图:plot_density
plot_density(data = chickwts,
ycol = weight,
group = feed,
TextXAngle = 45,
fontsize = 16)+
facet_wrap("feed") #这个分面真的好有用哎
直方图:plot_histogram
和geom_histgram几乎一致
plot_histogram(data = diamonds,
ycol = carat,
group = cut,
fontsize = 16)
分面来看
plot_histogram(data = diamonds,
ycol = carat,
group = cut,
TextXAngle = 45,
fontsize = 16)+
scale_x_log10()+ #log x轴
facet_wrap("cut") #分面
QQ图建模:plot_qqmodel
可以画线性模型的残差呢。这里她画的是学生残差,这个残差可以解决outlier将回归模型向outlier处‘拉’的情况。
计算方法为
详细介绍见:https://online.stat.psu.edu/stat462/node/247/
#创建一个线性模型
mod1 <- simple_model(data_2w_Festing,
"GST",
c("Treatment", "Strain"))
#画模型的残差
plot_qqmodel(mod1)
感兴趣的小伙伴还可以康康 相关的教学视频 以及官网。
相关文章
- FonePaw iPhone Data Recovery Mac(iphone数据恢复软件) v7.6.0激活版
- Metasploit 生成各种后门
- 5种高大上的yml文件读取方式,你知道吗?
- 我的图床解决方案
- MariaDB 连接查询
- 汽车网站导航菜单的设计技巧
- 博客最近的一些改变
- 使用 Prettier 格式化代码
- 树莓派超频
- 软件测试|selenium复用cookie,避开扫码或者输入密码
- 抛弃静态博客的缺点,用 ESHexoN 在线编辑!
- NPM 自动更新版本号
- Postfix + Extmail 企业邮件服务器搭建
- 构建ROP链实现远程栈溢出
- Nmap 扫描并生成HTML报告
- 软件测试|selenium复用已打开浏览器
- GTA5 如何替换各种人物模型
- Volatility 内存数字取证方法
- 汇编学习(12), SIMD之AVX(已完结)
- 红中私教:计网那点事(1)