• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      未分类

      • 首页
      • 博客
      • 未分类
      • ggplot2|theme主题设置,详解绘图优化-“精雕细琢”

      ggplot2|theme主题设置,详解绘图优化-“精雕细琢”

      • 发布者 一览
      • 分类 未分类
      • 日期 2020年3月8日
      • 评论 0评论

      学习了ggplot2的基本绘图元素ggplot2|详解八大基本绘图要素,可以初步绘制出需要展示的图形,legend可以对图例进行细节的修改ggplot2 |legend参数设置,图形精雕细琢,那theme有什么用呢?

      theme是解决图是否美观的一个工具,其与scale最大的区别在于不受数据左右。先把scale做好,就是一张合格的图;再处理theme,则是一张出色的图。

      载入数据,R包

      library(ggplot2)
      #载入数据
      data(diamonds)
      set.seed(1234)
      diamond <- diamonds[sample(nrow(diamonds), 2000), ]
      
      # 绘制初始图形
      p <- ggplot(data = diamond) +geom_point(aes(x=carat, y=price, colour=color,shape=cut)) + labs(title="学习ggplot2可视化",subtitle = "参数好多学不会?",caption = "熟能生巧")
      p

      可以看到上图的标题,轴标签和图例已经默认设置好了,是否可以个性化修改呢?当然可以!!!

      R控制台输入?theme即可以看到theme函数的大量参数,可以实现更改图形外观的大多数要求,有四种主要类型:

      1. element_text():使用element_text()函数设置基于文本的组件,如title,subtitle 和caption等。
      2. element_line():使用element_line()设置基于线的组件,如轴线,主网格线和次网格线等。
      3. element_rect():使用element_rect()修改基于矩形的组件,如绘图区域和面板区域的背景。
      4. element_blank():使用element_blank()关闭显示的主题内容。

      精雕细琢

      1 修改标题,坐标轴

      由于绘图和轴标题是文本组件,使用element_text()参数修改。

      设置title的尺寸,颜色,线高,位置

      p + theme(plot.title=element_text(size=20,
                                         face="bold",
                                         color="skyblue", #颜色
                                         hjust=0.5, #调整位置,正中间
                                         lineheight=1.2))

      设置subtitle和caption

      p + theme(plot.subtitle=element_text(size=15,
                                            face="bold",
                                            color = "red",
                                            hjust=0.5),  # subtitle
                 plot.caption=element_text(size=15))  # caption

      修改坐标轴

      p + theme(axis.title.x=element_text(vjust=1,  
                                           size=20),  # X axis title
                 axis.title.y=element_text(size=10,
                                          color = "blue"),  # Y axis title
                 axis.text.x=element_text(size=10,
                                          angle = 45,
                                          color = "red",
                                          vjust=.5),  # X axis text
                 axis.text.y=element_text(size=10))  # Y axis text

      以上示例涵盖了一些常用的主题修改,其中

      • vjust,控制标题(或标签)和绘图之间的垂直间距。
      • hjust,控制水平间距。将其设置为0.5将标题居中。
      • face,设置字体(“plain”,“italic”,“bold”,“bold.italic”)

      2 修改图例

      设置图例标题,文本和键的样式

      图例的关键是像元素一样的图形,因此使用element_rect()函数进行设置。

      p + theme(legend.title = element_text(size=15, color = "firebrick"),
                legend.text = element_text(size=10),
                legend.key=element_rect(fill='green'))

      删除图例和更改图例位置

      图例是主题的一个方面,因此可以使用theme()功能进行修改。其中legend.justification参数可以将图例设置在图中,legend.position参数用来将图例设置在图表区域,其中x和y轴的位置(0,0)是在图表的左下和(1,1)是右上角。

      # No legend --------------------------------------------------
      p + theme(legend.position="None") + labs(subtitle="No Legend")
      
      # legend at the bottom and horizontal ------------------------
      p + theme(legend.position="bottom", legend.box = "horizontal") + labs(subtitle="Legend bottom")
      
      # legend at bottom-right, inside the plot --------------------
      p + theme(legend.title = element_text(size=12, color = "salmon", face="bold"),
                legend.justification=c(1,0),
                legend.position=c(0.95, 0.05),  
                legend.background = element_blank(),
                legend.key = element_blank()) + 
       labs(subtitle="Legend: Bottom-Right Inside the Plot")

      3 修改绘图背景,主轴和次轴

      更改绘图背景

      # 更改绘图背景和绘图区域
      p + theme(panel.background = element_rect(fill = 'grey80'),
        plot.background=element_rect(fill="khaki"),
               plot.margin = unit(c(3, 2, 1, 1), "cm")) +  #设置绘图区域距离边的据类,上,右,下,左
         labs(title="Modified Background", subtitle="Change Plot Margin")  

      更改主次网格线以及X,Y坐标轴

      # Change Plot Background elements -----------------------------------
      p + theme(
               panel.grid.major = element_line(colour = "burlywood", size=1.5),
               panel.grid.minor = element_line(colour = "tomato",
                                               size=0.25,
                                               linetype = "dashed"),
               panel.border = element_blank(),
               axis.line.x = element_line(colour = "darkorange",
                                          size=1.5,
                                          lineend = "butt"),
               axis.line.y = element_line(colour = "skyblue",
                                          size=1.5)) +
         labs(
              subtitle="Change Major and Minor grid, Axis Lines")

      删除主,次网格线,边框,轴标题,文本和刻度

      p + theme(panel.grid.major = element_blank(), #主网格线
                panel.grid.minor = element_blank(), #次网格线
                panel.border = element_blank(), #边框
                axis.title = element_blank(),  #轴标题
                axis.text = element_blank(), # 文本
                axis.ticks = element_blank()) +
        labs(title="Modified Background", subtitle="Remove major and minor axis grid, border, axis title, text and ticks")

      4 默认主题以及自定义主题

      ggplot2 自带主题

      theme_grey()为默认主题,theme_bw()为白色背景主题,theme_classic()为经典主题。

      p + theme_bw() +
          labs(subtitle="Change theme_bw")

      ggplot2 扩展包主题

      library(ggthemes)
      p + theme_economist() +
          labs(subtitle="Change theme_economist")
      #其他可选
      
      #theme_economist theme_economist_white theme_wsj 	 	theme_excel theme_few	 
      
      #theme_foundation theme_igray 	theme_solarized theme_stata 	theme_tufte

      自定义主题

      可根据常见需要自定义常用主题

      p + theme_MJ() + labs(subtitle = "Change theme_MJ")


      学习ggplot2的八大基本元素,了解legend的基本设置后,现在也清楚了主题的相关设置,就可以画出一张出色的图了?

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      一览

      上一篇文章

      ggplot2|详解八大基本绘图要素
      2020年3月8日

      下一篇文章

      WES上游三款软件结果的探索
      2020年3月9日

      你可能也喜欢

      2-1675088548
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      30 1月, 2023
      9-1675131201
      如何快速批量修改 Git 提交记录中的用户信息
      26 1月, 2023
      8-1678501786
      肿瘤细胞通过改变CD8+ T细胞中的丙酮酸利用和琥珀酸信号来调控抗肿瘤免疫应答。
      7 12月, 2022

      留言 取消回复

      要发表评论,您必须先登录。

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?