基本问题,ggplot似乎并没有达到我的期望。
ggplot(data=data.frame( x=c(-1,2),y=c(-1,2) ), aes(x=x,y=y)) +
geom_blank() +
geom_abline(slope = -1 , intercept = 1)
我希望这能画出:
正在绘制:
答案 0 :(得分:10)
ggplot2
绘制的图不正确。它在表示要传递给aes
调用的数据所必需的刻度上绘制函数。不管您是否实际在geom
中绘制数据。
为说明问题,将实际数据点添加到绘图中并使x和y轴更可见是很有帮助的。下面的代码
ggplot(data=data.frame( x=c(-1,2),y=c(-1,2) ), aes(x=x,y=y)) +
geom_point(shape = 1) +
geom_abline(intercept = 1, slope = -1, col = "red") +
geom_hline(yintercept = 0) +
geom_vline(xintercept = 0)
由于您只想绘制上述图的一个子部分,因此只需更正比例尺即可(而不绘制轴和数据点)。然后,您得到想要的结果:
ggplot(data=data.frame(x=c(-1,2), y=c(-1,2)), aes(x=x,y=y)) +
geom_blank() + # not necessary, taken from the OP's question
geom_abline(intercept = 1, slope = -1) +
scale_x_continuous(limits = c(0, 1)) +
scale_y_continuous(limits = c(0, 1))
答案 1 :(得分:3)
我认为ggplot2确实可以完成您要求的操作:绘制一个空的canvan,其范围从(-1,-1)到(2,2),然后添加一个下斜线。如果要使Canvan与样本匹配,只需调整指定点的坐标即可:
library(tidyverse)
ggplot(data=data.frame( x=c(0,2),y=c(1,0)), aes(x=x,y=y)) +
geom_blank() +
geom_abline(slope = -1 , intercept = 1)