我正在制作一个geom_tile情节。
这是我的数据:
> cormatU.m
X1 X2 value
1 PJan 3 NA
2 PFeb 3 NA
3 PMar 3 NA
4 PApr 3 -0.161992302630029
5 PMay 3 -0.309114094976858
6 Jun 3 -0.336074090127203
7 Jul 3 -0.299397509057833
8 Aug 3 -0.238448926298331
9 Sep 3 NA
10 Oct 3 -0.251843163432571
11 Nov 3 -0.27385055414082
12 Dec 3 -0.224421430174352
13 Jan 3 -0.3394060217504
14 Feb 3 -0.178520333980496
15 Mar 3 -0.245158851599677
16 Apr 3 -0.242129657088556
17 May 3 -0.172928147572245
18 PJan 4 NA
19 PFeb 4 -0.225077539575345
20 PMar 4 -0.359309582752073
21 PApr 4 NA
22 PMay 4 -0.189923565448835
23 Jun 4 NA
24 Jul 4 NA
25 Aug 4 -0.271119542271446
26 Sep 4 NA
27 Oct 4 -0.204322223119054
28 Nov 4 -0.162222155770841
29 Dec 4 -0.289280496162877
30 Jan 4 -0.1760601312005
31 Feb 4 NA
32 Mar 4 NA
33 Apr 4 -0.261118372110555
34 May 4 -0.219750293141206
cormatU.m$X1<- factor(cormatU.m$X1, levels=c("PJan", "PFeb", "PMar", "PApr", "PMay", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", "Feb", "Mar", "Apr", "May"))
cormatU.m$X2 <- factor(cormatU.m$X2, levels=c("3", "4")
我的数据框中存在的NA存在问题。我已经查看了na.value设置为透明的其他选项,并且还尝试将scale_fill设置为离散,渐变和渐变2。但是,每次运行代码时都会给我一个错误
错误:提供给连续刻度的离散值。
以下是我尝试制作geom_tile图时使用的代码。这是显示相关系数的图。 NA值表示不重要的相关系数。任何处理NA值的建议都非常感谢。谢谢。
Ucor<- ggplot(cormatU.m, aes(X1,X2, fill=value))+
geom_tile()+
scale_x_discrete(expand=c(0,0), breaks=c("PJan", "PMar", "PMay", "Jul", "Sep", "Nov", "Jan", "Mar", "May"))+ #only display those lables on x axis
scale_y_discrete(expand=c(0,0))+
scale_fill_gradient(limits=c(-0.75,0.75), breaks=seq(-0.75,0.75,0.25), low="green", high="red", na.value="transparent")+
答案 0 :(得分:0)
value
中的cormatU.m
似乎不是数字。要解决这个问题,你可以这样做:
cormatU.m <- transform(cormatU.m, value=as.numeric(as.character(value)))
为什么as.character()
?请注意,如果没有它as.numeric()
,则值将不正确。这是因为R如何处理因子变量。首先转换为字符然后转换为数字将确保读取的值与数据框中的显示方式完全相同。