Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data(iris)
- library(ggplot2)
- g <- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point(aes(colour=Species), alpha=0.5) #desired plot
- plot(iris$Sepal.Length, iris$Petal.Length, col=iris$Species) #attempt in base graphics
- g2 <- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point(aes(colour=Species, alpha=Petal.Width))
- getColWithAlpha <- function(colLevel, alphaLevel)
- {
- maxAlpha <- max(alphaLevel)
- cols <- rainbow(length(levels(colLevel)))
- res <- cols[colLevel]
- sapply(seq(along.with=res), function(i) adjustcolor(res[i], alphaLevel[i]/maxAlpha) )
- }
- plot(iris$Sepal.Length, iris$Petal.Length,
- col = getColWithAlpha(iris$Species, iris$Petal.Width), pch = 20)
- COL <- adjustcolor(c("red", "blue", "darkgreen")[iris$Species], alpha.f = 0.5)
- plot(iris$Sepal.Length, iris$Petal.Length, col = COL, pch = 19, cex = 1.5) #attempt in base graphics
- # Allocate Petal.Length to 7 length categories
- seq.pl <- seq(min(iris$Petal.Length)-0.1,max(iris$Petal.Length)+0.1, length.out = 7)
- # Define number of alpha groups needed to fill these
- cats <- nlevels(cut(iris$Petal.Length, breaks = seq.pl))
- # Create alpha mapping
- alpha.mapping <- as.numeric(as.character(cut(iris$Petal.Length, breaks = seq.pl, labels = seq(100,255,len = cats))))
- # Allocate species by colors
- COLS <- as.data.frame(col2rgb(c("red", "blue", "darkgreen")[iris$Species]))
- # Combine colors and alpha mapping
- COL <- unlist(lapply(1:ncol(COLS), function(i) {
- rgb(red = COLS[1,i], green = COLS[2,i], blue = COLS[3,i], alpha = alpha.mapping[i], maxColorValue = 255)
- }))
- # Plot
- plot(iris$Sepal.Length, iris$Petal.Length, col = COL, pch = 19, cex = 1.5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement