反转图中 x 轴的比例

问题描述 投票:0回答:4

我在 R 中创建了一个绘图和我自己的自定义 x 轴和 y 轴。我希望 x 轴以相反的顺序显示(1-0 x -.02)。我已经阅读了许多建议使用 xlim 和 reverse range 的帖子和线程,但我似乎无法让它工作。绘制后,我还通过乘以 100 将轴标签转换为百分比(如您将在代码中看到的那样)。这是我到目前为止所拥有的;

plot(roc.val, xlab = "Specificity (%)", ylab = "Sensitivity (%)", axes = FALSE)
axis(2, at = seq(0,1,by=.2), labels = paste(100*seq(0,1, by=.2)), tick = TRUE)
axis(1, at = seq(0,1,by=.2), labels = paste(100*seq(0,1, by=.2)), tick = TRUE)

如何反转 x 轴刻度,使值从 100 开始到 0 结束,增量为 20?

r data-visualization
4个回答
15
投票

我认为这会创建一个 y 轴倒序的图:

x <- seq(-4, 4, length = 10)
y <- exp(x) / (1 + exp(x))
plot(x,y, ylim = rev(range(y)))

这将删除轴值:

x <- seq(-4, 4, length = 10)
y <- exp(x) / (1 + exp(x))
plot(x,y, ylim = rev(range(y)), labels = FALSE)

我猜你可以用你的线的变化来分配你想要的轴值:

axis(2, at = seq(0,1,by=.2), labels = paste(100*seq(0,1, by=.2)), tick = TRUE)
axis(1, at = seq(0,1,by=.2), labels = paste(100*seq(0,1, by=.2)), tick = TRUE)

3
投票
df <- data.frame(x=seq(0,1, length.out=50), y=seq(0, 1, length.out=50))
plot(df)

df$x1 <- (max(df$x) - df$x)/ (max(df$x) - min(df$x))
plot(df$x1, df$y, axes=F, xlab = "Specificity (%)", ylab = "Sensitivity (%)")
axis(2, at = seq(0,1,by=.2), labels = paste(100*seq(0,1, by=.2)), tick = TRUE)
axis(1, at = seq(0,1,by=.2), labels = paste(100*seq(1,0, by=-.2)), tick = TRUE)


3
投票

采用 Mark Miller 的答案来解决类似的问题(我通过寻找解决方案找到了这个主题)并且我在 https://tolstoy.newcastle.edu.au/R/help/05/03 中找到了他的解决方案的变体/0342.html.
基本上如果你想反转图中的 X 轴值,而不是使用 ylim=rev(range(y)),你可以使用 xlim=rev(c(-4,4))。

x <- seq(-4, 4, length = 10)
y <- exp(x) / (1 + exp(x))
par(mfrow=c(1,2))
plot(x, y, ylim=range(y), xlim=c(-4, 4))
plot(x, y, ylim=range(y), xlim=rev(c(-4, 4)))

plot1

如果你想保持 x 轴值的真实顺序,你可以使用这个:

par(mfrow=c(1,1))
plot(x, y, ylim=range(y), xlim=c(-4, 4), axes=FALSE)
par(new=TRUE)
plot(-100, -100, ylim=range(y), xlim=c(-4, 4), axes=FALSE, xlab="", ylab="", main="")
axis(1, at = seq(-4,4,by=1), labels = seq(-4,4,by=1), tick = TRUE)
axis(2, at = seq(0,1,by=.2), labels = paste(100*seq(0,1, by=.2)), tick = TRUE)

plot2

我发布这个解决方案是因为我需要一些非常直接的方法来解决我的问题。它的解决方案需要以正确的顺序(而不是颠倒)绘制具有 X 轴值的图。


0
投票

首先,查看

ggplot2
库以制作漂亮且可扩展的图形。它是 R 的 Tidyverse 方法的一部分,如果您还没有接触过它,它就是游戏规则的改变者。

例如,要使用 ggplot 解决您的问题,您只需将术语

scale_x_reverse()
添加到您的图形中。

参见:http://ggplot.yhathq.com/docs/scale_x_reverse.html

© www.soinside.com 2019 - 2024. All rights reserved.