R ggplot:如何实现基于等级的y轴并保持未使用的因子级别

R ggplot:如何实现基于等级的y轴并保持未使用的因子级别,r,ggplot2,rank,R,Ggplot2,Rank,我试图建立一个简单的散点图: 这就是我的数据的样子(dlong): 生成图形 在x轴上有枚举测试人员,对不同时间点(=值)(y轴)有反应。这些反应因蛋白质类型不同而不同(=组=变量) 我的真实数据实际上如下所示: Spender variable value 1 1 ZP0.IFN ZP0 2 2 ZP0.IFN 3 3 ZP0.IFN ZP0 4 4 ZP0.IFN 5

我试图建立一个简单的散点图: 这就是我的数据的样子(
dlong
):

生成图形

在x轴上有枚举测试人员,对不同时间点(=值)(y轴)有反应。这些反应因蛋白质类型不同而不同(=组=变量)

我的真实数据实际上如下所示:

    Spender variable value  
1        1  ZP0.IFN   ZP0  
2        2  ZP0.IFN        
3        3  ZP0.IFN   ZP0  
4        4  ZP0.IFN        
5        5  ZP0.IFN        
6        6  ZP0.IFN        
7        7  ZP0.IFN        
8        8  ZP0.IFN   ZP0  
9        9  ZP0.IFN        
10      10  ZP0.IFN        
11      11  ZP0.IFN   ZP0  
12      12  ZP0.IFN   ZP0  
13      13  ZP0.IFN  
14      14  ZP0.IFN        
15      15  ZP0.IFN        
16      16  ZP0.IFN   ZP0  
17       1      IFN   ZP2  
18       2      IFN  ZP21  
19       3      IFN        
20       4      IFN        
21       5      IFN  ZP14  
22       6      IFN        
23       7      IFN  ZP14  
24       8      IFN  ZP21  
25       9      IFN  ZP21  
这些值实际上是排名数据
(ZP0 这是我的问题。如何在y轴上实现排名数据

接下来我做了什么:

dlong$value <- factor(dlong$value,   
levels=c("ZP0", "ZP2", "ZP4", "ZP7", "ZP14", "ZP21", "ZP28", "ZP35", "ZPM9", "ZPM91"))  
ggplot(na.omit(dlong), aes(x=Spender, y=value, group=variable)) +  
geom_point(size=3, aes(shape=variable))    
dlong$value png(filename=“”),前面和后面都有dev.off。为什么窗户不会弹出?

  • 在y轴上,它不会显示所有需要的时间点-它还会留下真实的时间点(例如,Spender 1、iL2、ZP4)

  • 如何在x轴上为每个“挥霍者”标记灰色区域中的白色粗线


  • 您可以提供列组而不是值:

    dlong$dummy <- as.numeric(gsub("ZP","",as.character(dlong$value)))
    
    ggplot(na.omit(dlong), aes(x=Spender, y=dummy, colour=variable, group=variable)) + geom_point(size=2, aes(shape=variable))
    

    dlong$dummy你就快到了!您只需将
    转换为具有定义级别的因子

    数据

    dlong <- read.table(textConnection("1 1 ZP0.IFN ZP0
    2 2 ZP0.IFN
    3 3 ZP0.IFN ZP0
    4 4 ZP0.IFN
    5 5 ZP0.IFN
    6 6 ZP0.IFN
    7 7 ZP0.IFN
    8 8 ZP0.IFN ZP0
    9 9 ZP0.IFN
    10 10 ZP0.IFN
    11 11 ZP0.IFN ZP0
    12 12 ZP0.IFN ZP0
    13 13 ZP0.IFN
    14 14 ZP0.IFN
    15 15 ZP0.IFN
    16 16 ZP0.IFN ZP0
    17 1 IFN ZP2
    18 2 IFN ZP21
    19 3 IFN
    20 4 IFN
    21 5 IFN ZP14
    22 6 IFN
    23 7 IFN ZP14
    24 8 IFN ZP21
    25 9 IFN ZP21
    ","r"),fill=NA,na.strings="")[,-1]
    
    colnames(dlong) <- c("Spender","variable","value")
    dlong
    ##    Spender variable value
    ## 1        1  ZP0.IFN   ZP0
    ## 2        2  ZP0.IFN  <NA>
    ## 3        3  ZP0.IFN   ZP0
    ## 4        4  ZP0.IFN  <NA>
    ## 5        5  ZP0.IFN  <NA>
    ## 6        6  ZP0.IFN  <NA>
    ## 7        7  ZP0.IFN  <NA>
    ## 8        8  ZP0.IFN   ZP0
    ## 9        9  ZP0.IFN  <NA>
    ## 10      10  ZP0.IFN  <NA>
    ## 11      11  ZP0.IFN   ZP0
    ## 12      12  ZP0.IFN   ZP0
    ## 13      13  ZP0.IFN  <NA>
    ## 14      14  ZP0.IFN  <NA>
    ## 15      15  ZP0.IFN  <NA>
    ## 16      16  ZP0.IFN   ZP0
    ## 17       1      IFN   ZP2
    ## 18       2      IFN  ZP21
    ## 19       3      IFN  <NA>
    ## 20       4      IFN  <NA>
    ## 21       5      IFN  ZP14
    ## 22       6      IFN  <NA>
    ## 23       7      IFN  ZP14
    ## 24       8      IFN  ZP21
    ## 25       9      IFN  ZP21
    

    编辑:2014/02/12

    你编辑的帖子中的1)-3)个问题是关于plot/ggplot的其他方面

    1) 这显然是图形设备的一个问题——要么没有安装,要么启动不正确。假设已安装,请尝试以下操作以检查它是否将启动/弹出设备窗口

    X11()   # starts/pops up a X11 graphics device
    plot(1:10)
    
    您可能会遇到错误,这意味着
    R
    无法初始化此类设备。然后您需要使用
    pdf
    png
    (或其他)而不是弹出式方法

    2) 要保持未使用的级别,请使用
    scale\u y\u discrete(drop=FALSE)

    3) 要显示所有的
    Spender
    ,请将它们转换为系数,就像我们对
    值所做的那样。并通过
    scale\u x\u discrete(drop=FALSE)
    关闭下降功能

    因此,继续上面的数据

    dlong$value <- as.character(dlong$value)    
    dlong$value <- factor(dlong$value,   
    levels=c("ZP0", "ZP2", "ZP4", "ZP7", "ZP14", "ZP21", "ZP28", "ZP35", "ZPM9", "ZPM91"))
    dlong$Spender <- factor(dlong$Spender)
    ggplot(na.omit(dlong), aes(x=Spender, y=value, group=variable)) +  
      geom_point(size=3, aes(shape=variable)) +
      scale_y_discrete(drop=FALSE)+ 
      scale_x_discrete(drop=FALSE) 
    

    dlong$value嘿,谢谢你的帮助,没有时间去问别人真的很难。不知何故,我的浏览器不支持此处所需的编辑,请提前道歉。@newymedicalstats
    na.strings
    是告诉
    R
    哪个字符串应该读作
    na
    。您可以从
    帮助(read.table)
    中阅读更多内容
    [,-1]
    忽略第一列,即row.names。在数据部分,我将您发布的数据表转换为
    R
    表,以重现您的问题。由于您的数据对象已经在
    R
    中,您可以直接从“转换为给定定义等级的系数”部分跳转!你知道我上面更新的问题有什么帮助吗?谢谢。我真的(!!)很感激。它终于奏效了。我将报告结果。
    ## The values are actually ranked data
    ## (with ZP0 < ZP2 < ZP4 < ZP7 ... ).
    require(gtools)
    dlong$value <- as.character(dlong$value)
    dlong$value <- factor(dlong$value,levels=mixedsort(unique(dlong$value)))
    
    require(ggplot2)
    ggplot(na.omit(dlong),aes(x=Spender, y=value, coulor=variable, group=variable)) +
      geom_point(size=2, aes(shape=variable))
    
    X11()   # starts/pops up a X11 graphics device
    plot(1:10)
    
    dlong$value <- as.character(dlong$value)    
    dlong$value <- factor(dlong$value,   
    levels=c("ZP0", "ZP2", "ZP4", "ZP7", "ZP14", "ZP21", "ZP28", "ZP35", "ZPM9", "ZPM91"))
    dlong$Spender <- factor(dlong$Spender)
    ggplot(na.omit(dlong), aes(x=Spender, y=value, group=variable)) +  
      geom_point(size=3, aes(shape=variable)) +
      scale_y_discrete(drop=FALSE)+ 
      scale_x_discrete(drop=FALSE)