R-ggplot图中位数与排名值

时间:2019-05-17 07:07:26

标签: r ggplot2

我正在尝试绘制排名数据的中位数。在此图下,我试图绘制排名值。

示例数据:

test=data.frame(a=rep(seq(-5,5,by=0.1),each=1,length.out=101),b=runif(101, min=-5, max=5))
test$range=rep(seq(1, 101, by=1), each=1,length.out=length(test[,1]))

因此,我试图仅绘制中位数。 我试过了:

ggplot(data= test) + stat_summary(
    mapping = aes(x = range, y = b),
    fun.y = median)

但是我收到警告消息:删除了包含缺失值(geom_pointrange)的101行。

我通过以下命令得到它:

ggplot(test, aes(x = range, y = b, color = b )) + 
  geom_line(size = 0.5)  +
  geom_smooth(aes(color=..y..), size=1.5, method =                                         "loess", se=FALSE) +
  scale_colour_gradient2(low = "green", mid = "yellow" , high = "red", 
                     midpoint=median(test$b))

median

但这并不是我想要的,我只想要中位数。

我也想在此图下绘制test $ a的值。但是我不知道该怎么做:

gradient_scale

谢谢!

1 个答案:

答案 0 :(得分:0)

所以我对某些事情感到困惑。首先,您显示的第一个图在y轴上有b,但是代码暗示您正在y轴上绘制a。那么,您想要a还是b的中位数?而且,我不知道range变量应该做什么。

也就是说,也许这会有所帮助。我假设感兴趣的变量是b。通过绘制b作为其等级的函数,我们可以制作出类似于您的最小到最大插图的东西。接下来,我们可以在中位数的高度处添加一条水平线。

ggplot(test, aes(rank(b), b)) +
  geom_line() +
  geom_hline(yintercept = median(test$b))

哪个给了我这样的情节:

enter image description here

希望这对您有所帮助!