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
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嘿,谢谢你的帮助,没有时间去问别人真的很难。不知何故,我的浏览器不支持此处所需的编辑,请提前道歉。@newymedicalstatsna.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)