默认情况下是按照英文字母递增顺序排序,即b,d,g,k,r,w。需要对date.frame调整,指定不同的顺序,可以将x轴列指定为具有指定顺序的因子,也可以根据场景使用reorder()函数。修改的命令参考如下。
ma$classify <- factor(ma$classify, levels=c( "b", "r","g","w","d","k"), ordered=TRUE)
折线图
p+ scale_x_discrete(limits=c('Jan','Feb','Mar','Apr', 'May', 'Jun','Jul' ,'Aug', 'Sep','Oct' ,'Nov','Dec'))
scale_fill_manual和scale_color_manual函数用于手动修改颜色
p + scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))#用于面的填充色
p + scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))#用于点、线
scale_color_gradient, scale_fill_gradient:两种颜色的连续梯度
scale_color_gradient2, scale_fill_gradient2:不同梯度
scale_color_gradientn, scale_fill_gradientn:多种颜色梯度
scale_fill_grey()可以看做是黑、白的渐变
①默认的深蓝到浅蓝渐变
df <- data.frame(
x = runif(100),
y = runif(100),
z1 = rnorm(100),
z2 = abs(rnorm(100)))
# Default colour scale colours from light blue to dark blue
ggplot(df, aes(x, y)) +geom_point(aes(colour = z2))
②两颜色渐变scale_colour_gradient2()
# For diverging colour scales use gradient2
ggplot(df, aes(x, y)) +geom_point(aes(colour = z1)) +scale_colour_gradient2()
③多颜色渐变scale_colour_gradientn
注意多颜色渐变的白色带不在中间
# Use your own colour scale with gradientn
ggplot(df, aes(x, y)) +geom_point(aes(colour = z1))
+scale_colour_gradientn(colours = terrain.colors(10))
调色板工具除了手动设置外,还可以借助RColorBrewer包提供的调色板。
p + scale_fill_brewer(palette="Set2")
p + scale_color_brewer(palette="Set2")
distm() in package geosphere
geoDist() in package SoDA
预定义设置矩阵或者向量【2】.
x=vector() #创建的为空向量(可以为数值或者字符串)
x<-numeirc(0) #长度可变的存储数字的向量
x=character() #创建出来的为字符串向量
x<-NULL; x[1]<-2;…… #每次给x赋值长度自动延长,生成的也为向量
vector(mode="numeric",length=0)定义一个空向量,然后添加元素值
x=matrix(nrow = 2,ncol=3) #创建空矩阵
p<-ggplot(d, aes(x=w)) + geom_histogram(aes(y=..density..), binwidth=1)+
geom_line(data =mm,aes(x=mm$xx,y=mm$value,colour=class,group = class), size=1)
scale_linetype_discrete,scale_linetype_discrete scale将12个不同的值映射到12个预定义的linetype。
d=data.frame(a=c("a","b","c","d","e","f","g","h", "i", "j", "k", "l"))
ggplot() +
scale_x_continuous(limits=c(0,1), breaks=NA, name="") +
scale_y_discrete(name="") +
scale_linetype_discrete(legend=F) +
geom_segment(data=d, mapping=aes(x=0, xend=1, y=a, yend=a, linetype=a))
scale_linetype_identity,scale_linetype_identity scale可以用来传递任何合法的linetype值(它的映射是identity函数,因此它不会改变任何东西)。
d=data.frame(a=c("a","b","c","d","e","f","g","h", "i", "j", "k", "l"))
ggplot() +
scale_x_continuous(limits=c(0,1), breaks=NA, name="") +
scale_y_discrete(name="") +
scale_linetype_discrete(legend=F) +
geom_segment(data=d, mapping=aes(x=0, xend=1, y=a, yend=a, linetype=a))
下面为一般设置,这样会产生两个图例。
g+scale_color_manual(values=c("Blue1","Red1","Green","Black"))+
scale_linetype_manual(values=c(1,2,1,2) )
我的设置是,增加一个图例名称,比如图例标题为group,则会对统一的标题操作。
g+ scale_color_manual(name = "group",values=c("Blue1","Red1","Green","Black"))+
scale_linetype_manual(name = "group",values=c(1,2,1,2) )+
g2+ theme(legend.title=element_blank(),legend.position = c(0.9, 0.9))# 删除标题名称,确定位置
图中图的一些建议【5】。
两列未知分布数据的Q-Q图可用下列代码。
df <- as.data.frame(qqplot(x, y, plot.it=FALSE))
p<-ggplot(df) + geom_point(aes(x=x, y=y))
p
以lancet期刊为例,
library("scales")
show_col(pal_lancet("lanonc")(9))
show_col(pal_lancet("lanonc", alpha = 0.6)(9))#显示出图形
pal_lancet("lanonc")(9)#显示代码
例子
命令1 aggregate(.~ID,data=df,mean)
命令2 library(dplyr)
df %>% group_by(ID) %>% summarise_each(funs(mean))
w=paste("a",1:5,sep = "") #生成a1,a2,..,a5等
data=get(w) #get()将字符串转换为变量
【1】http://www.sohu.com/a/337650938_718302
【2】http://www.bubuko.com/infodetail-1963272.html
【3】http://sape.inf.usi.ch/quick-reference/ggplot2/linetype
【4】https://www.cnblogs.com/nkwy2012/p/7614168.html
【5】ggplot2:在一幅图中插入另外一幅图