R 反转绘图中x轴的比例
我已经在R轴和我自己的自定义x轴和y轴上创建了一个绘图。我希望x轴以相反的顺序显示(1-0乘以-.02)。我读过很多帖子和帖子,建议使用xlim和reverse-range,但我似乎无法让它起作用。绘制完成后,我还通过乘以100将轴标签转换为百分比(如代码中所示)。这是我到目前为止所拥有的R 反转绘图中x轴的比例,r,data-visualization,R,Data Visualization,我已经在R轴和我自己的自定义x轴和y轴上创建了一个绘图。我希望x轴以相反的顺序显示(1-0乘以-.02)。我读过很多帖子和帖子,建议使用xlim和reverse-range,但我似乎无法让它起作用。绘制完成后,我还通过乘以100将轴标签转换为百分比(如代码中所示)。这是我到目前为止所拥有的 plot(roc.val, xlab = "Specificity (%)", ylab = "Sensitivity (%)", axes = FALSE) axis(2, at = seq(0,1,by=
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轴比例,使值以20的增量从100开始到0结束?我认为这会创建一个y轴顺序相反的绘图:
x <- seq(-4, 4, length = 10)
y <- exp(x) / (1 + exp(x))
plot(x,y, ylim = rev(range(y)))
df修改马克·米勒的答案以解决类似问题(我通过寻找解决方案找到了这个主题),并在中找到了他的解决方案的变体。
基本上,如果要反转绘图中的X轴值,而不是使用ylim=rev(范围(y)),则可以使用xlim=rev(c(-4,4))
我发布这个解决方案是因为我需要一些非常简单的方法来解决我的问题。它的解决方案需要以正确的顺序绘制X轴值(且不反转)。首先,查看ggplot2
库以制作美观且可扩展的图形。这是Tidyverse方法的一部分,如果你没有接触过它,它将改变游戏规则
例如,要使用ggplot解决问题,只需在图形中添加术语scale\u x\u reverse()
见:
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)
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)
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)))
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)