在R中的ggplot2中使用geom_point的绘图问题

时间:2015-10-21 21:29:51

标签: r ggplot2

我在R中使用ggplot2并且使用geom_point时遇到散点图问题。我有基本的x,y散点图但是试图根据另一个变量着色点:EVENT。 EVENT要么“湿”,要么“干”。我尝试将EVENT更改为一个因素,因为它只是两个级别,但这并没有改变任何东西。情节似乎横向缩小。如果我用连续变量切换EVENT,我可以得到一个“正常”的情节,但是当我输入因子或分类时,我得到一个缩小的情节。这是我的代码和情节。

ggplot(data=mydata, aes(x=conversion.ratio, y=sampler.purchaser.ratio)) +
  geom_point(alpha=.5, aes(color=EVENT.WET.DRY))` 

resulting plot

有什么想法吗?我错过了什么吗?我尝试制作一个可重现的例子:

EVENT.WET.DRY<-c(rep("Dry",7),rep("Wet",18))
conversion.ratio=rnorm(25,.5,.1)
sampler.purchaser.ratio=rnorm(25,.7,.05)
mydata<-data.frame(factor(EVENT.WET.DRY), conversion.ratio, sampler.purchaser.ratio)

ggplot(data=mydata, aes(x=conversion.ratio, y=sampler.purchaser.ratio)) +
  geom_point(aes(color=EVENT.WET.DRY))
然而,这很好。它与原始数据集中的变量EVENT.WET.DRY有什么关系。我已经遇到过一些问题,因为它最初是一个SAS文件,它被转移到我带入R的SPSS文件中。

1 个答案:

答案 0 :(得分:0)

所以,这是EVENT.WET.DRY的级别:

levels(viniq$EVENT.WET.DRY)
[1] "Dry                                                                                                                                                                                                                                                            "
[2] "Wet                                                                                                                                                                                                                                                            "

因此,@ aosmith你是对的。每个级别后都有很多空格。

levels(mydata$EVENT.WET.DRY) <- list("Dry"="Dry                                                                                                                                                                                                                                                            ", "Wet"="Wet                                                                                                                                                                                                                                                            ")

这就是诀窍!搜索之后,我找到了一种更好的方法:

trim.trailing <- function (x) sub("\\s+$", "", x)
mydata$EVENT.WET.DRY <- trim.trailing(mydata$EVENT.WET.DRY)