我正在尝试构建一个简单的散点图:
这就是我的数据(dlong
):
Spender variable value
1 1 IFN 2
2 2 IFN 6
3 3 IFN 5
4 1 iL2 <NA>
5 2 iL2 4
6 3 iL2 8
我最初从我的数据框中融化
由于我是一个自我调教,我到目前为止做到了:
ggplot(na.omit(dlong), aes(x=Spender, y=value, coulor=variable, group=variable)) +
geom_point(size=2, aes(shape=variable))
产生图表
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&lt; ZP2&lt; ZP4&lt; ZP7 ......)。
这是我的问题。如何在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))
使用R它不会打开我的情节:所以我在前面和后面添加了&gt; png(filename =“”)和dev.off。为什么窗户不会弹出?
它不会向我显示所有需要的时间点 - 它也会留下真实的点数(例如,Spender 1,iL2,ZP4)
如何在灰色区域中使用白色粗线的每个“Spender”在x轴上标记?
答案 0 :(得分:0)
您可以提供排名而不是值:
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))
答案 1 :(得分:0)
你快到了!您只需将value
转换为具有已定义级别的因子。
数据
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
转换为给定定义排名的因素
## 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))
修改:2014年2月12日强>
编辑后的帖子中的1)-3)问题与plot / ggplot的其他方面有关。
1)这显然是图形设备的问题 - 无论是安装还是无法正常启动。假设您已安装它,请尝试以下操作以检查它是否将启动/弹出设备窗口,
X11() # starts/pops up a X11 graphics device
plot(1:10)
您可能会收到错误消息,这意味着R
无法初始化此类设备。然后,您需要使用pdf
,png
(或其他)而不是弹出方法。
2)要保持未使用的级别,请使用scale_y_discrete(drop=FALSE)
3)要显示所有Spender
,请将它们转换为与value
类似的因子。并通过scale_x_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)