首页 > 解决方案 > 当 y 轴反转时,防止 x 轴标签移动到绘图顶部

问题描述

我最近更新了一些软件包,我认为它改变了我用来创建 96 孔板布局的一些代码的行为。

这是代码:

ggplot(NULL, aes(x=Column, y=Row)) +
  geom_point(data=expand.grid(seq(1, 12), seq(1,8)), 
             aes(x=Var1, y=Var2),
             color="grey90", 
             fill="white", 
             shape=21, 
             size=12) +
  coord_fixed(ratio=(13/12)/(9/8), 
              xlim=c(0.5, 12.5), 
              ylim=c(0.5, 8.5)) +
  scale_y_reverse(breaks=seq(1, 8),
                  labels=LETTERS[1:8]) +
  scale_x_continuous(breaks=seq(1, 12))

图1

如果我不反转 y 轴,我对 x 轴没有任何问题:

ggplot(NULL, aes(x=Column, y=Row)) +
  geom_point(data=expand.grid(seq(1, 12), seq(1,8)), 
             aes(x=Var1, y=Var2),
             color="grey90", 
             fill="white", 
             shape=21, 
             size=12) +
  coord_fixed(ratio=(13/12)/(9/8), 
              xlim=c(0.5, 12.5), 
              ylim=c(0.5, 8.5)) +
  scale_y_continuous(breaks=seq(1, 8),
                  labels=LETTERS[1:8]) +
  scale_x_continuous(breaks=seq(1, 12))

图 2

寻找一种在不弄乱 x 轴的情况下生成 y 轴反转的绘图的方法。作为奖励,我一直在尝试想出一种方法,使点的大小与图形的大小一起缩放,以便在缩小绘图大小时它们不会重叠: 图 3

标签: rggplot2

解决方案


反过来是由于笛卡尔平面是如何实现的。为避免这种情况,请改用相反的ylim = c(8.5, 0.5)

ggplot(NULL, aes(x=Column, y=Row)) +
  geom_point(data=expand.grid(seq(1, 12), seq(1,8)), 
             aes(x=Var1, y=Var2),
             color="grey90", 
             fill="white", 
             shape=21, 
             size=12) +
  coord_fixed(ratio=(13/12)/(9/8), 
              xlim=c(0.5, 12.5), 
              ylim=c(8.5, 0.5)) +  
  scale_y_reverse(breaks=seq(1, 8),
                  labels=LETTERS[1:8]) +
  scale_x_continuous(breaks=seq(1, 12))

在此处输入图像描述


推荐阅读