美文网首页GEO
ggplot2截断纵坐标--后续

ggplot2截断纵坐标--后续

作者: 小洁忘了怎么分身 | 来源:发表于2020-04-28 14:25 被阅读0次

前情提要

ggplot2不能截断纵坐标肿么办
讲了几种截断方法,各有长短,我在这篇文章发出去后收到两个反馈,特来与大家分享​

新方法1.拼图

出处:https://huifangliu.github.io/2018/06/01/R语言-ggplot2画图如何截断-y-轴/


实现从A到B,上下两部分图画出来,然后拼到一起即可

(1)举重若轻三步走

#导入包
library(ggplot2)
library(ggpubr)
#数据
data <- data.frame(x = c("Alpha","Bravo","Charlie","Delta"),y=c(200,20,10,15))
#画下面
p1 <- ggplot(data,aes(x=x,y=y,fill=x)) + 
  geom_bar(stat='identity',position=position_dodge()) +
  labs(x=NULL,y=NULL,fill=NULL)+    #可自定义标签名字
  coord_cartesian(ylim = c(0,25))   #设置下面一半的值域
#画上面
p2 <- ggplot(data,aes(x=x,y=y,fill=x)) + geom_bar(stat='identity',position=position_dodge()) +
  labs(x=NULL,y=NULL,fill=NULL) +   #不要标签
  theme(axis.text.x = element_blank(),axis.ticks.x = element_blank()) +     #去掉X轴和X轴的文字
  coord_cartesian(ylim = c(195,205)) +  #设置上面一半的值域
  scale_y_continuous(breaks = c(195,205,5)) #以5为单位划分Y轴
#拼起来
ggarrange(p2,p1,heights=c(1/5, 4/5),ncol = 1, nrow = 2,common.legend = TRUE,legend="right",align = "v")

重点在于:设置y轴值域,设置p2的刻度、不要x轴标签和名字,以及拼图设置高度比。

(2)patchwork拼图也很可

library(patchwork)
p2 <- ggplot(data,aes(x=x,y=y,fill=x)) + geom_bar(stat='identity',position=position_dodge()) +
  labs(x=NULL,y=NULL,fill=NULL) +   #不要标签
  theme(axis.text.x = element_blank(),axis.ticks.x = element_blank(),legend.position = "none") +    #去掉X轴和X轴的文字
  coord_cartesian(ylim = c(195,205)) +  #设置上面一半的值域
  scale_y_continuous(breaks = c(195,205,5)) #以5为单位划分Y轴


layout <- '
A
B
B
B
B
'
p2 + p1 + plot_layout(design = layout)

2.新方法2:gg.gap包

上次的文章发出去后,gg.gap包的作者chris_lou给我留言,可以用他的包!我一看,果然是非常好用!

分享能带来什么呢,曾以为就是自己记录下来,印象深刻,顺便可以帮助一下别人。这次不一样,有被帮助到!感谢大佬!

下面的代码来自包的帮助文档,套在刚才的数据上。

#install.packages("gg.gap")
library(gg.gap)
library(ggplot2)
library(patchwork)
#数据
data <-
  data.frame(x = c("Alpha", "Bravo", "Charlie", "Delta"),
             y = c(200, 20, 10, 15))
#画图
p1 = ggplot(data, aes(x = x, y = y, fill = x)) +
  geom_bar(stat = 'identity', position = position_dodge(),show.legend = FALSE) +
  theme_bw() +
  labs(x = NULL, y = NULL)

p1
p2 =gg.gap(plot = p1,
           segments = c(25, 190),
           tick_width = 10,
           rel_heights = c(0.25, 0, 0.1),
           ylim = c(0, 200)
           )
p1+p2

segments是表示切分位置的向量,tick_width是刻度单位,rel_height表示切分成的两段它的高度比例。高度比例可以多次调整,让上下两部分看起来整体度高一些。

和上面的方法是相似的~但是做成包更香!

相关文章

  • ggplot2截断纵坐标--后续

    前情提要 ggplot2不能截断纵坐标肿么办讲了几种截断方法,各有长短,我在这篇文章发出去后收到两个反馈,特来与大...

  • ggplot2不能截断纵坐标肿么办

    需求 昨晚讲到绘图,学员提出需求绘制类似这样的图,引起了我的兴趣: 第一组的纵坐标与其他组相差较大,需要截断。 R...

  • 代码库4-ggplot2代码

    将“ excel式”数据转换为“ggplot2式”数据 对UMAP横纵坐标进行简化 散点图设置图例颜色和大小范围 ...

  • ggplot2 + 截断y轴

    利用patchwork可以做出坐标轴截断的样子。

  • 发送自定义广播

    一、发送标准广播 二、发送有序广播 截断广播: 截断后,后续的接收器就不会接收到广播了。 接收广播的先后顺序:优先...

  • R ggplot2解决中文乱码

    ggplot2 横纵坐标需要显示为中文,正常情况下显示为乱码。 查了百度,一致的解决方法是修改family来调整语...

  • R可视化:ggplot截断y坐标图 gg.gap

    在画图的时候,某些分组的value偏大,可视化的时候需要对y轴的数值进行截断处理。因为常使用ggplot2包作图,...

  • 截断

    由耳朵开始 钻进音乐 像蜡烛 软化 而后被怒火点燃 一缕缕黑烟—— 从脚尖蔓延 冰冻般的孤寂 僵硬 被黄昏击碎 一...

  • 方位,翻转,轴对称

    【实操1】知识点 1横纵坐标。要求会熟练地用横纵坐标表示平面上任意一个点。 2观察,当平板上的几个点在同一纵坐标上...

  • 前端开发入门到实战:css单行截断和多行截断问题

    单行截断: 多行截断: 多行截断有好几种方法, 1: 最简单,使用-webkit-line-clamp , 当然了...

网友评论

    本文标题:ggplot2截断纵坐标--后续

    本文链接:https://www.haomeiwen.com/subject/xjxvwhtx.html