「R绘图技巧」基于ggplot2包绘制的图形设置坐标轴以百分比或者对数样式显示!!!

文摘   科学   2024-10-04 09:05   宁夏  





为了避免各位错过最新的推文教程,强烈建议大家将“科研后花园”设置为“星标”!






1、设置坐标轴以百分比形式显示:

#加载包
library(ggplot2)
library(ggprism)
library(reshape)
library(ggalluvial)


#构造数据
df<-data.frame(Species=c('Species01','Species02','Species03','Species04','Species05'),
               A=c(0.3,0.25,0.1,0.2,0.15),
               B=c(0.6,0.1,0.05,0.2,0.05),
               C=c(0.4,0.2,0.1,0.15,0.15),
               D=c(0.1,0.2,0.3,0.3,0.1))
#变量格式转换,宽数据转化为长数据,方便后续作图
df1 <- melt(df,id.vars = 'Species',measure.vars = c('A','B','C','D'))
names(df1)[1:2] <- c("group","X")  #修改列名

#绘图
ggplot(df1, aes( x = X,y=value,fill = group,
                 stratum = group, alluvium = group))+
  geom_stratum(width = 0.7, color='white')+
  # geom_flow(alpha = 0.3,width = 0.5)+
  geom_alluvium(alpha = 0.5,#透明度
                width = 0.7,#宽度
                color='white',#间隔颜色
                size = 1,#间隔宽度
                curve_type = "linear")

1)第一种样式:通过将坐标轴扩大100倍使其显示为百分比数值,再在轴标题中添加(%)以表明该轴为百分比样式:
ggplot(df1, aes( x = X,y=100*value,fill = group,
                 stratum = group, alluvium = group))+
  geom_stratum(width = 0.7, color='white')+
  # geom_flow(alpha = 0.3,width = 0.5)+
  geom_alluvium(alpha = 0.5,#透明度
                width = 0.7,#宽度
                color='white',#间隔颜色
                size = 1,#间隔宽度
                curve_type = "linear")+#曲线形状,有linear、cubic、quintic、sine、arctangent、sigmoid几种类型可供调整
  scale_y_continuous(expand = c(0,0))+#
  scale_x_discrete(expand = c(0,0))+# 调整x轴属性,使柱子与X轴坐标接触
  labs(x="Samples",y="Relative Abundance(%)",#设置X轴和Y轴的名称以及添加标题
       fill="group")+
  theme_bw()+
  scale_fill_prism(palette = "candy_bright", name = NULL)+#使用ggprism包修改颜色
  theme(legend.position = 'right',
        axis.text.y = element_text(color = "red", size = 10),
        axis.line.y = element_line(color = "red"),
        axis.ticks.y = element_line(color = "red"))

2)第二种样式:直接在scale_y/x_continuous()中设置坐标轴刻度以百分比样式显示:
ggplot(df1, aes( x = X,y=value,fill = group,
                 stratum = group, alluvium = group))+
  geom_stratum(width = 0.7, color='white')+
  # geom_flow(alpha = 0.3,width = 0.5)+
  geom_alluvium(alpha = 0.5,#透明度
                width = 0.7,#宽度
                color='white',#间隔颜色
                size = 1,#间隔宽度
                curve_type = "linear")+#曲线形状,有linear、cubic、quintic、sine、arctangent、sigmoid几种类型可供调整
  scale_y_continuous(expand = c(0,0),
                     limits = c(0,1),
                     breaks = c(0,0.25,0.50,0.75,1),
                     labels = c("0%","25%","50%","75%","100%"))+#
  scale_x_discrete(expand = c(0,0))+# 调整x轴属性,使柱子与X轴坐标接触
  labs(x="Samples",y="Relative Abundance",#设置X轴和Y轴的名称以及添加标题
       fill="group")+
  theme_bw()+
  scale_fill_prism(palette = "candy_bright", name = NULL)+#使用ggprism包修改颜色
  theme(legend.position = 'right',
        axis.text.y = element_text(color = "red", size = 10),
        axis.line.y = element_line(color = "red"),
        axis.ticks.y = element_line(color = "red"))

2、设置坐标轴以对数形式显示:

library(palmerpenguins) # Palmer Archipelago (Antarctica) Penguin Data
library(tidyverse) # Easily Install and Load the 'Tidyverse'
library(scales)

#使用palmerpenguin包中的数据
df <- penguins
#使用tidyverse包对数据进行处理
df <- df %>% 
  drop_na()
##绘制一个简单的箱线图
p <- ggplot(df, aes(species, flipper_length_mm))+
  geom_boxplot(aes(fill = species))
p

1)log10:
##log10
p+scale_y_continuous(
  trans = log_trans(),
  breaks = trans_breaks("log10"function(x) 10^(x)),
  labels = trans_format("log10", math_format(10^.x))
)

