R中的变量通过散点图上的着色点

时间:2018-12-07 18:32:03

标签: r plot scatter-plot

我对葡萄酒的质量进行了逻辑回归(来自UCI数据库的数据集)。我正在尝试用质量(0 =低,1 =高)上色的点制作散点图,并且成功了,但是颜色是黑白的。情节上的白点显然无济于事,所以我希望能够指定/更改颜色,但是我尝试了很多事情,但没有任何效果。

代码:     glm.fit = glm(wine $ quality〜。,data = wine,     family = binomial)

step(glm.fit)

glm.fit2=glm(wine$quality~volatile.acidity
+residual.sugar+free.sulfur.dioxide+
density+pH+sulphates+alcohol,
data=wine, family=binomial)

summary(glm.fit2)

plot(wine$sulphates, wine$alcohol, 
xlab="sulphates", ylab="alcohol", 
col=wine$quality)

legend("topright", col=1:2, pch=21, 
legend=c("low quality","high quality"))

这是我得到的情节: scatterplot

这是来自glm的两个最重要变量的图。我不在乎什么颜色,只是不是白色!

2 个答案:

答案 0 :(得分:0)

如NColl所建议的,ggplot2软件包非常适合此用途。请尝试下面的代码,然后尝试learn more here

library(ggplot2)

ggplot(data = glm.fit2, aes(x = sulphates, y = alcohol, color = quality)) + 
  geom_point()

答案 1 :(得分:0)

一个简单的R base解决方案是这个。

假设您在结构上与此相似的df,其中一个二进制变量仅包含0和1,另外两个变量:

df <- data.frame(
  Var1 = c(sample(500, 100)),
  Var2 = c(rnorm(500, 100)),
  binaryVar = c(sample(0:1, 100, replace = T))
)

然后您可以使用ifelse语句为二进制变量分配颜色,如下所示:

df$col <- ifelse(binaryVar==0, "red", "blue")

最后可以使用df$col来定义散点图,以定义数据点的颜色:

plot(df$Var1, df$Var2, frame=F, col=df$col)
legend("topright",legend=c("Low quality", "High quality"), 
pch=1, col=c("red","blue"), bg="grey")

结果如下所示: enter image description here