如何使用“geom_raster()”反转y轴?

如何使用“geom_raster()”反转y轴?,r,ggplot2,R,Ggplot2,我想将y轴从a显示到d,而不是从d显示到a缩放y离散()在这种情况下不起作用。有人知道怎么倒车吗?谢谢 library(ggplot2) m=3 n=4 dat=expand.grid(x=letters[seq_len(m)], y=letters[seq_len(n)]) dat$z=rnorm(m*n) ggplot(dat, aes(x=x, y=y, fill=z)) + geom_raster() 一般来说,最好使用set.seed(),这样人们就可以准确地重现您的结果。也就是说,

我想将y轴从
a
显示到
d
,而不是从
d
显示到
a
<代码>缩放y离散()在这种情况下不起作用。有人知道怎么倒车吗?谢谢

library(ggplot2)
m=3
n=4
dat=expand.grid(x=letters[seq_len(m)], y=letters[seq_len(n)])
dat$z=rnorm(m*n)
ggplot(dat, aes(x=x, y=y, fill=z)) + geom_raster()

一般来说,最好使用
set.seed()
,这样人们就可以准确地重现您的结果。也就是说,您有两种选择:(1)在
ggplot
调用中重新排序因子级别,或(2)在数据中重新排序因子级别。一般来说,我更喜欢在手之前编辑数据,因为它简化了
ggplot
调用,并使您能够更好地控制正在发生的事情

数据:

set.seed(1)
library(ggplot2)
m=3;n=4
dat=expand.grid(x=letters[seq_len(m)], y=letters[seq_len(n)])
dat$z=rnorm(m*n)
ggplot(dat, aes(x=x, y=y, fill=z)) + geom_raster() + 
         scale_y_discrete(limits = rev(levels(dat$y)))
dat$y <- factor(dat$y, levels = rev(levels(dat$y)))
ggplot(dat, aes(x=x, y=y, fill=z)) + geom_raster()
选项1。在ggplot中重新排序:

set.seed(1)
library(ggplot2)
m=3;n=4
dat=expand.grid(x=letters[seq_len(m)], y=letters[seq_len(n)])
dat$z=rnorm(m*n)
ggplot(dat, aes(x=x, y=y, fill=z)) + geom_raster() + 
         scale_y_discrete(limits = rev(levels(dat$y)))
dat$y <- factor(dat$y, levels = rev(levels(dat$y)))
ggplot(dat, aes(x=x, y=y, fill=z)) + geom_raster()
选项2。在数据中重新排序:

set.seed(1)
library(ggplot2)
m=3;n=4
dat=expand.grid(x=letters[seq_len(m)], y=letters[seq_len(n)])
dat$z=rnorm(m*n)
ggplot(dat, aes(x=x, y=y, fill=z)) + geom_raster() + 
         scale_y_discrete(limits = rev(levels(dat$y)))
dat$y <- factor(dat$y, levels = rev(levels(dat$y)))
ggplot(dat, aes(x=x, y=y, fill=z)) + geom_raster()

dat$y在将数据输入
ggplot
之前,您是否可以对数据重新排序?根据您的特定代码,对于选项
limits=rev(data$y)
,您可能需要什么。