2)log2:
##log2
p+scale_y_continuous(
  trans = log_trans(),
  breaks = trans_breaks("log2"function(x) 2^(x)),
  labels = trans_format("log2", math_format(2^.x)))

3)自然对数:
##自然对数
p+scale_y_continuous(
  trans = log_trans(),
  breaks = trans_breaks("log"function(x) exp(x)),
  labels = trans_format("log", math_format(e^.x))
)

4)坐标轴只显示指数,轴标题提示该轴意义:
ggplot(df, aes(species, log10(flipper_length_mm)))+
  geom_boxplot(aes(fill = species))

PS: 以上内容是小编个人学习代码笔记分享,仅供参考学习,欢迎大家一起交流学习。 

R绘图模板合集(包括附带注释的源码、测试数据及绘制效果图)可在公众号后台菜单栏→R代码查看具体获取方式!

绘图模板合集效果图展示:




往期推荐

「R绘图模板」跟着New Phytologist学绘图—共发生网络图的绘制!!!!!!


「R绘图模板」并列箱线图+散点+气泡图+分组+显著性!!!


「R绘图模板」气泡图+非等宽分面+分组!!!


「R绘图模板」箱线图+散点+均值连线+显著性的箱上箱下标注!!!


「R绘图模板」环形多组火山图+标签!!!


「R绘图模板」组合图系列—相对丰度柱状堆积图+单组柱状图+显著性!!!


「R绘图模板」气泡图+分组+标签+拟合曲线!!!


「R绘图模板」多变量热图+r值+p值+其他变量!!!


「R绘图模板」用于两组比较的多图形并列组合图-小提琴图+箱线图+散点图!!!


「R绘图模板」跟着Science学绘图—世界地图+采样点标记气泡图+分布频率注释侧图!!!


「R绘图模板」基因注释+箭头图+分面+标签!!!


「R绘图模板」组合图系列-箱线图+散点+分组散点注释!!!


「R绘图模板」世界地图+采样点标记+柱状堆积图!!!


「R绘图模板」环形无分组排序柱状堆积图!!!


「R绘图模板」多y轴组合图-柱状堆积图+箱线图!!!


「R绘图模板」环形分组气泡图(重发版-修改标题)!!!


「R绘图模板」蝶形图系列-并列箱线图与并列柱状图组合!!!


「R绘图模板」mantel test分析拓展——多样式多形式展示数据!!!


「R绘图模板」多层嵌套柱状图+字母标记+标签嵌套!!!


「R绘图模板」3D热图的绘制!!!


「R绘图模板」进化树+分组注释+配对连线!!!


「R绘图模板」组合图-并列柱状图+数字标签+误差棒+占比饼图!!!


「R绘图模板」箱线图+显著性差异着色+分组差异检验!!!


「R绘图模板」柱状堆积图+柱间连线+文本标签+误差棒+字母标记!!!


「R绘图模板」环形分组散点图+误差棒+分组标签+灰白间隔背景+辅助线!!!


「R绘图模板」箱线图+散点+配对连线+显著性+分面!!!


「R绘图模板」组合图-进化树+柱状图+箱线图+热图!!!


「R绘图模板」内向环形柱状图+分组+分面!!!


「R绘图模板」层级网络图的绘制!!!


「R绘图模板」世界地图+采样点标记+分组条形图+柱状图嵌套!!!


「R绘图模板」多分组箱线图+不同组字母标记+条纹填充!!!


「R绘图模板」并列柱状图+不同组字母标记+组间显著性标记!!!


「R绘图模板」mantel test拓展—多图绘制与组合!!!


「R绘图模板」热图+分组+配对连线+统计差异!!!


「R绘图模板」跟着Food Chemistry学绘图——散点+误差棒+折线+字母标记!!!


「R绘图模板」环状箱线图+分组+显著性+均值标记!!!


「R绘图模板」环形水平条形图+柱状堆积图的绘制方法!!!!!!


「R绘图模板」嵌套柱状图+显著性+字母标记!!!


「R绘图模板」跟着Nature Communications学绘图—世界地图+采样点标记+饼图+柱状图!!!


「R绘图模板」跟着Nature Communications学绘图—并列柱状堆积图+误差线+显著性!!!


「R绘图模板」双层环形热图+不同方式显著性标注!!!


R绘图模板——成比例Venn图的绘制!!!


R绘图模板——网络图+微生物丰度与基因间的相关性+正负相关(粉丝投稿)!!!


R可视化——一文带你打通ggplot2个性化绘制柱状图(条形图)!!!


R可视化——一文带你打通ggplot2个性化绘制箱线图(更新版)!!!


R可视化——一文带你打通ggplot2个性化绘制散点图!!!


科研后花园
专注于R语言绘图及数据分析!
 最新文章