@Macux
        
        2015-12-01T06:50:18.000000Z
        字数 3750
        阅读 1237
    R语言_学习笔记
> p4 <- ggplot(msleep,aes(sleep_total,sleep_cycle))> pp <- p4 + geom_point(aes(colour=vore))> pp

使用另一种不同的颜色标度来修改默认的配色方案。
> p4 + geom_point(aes(colour=vore)) + scale_colour_brewer(palette="Set1")
 
如果映射的是连续型变量,则用scale_colour_gradient()来修改。
基本思想:用breaks=vector1来找到断点,用labels=vector2来对断点重命名。如果没有labels语句,就自动在断点处显示vector1的名字。
(1)、在图例中的玩法:
> pp + scale_colour_hue("What does\nit eat?",breaks = c("herbi", "carni", "omni"),#用参数breaks()设置图例如何分段。此处做这样的设置是为了去除NA这个分段部分。labels = c("plants", "meat", "both"))#在断点处应显示出的标签。蓝色的NA值,在图例中木有了。

(2)、在条形图中的玩法:
> pi <- ggplot(mtcars,aes(carb)) + geom_histogram(aes(fill=factor(cyl)),binwidth=0.57) + scale_fill_brewer(palette="Set2")> pi

> pi + scale_x_discrete(breaks=c(1,2,3,4,6,8),labels=c(1,2,3,4,6,8))

> p <- ggplot(mtcars,aes(cyl,wt)) + geom_point()> p + scale_x_continuous(breaks = c(5.5, 6.5))

> p + scale_x_continuous(limits = c(5.5, 6.5))

> p1 <- ggplot(mtcars,aes(wt,cyl)) + geom_point(aes(colour=cyl))> p1

> p1 + scale_colour_gradient(breaks = c(5.5, 6.5),label=c("Fan","Ryan"))

> p1 + scale_colour_gradient(limits = c(5.5, 6.5))
 
只有cyl的值处在[5.5,6.5]之间的点才有配色,其余的点均已默认的黑色来对待。
> p11 <- ggplot(mtcars,aes(x=wt,y=factor(cyl)))> p12 <- p11 + geom_point(aes(color=factor(cyl)))> p12 + scale_x_continuous(expand=c(0,0)) + scale_y_discrete(expand=c(0,0)) + scale_color_brewer(palette="Set1")

> library(scales)> ggplot(diamonds,aes(carat,price)) + geom_point(colour=alpha("steelblue",0.5)) + scale_x_log10() + scale_y_log10()

(1)、一般玩法:
> kl <- ggplot(msleep,aes(sleep_total,sleep_cycle)) + geom_point(aes(colour=awake))> kl

> kl + scale_color_gradient2(low=muted("red"),high=muted("black"))

(2)、高端玩法:
生肉:
> fd <- with(faithful, MASS::kde2d(eruptions, waiting, h = c(1, 10), n = 50))> df <- with(fd, cbind(expand.grid(x, y), as.vector(z)))> names(df) <- c("eruptions", "waiting", "density")> erupt <- ggplot(df, aes(waiting, eruptions, fill = density)) + geom_tile() + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))> erupt + scale_fill_gradient(limits = c(0, 0.04))

调整后的:
> erupt + scale_fill_gradient(limits = c(0, 0.04), low="white", high="steelblue")

(1) 、调用系统自带的调色板 (自动上色) 
a、点图常用的调色板 
生肉:
> point <- ggplot(msleep,aes(brainwt,bodywt)) + scale_x_log10() + scale_y_log10() + geom_point(aes(color=vore))> point

方案1:
> point + scale_colour_brewer(palette = "Set1")

方案2:
> point + scale_colour_brewer(palette = "Dark1")

方案3:
> point + scale_colour_brewer(palette = "Pastel1")

b、面积图常用的调色板:
生肉:
> area <- ggplot(msleep,aes(brainwt)) + scale_x_log10() +geom_histogram(aes(fill=vore),binwidth=1)> area

方案1:
> area + scale_fill_brewer(palette = "Pastel1")

方案2:
> area + scale_fill_brewer(palette = "Set2")

方案3:
> area + scale_fill_brewer(palette = "Pastel2")

方案4:
> area + scale_fill_brewer(palette = "Accent")

(2)、玩转颜色DIY和散点样式DIY (手动上色)
> pl <- ggplot(msleep,aes(brainwt, bodywt))+ scale_x_log10() + scale_y_log10()
a、DIY每一类的颜色
> pl + geom_point(aes(colour = vore)) + scale_colour_manual(values = c("red", "orange", "yellow", "green", "blue"))
 
你无法知道哪个颜色是如何映射到哪一类,只能够"听天由命"
#设置哪一类对应哪一种颜色> colours <- c(carni = "red","NA" = "orange",insecti = "yellow", herbi = "green", omni = "blue")#这样,结果就会出现我们想要的。> pl + geom_point(aes(colour = vore)) + scale_colour_manual("Redondo",values = colours,labels=c("Ryan","Fan","Chloe","Zhang" ))

顺便把label也DIY成自己想要的! 
这里的vore是一个vector,但在上色的时候,是手动上色,颜色由另一个向量colours来确定。 
本质还是和pt的上图思想一样。
b、DIY每一类散点的样式
> shapess <- c(carni=2,insecti=8,herbi=24,omni=15)> pl + geom_point(aes(colour = vore,shape=vore)) + scale_colour_manual("Redondo",values = colours,labels=c("Ryan","Fan","Chloe","Zhang" )) + scale_shape_manual("Redondo",values = shapess,labels=c("Ryan","Fan","Chloe","Zhang" ))

> huron <- data.frame(year = 1875:1972, level = as.vector(LakeHuron))> pt <- ggplot(huron, aes(year)) + geom_line(aes(y = level - 5, colour = "below")) + geom_line(aes(y = level + 5, colour = "above"))+ scale_colour_manual("Direction",values=c("below" = "red","above"="lightskyblue "),labels=c("上面那条线","下面那条线"))> pt
