在ggplot2 Scatterplots中更改颜色

时间:2016-03-02 20:01:15

标签: r ggplot2

我试图修改一些最初来自此处问题的现有代码(https://stats.stackexchange.com/questions/76999/simulating-longitudinal-lognormal-data-in-r),并用于在以下网站上演示R中的Scatterplots:https://hopstat.wordpress.com/2014/10/30/my-commonly-done-ggplot2-graphs/

这是一个简单而愚蠢的问题,但我整个上午一直在努力解决这个问题。下面的代码给出了一个漂亮的黑白散点图。我想修改代码,使线条变得浅灰色。

library(MASS)
library(nlme)
library(plyr)
library(ggplot2)

### set number of individuals
n <- 200

### average intercept and slope
beta0 <- 1.0
beta1 <- 6.0

### true autocorrelation
ar.val <- .4

### true error SD, intercept SD, slope SD, and intercept-slope cor
sigma <- 1.5
tau0  <- 2.5
tau1  <- 2.0
tau01 <- 0.3

### maximum number of possible observations
m <- 10

### simulate number of observations for each individual
p <- round(runif(n,4,m))

### simulate observation moments (assume everybody has 1st obs)
obs <- unlist(sapply(p, function(x) c(1, sort(sample(2:m, x-1,
replace=FALSE)))))

### set up data frame
dat <- data.frame(id=rep(1:n, times=p), obs=obs)

### simulate (correlated) random effects for intercepts and slopes
mu  <- c(0,0)
S   <- matrix(c(1, tau01, tau01, 1), nrow=2)
tau <- c(tau0, tau1)
S   <- diag(tau) %*% S %*% diag(tau)
U   <- mvrnorm(n, mu=mu, Sigma=S)

### simulate AR(1) errors and then the actual outcomes
dat$eij <- unlist(sapply(p, function(x) arima.sim(model=list(ar=ar.val), 
n=x) * sqrt(1-ar.val^2) * sigma))
dat$yij <- (beta0 + rep(U[,1], times=p)) + (beta1 + rep(U[,2], times=p)) *    
log(dat$obs) + dat$eij

dat = ddply(dat, .(id), function(x){
  x$alpha = ifelse(runif(n = 1) > 0.9, 1, 0.1)
  x$grouper = factor(rbinom(n=1, size =3 ,prob=0.5), levels=0:3)
  x
})
tspag = ggplot(dat, aes(x=obs, y=yij)) + 
  geom_line() + guides(colour=FALSE) + xlab("Observation Time Point") +
  ylab("Y")
spag = tspag + aes(colour = factor(id))
spag
bwspag = tspag + aes(group=factor(id))
bwspag

我已经尝试过scale_colour_manual,我尝试在bwspag线上的aes声明中定义颜色......没有运气。我对R的经验相对较少。我很感激任何帮助!

1 个答案:

答案 0 :(得分:1)

您想以灰度制作线条吗?如果是,那么在colour函数中添加geom_line()就足够了。例如:

ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_line(colour = "gray40")

您可以选择灰色的其他值:从0到100. More info here.