R:镜像 y 轴的绘图

发布于 2024-11-04 11:11:20 字数 425 浏览 0 评论 0原文

我有这个问题。我有一个热图(但我想这适用于每个图),但我需要镜像我的 y 轴。

我这里有一些示例代码:

library(gstat)
x <- seq(1,50,length=50)
y <- seq(1,50,length=50)
z <- rnorm(1000)
df <- data.frame(x=x,y=y,z=z)
image(df,col=heat.colors(256)) 

这将生成以下热图 第一个热图 但我需要镜像 y 轴。从顶部 0 开始,底部 50 开始。有人知道我必须做什么才能改变这一点吗? 镜像热图

I have this problem. I got a heatmap, (but i suppose this applies to every plot) but I need to mirror my y-axis.

I got here some example code:

library(gstat)
x <- seq(1,50,length=50)
y <- seq(1,50,length=50)
z <- rnorm(1000)
df <- data.frame(x=x,y=y,z=z)
image(df,col=heat.colors(256)) 

This will generate the following heatmap
First heatmap
But I need the y-axis mirrored. Starting with 0 on the top and 50 on the bottom. Does anybody has a clue as to what I must do to change this?
mirrored heatmap

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

一场信仰旅途 2024-11-11 11:11:20

请参阅 ?plot.default 的帮助页面,其中指定

xlim:绘图的 x 限制 (x1, x2)。注意'x1> x2' 是
允许并导致“反转轴”。

library(gstat)
x <- seq(1,50,length=50)
y <- seq(1,50,length=50)
z <- rnorm(1000)
df <- data.frame(x=x,y=y,z=z)

所以

image(df,col=heat.colors(256), ylim = rev(range(y)))

See the help page for ?plot.default, which specifies

xlim: the x limits (x1, x2) of the plot. Note that ‘x1 > x2’ is
allowed and leads to a ‘reversed axis’.

library(gstat)
x <- seq(1,50,length=50)
y <- seq(1,50,length=50)
z <- rnorm(1000)
df <- data.frame(x=x,y=y,z=z)

So

image(df,col=heat.colors(256), ylim = rev(range(y)))
别闹i 2024-11-11 11:11:20

这对你有用吗(不过,这有点黑客行为)?

df2<-df
df2$y<-50-df2$y #reverse oredr
image(df2,col=heat.colors(256),yaxt="n") #avoid y axis
axis(2, at=c(0,10,20,30,40,50), labels=c(50,40,30,20,10,0)) #draw y axis manually

Does this work for you (it's a bit of a hack, though)?

df2<-df
df2$y<-50-df2$y #reverse oredr
image(df2,col=heat.colors(256),yaxt="n") #avoid y axis
axis(2, at=c(0,10,20,30,40,50), labels=c(50,40,30,20,10,0)) #draw y axis manually
饮湿 2024-11-11 11:11:20

plotrix 包中的 revaxis 函数“反转 'x' 和 'y' 轴中的一个或两个轴的方向”。它不能解决您的问题(尼克的解决方案是正确的),但当您需要绘制具有反转轴的散点图时,它可能很有用。

The revaxis function in the plotrix package "reverses the sense of either or both the ‘x’ and ‘y’ axes". It doesn't solve your problem (Nick's solution is the correct one) but can be useful when you need to plot a scatterplot with reversed axes.

情域 2024-11-11 11:11:20

我会像这样使用 rev

df <- data.frame(x=x,y=rev(y),z=z)

如果您不知道,请注意 df 实际上是一个函数。覆盖时您可能要小心。如果您 rm(df),一切都会恢复正常。

不要忘记按照尼克的建议重新标记 y 轴。

I would use rev like so:

df <- data.frame(x=x,y=rev(y),z=z)

In case you were not aware, notice that df is actually a function. You might want to be careful when overwriting. If you rm(df), things will go back to normal.

Don't forget to relabel the y axis as Nick suggests.

金橙橙 2024-11-11 11:11:20

对于垂直轴向下增加的情况,我为以下问题提供了两种方法(两个不同的答案):

R - 像素矩阵的图像?

For the vertical axis increasing in the downward direction, I provided two ways (two different answers) for the following question:

R - image of a pixel matrix?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文