x
y
xmin
xmax
ymin
ymax
xend
yend
weight
color:轮廓色
fill:填充色
shape:点形状
linetype: dotted dashed
size:点大小,线条大小(粗细)
alpha:透明度,0-1:完全透明-完全不透明
width:宽度(条形图等)
binwidth:组距(直方图等)
label:名称(如x,y,legend等)
angle:角度
hjust:水平平移
vjust:垂直平移
lower
middle
upper
map_id
group : 分组
position : 位置调整
ggplot(data=mpg,aes(x=displ,y=hwy))+
geom_point(color='grey')#轮廓色为灰色(实质效果:填充部分也为灰色)
ggplot(data=mpg,aes(x=displ,y=hwy))+
geom_point(fill='blue')#点图无填充色选项,所以等于空设置;而color默认黑色
ggplot(data=mpg,aes(x=displ,y=hwy))+
geom_point(aes(color=cyl),alpha=I(0.6)) #设置透明度,alpha范围是0到1,全透明到不透明;I()表示设定,跟映射函数aes()相对
ggplot(data=mpg,aes(x=displ,y=hwy))+
geom_point(aes(color=factor(cyl)),alpha=0.6)#cyl为整数,系统识别#默认是连续变量,所以生成的图例是连续型颜色图例;factor使之因子化
ggplot(data=mpg,aes(x=displ,y=hwy))+
geom_point(aes(color=factor(cyl),shape=factor(cyl)),alpha=0.6)
将cyl映射至形状属性
ggplot(data=mpg,aes(x=displ,y=hwy))+
geom_line(color='grey',size=2)
ggplot(data=mpg,aes(x=factor(displ),y=hwy))+
geom_bar(stat='identity',width=0.8,color='green',fill='grey')
stat是指统计变换;#stat='identity'是指不进行统计变换即hwy就是纵
坐标值因为displ出现众多的重复值,所以分组更多,纵坐标值不断累加
width为组距,color为轮廓色(可以看到y值累加上去),fill为填充色
ggplot(data=mpg,aes(x=displ))+
geom_bar(stat='density')
统计变换为密度即y为displ的密度分布;注意,这里不需要给y映射变量
统计变换为bin,中文翻译是bin封箱,其过程是生成变量count(对x计数),density(一维密度估计),x(组的中心估计)——默认利用count和x;如若#要引用这几个变量,则在变量左右加双圆点,譬如 ..density..
仅限于x为连续型变量,如果x为离散型则该函数报错——此时可以利用条线图来绘制直方图
ggplot(data=mpg,aes(x=displ,fill=fl))+
geom_histogram(binwidth=0.2,position=”stack”)
binwidth 为The width of the bins;不同于条形图的width
position是指位置调整,stack是堆叠即同组几何对象堆叠
ggplot(data=mpg,aes(x=displ,fill=fl))+
geom_histogram(binwidth=0.4,position='dodge')
position是指位置调整,dodge是同组几何对象并列
位置调整的参数还有:fill jitteridentity
ggplot(data=mpg,aes(x=factor(fl),y=hwy))+
geom_boxplot(color='grey')
ggplot(data=mpg,aes(x=1,y=hwy))+
geom_boxplot(fill='grey',color='blue') #hwy不分组
ggplot(data=mpg,aes(x=1,y=hwy))+
geom_boxplot(fill='grey',color='blue',outlier.colour= "red", outlier.shape = 1) #高亮异常值并赋予特定的几何对象
使用geom_density
ggplot(data=mpg,aes(x=displ,fill=fl))+geom_density(color='white',size=0.1,alpha=I(0.3))
ggplot(data=mpg,aes(x=displ,y=..density..))+geom_histogram(fill='grey',binwidth=0.18,alpha=I(0.3))+geom_density(color='white',size=0.8)
几乎看不到密度曲线。原因:直方图和密度图结合在一起。直方图中bin变换生成y变量有count和density,默认使用前者,这样由于count很大,density很小(总是小于1),就会值得密度线处于低位,难以看到,所以需要y=..density..(引用bin变换的数据必须前后加双圆点)
ggplot(data=mpg,aes(x=displ))+geom_histogram(fill='grey',binwidth=0.18,alpha=I(0.3))+geom_density(color='white',size=0.8)
ggplot(data=mpg,aes(x=1,fill=fl))+geom_bar()+
coord_polar(theta='y')
coord_polar是极坐标的意思,区别以往的笛卡尔坐标。coord_polar()作用是把把笛卡尔坐标变换为极坐标。该函数有theta,start,direction三个参数,后者者顶多是图的微调,需要了解可以查看帮助文件,theta才是关键。极坐标参数theta有两个指标半径和角度,就饼图而言,各部分内容的角度不同,半径相同;而默认theta=”x”,即将x映射为角度,剩下的y映射为半径。这些为前期准备,下面一步步分解这个过程。
First step : 生成条形图,其中各部分的比例关系用y反映。
ggplot(data=mpg,aes(x=1,fill=fl))+geom_bar()
second step : 将坐标极坐标化,y映射为角度(此时x恒等于1,即半径相同)
ggplot(data=mpg,aes(x=1,fill=fl))+geom_bar()+
coord_polar(theta='y')
ggplot(data=mpg,aes(x=1,fill=fl))+geom_bar()+
coord_polar(theta=”x”)
如果x映射为角度,则y映射为半径,生成眼图
set.seed(1126) #设置随机种子,让结果可重复
data <- rnorm(100) #生成100个符合正态分布的数字
min <- floor (min(data)) #这一串数字的最小值向下取整
max <- ceiling (max(data)) #这一串数字的最大值向上取整
range <- cut (data,breaks = seq(min,max,0.5)) #以0.5为间隔,分割数据
data <- as.data.frame(data)
text <- as.data.frame(summary(range)) #此数据框为geom_text做准备
text$x <- seq(min+0.25,max-0.25,0.5) #设置图中标记文本的横坐标
colnames(text)[1] <- "count"
text$prop <- proportions(text$count) #计算构成比
ggplot(data = data,aes(data, ..density.. /2))+ # 纵坐标 = 频率/组距,我这里组距设置的是0.5,因此我又除以2,让纵坐标表示频率。
geom_density (size = 1.2, color = "skyblue")+ #设置颜色
geom_histogram ( color = "yellow", fill = "deeppink",breaks = seq(min,max,0.5),alpha = 0.5)+
coord_cartesian(expand = F,xlim = c(min-0.2,max+0.2),ylim = c(0,max(text$prop)+0.02))+
scale_y_continuous(breaks = seq(0,0.5,0.05))+
scale_x_continuous(breaks = seq(min,max,1))+ #这两个函数设置坐标轴显示多少刻度点
labs(x = "",y = "Frequency")+
geom_text(data = text,aes(x,y = prop+0.005,label = prop))+
theme(panel.background = element_blank(),
panel.grid.major.y = element_line(colour = "grey",linetype = 2),
axis.line = element_line(colour = "black",size = rel(2), arrow = arrow(angle = 30,length = unit(0.1,"inches"))), #为坐标轴添加箭头
axis.title = element_text(size = rel(1.2)),
axis.text.x = element_text(size = rel(1.5),hjust = 1),
axis.text.y = element_text(hjust = 1,size = rel(1.5)),
axis.ticks = element_line(size = rel(1.5)),
plot.margin = margin(15,9,9,9))
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)