- 坐标轴
控制坐标轴和刻度线外观的函数
函数 | 选项 |
scale_x_continuous()和 scale_y_continuous() | breaks=指定刻度标记,labels=指定刻度标记标签, limits=控制要展示的值的范围 |
scale_x_discrete()和 scale_y_discrete() | breaks=对因子的水平进行放置和排序,labels=指定这些水平的标签, limits=表示哪些水平应该展示 |
coord_flip() | 颠倒 x 轴和 y 轴 |
按学术等级和性别分组的薪资水平
> data(Salaries,package="car")
> library(ggplot2)
> ggplot(data=Salaries, aes(x=rank, y=salary, fill=sex)) +
+ geom_boxplot() +
+ scale_x_discrete(breaks=c("AsstProf", "AssocProf", "Prof"), #对x轴因子进行自定义
+ labels=c("Assistant\nProfessor",
+ "Associate\nProfessor",
+ "Full\nProfessor")) +
+ scale_y_continuous(breaks=c(50000, 100000, 150000, 200000), #对Y轴刻度进行处理
+ labels=c("$50K", "$100K", "$150K", "$200K")) +
+ labs(title="Faculty Salary by Rank and Sex", x="", y="") #将 x y 轴名称都设置为空
- 图例
图例是指如用颜色、形状、尺寸等视觉特性表示数据特征的指南
- 修改图例的标题
在labs中添加 fill=“myvar”
- 标题的位置
由theme()函数中的 legend.position选项控制,可能的值包括“left”、“top”、“right(默认值)”,“bottom” ,也可以指定一个二元素向量
- 移除图例
legend.position = "none"
> ggplot(data=Salaries, aes(x=rank, y=salary, fill=sex)) +
+ geom_boxplot() +
+ scale_x_discrete(breaks=c("AsstProf", "AssocProf", "Prof"),
+ labels=c("Assistant\nProfessor",
+ "Associate\nProfessor",
+ "Full\nProfessor")) +
+ scale_y_continuous(breaks=c(50000, 100000, 150000, 200000),
+ labels=c("$50K", "$100K", "$150K", "$200K")) +
+ labs(title="Faculty Salary by Rank and Sex",x="",y="",fill="Gender") + #fill=“”更改图例的名称
+ theme(legend.position=c(.1,.8)) #图例的左上角分别距离边缘10%和底部边缘80%
- 标尺
ggplot2包使用标尺把数据空间的观察值映射可视化的空间中,标尺既可以应用年到连续的变量,也可以应用到离散的变量
#一个连续性的标尺把 yrs.since.phd 变量的数值映射到 x 轴,同时将 salary的变量映射到 y 轴
> ggplot(mtcars, aes(x=wt, y=mpg, size=disp)) + #size = disp 生成连续变量disp(发动机排量)的标尺,并使用它控制点的尺寸
+ geom_point(shape=21, color="black", fill="cornsilk") +
+ labs(x="Weight", y="Miles Per Gallon",
+ title="Bubble Chart", size="Engine\nDisplacement")
> data(Salaries, package="car")
> ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary, color=rank)) +
+ scale_color_manual(values=c("orange", "olivedrab", "navy")) + #scale_color_manual() 函数设定三个学术等级的点的颜色
+ geom_point(size=2)
薪水与助理教授、副教授、教授经验对比散点图,点的颜色是人为指定的
通过scale_color_brewer() 和 scale_fill_brewer() 函数来预先指定分得清的颜色集
> ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary, color=rank)) +
+ scale_color_brewer(palette="Set1") + geom_point(size=2) #可将 Set1 改成 Set2、Set3、Pastel1、Pastel2、Paired、Dark2或Accent
> library(RColorBrewer)
> display.brewer.all() #获得颜色集
- 主题
theme()函数
> data(Salaries, package="car")
> library(ggplot2)
> mytheme <- theme(plot.title=element_text(face="bold.italic", #指定图的标题应该为粗斜体棕色14号
+ size="14", color="brown"),
+ axis.title=element_text(face="bold.italic", #轴的标题为粗斜体的棕色10号字
+ size=10, color="brown"),
+ axis.text=element_text(face="bold", size=9, #轴标签为粗体的深蓝色9号
+ color="darkblue"),
+ panel.background=element_rect(fill="white", #图片区域有白色的填充和深蓝色的边框
+ color="darkblue"),
+ panel.grid.major.y=element_line(color="grey", #主水平网格应该是灰色的实线
+ linetype=1),
+ panel.grid.minor.y=element_line(color="grey", #次水平网格应该是灰色的虚线
+ linetype=2),
+ panel.grid.minor.x=element_blank(), #垂直网格不输出
+ legend.position="top") #图例展示在顶部
#设置完成后使用 myeheme
> ggplot(Salaries, aes(x=rank, y=salary, fill=sex)) +
+ geom_boxplot() +
+ labs(title="Salary by Rank and Sex",
+ x="Rank", y="Salary") + # +mytheme 使用之前 mytheme设置的内容
+ mytheme
- 多重图
ggplot2中将多个图放到单个图形中最简单的使用方式是 gridExtra包中的grid.arrange()函数
#先将图都保存为一个对象,然后用grid.arrange()
> data(Salaries, package="car")
> library(ggplot2)
> p1 <- ggplot(data=Salaries, aes(x=rank)) + geom_bar()
> p2 <- ggplot(data=Salaries, aes(x=sex)) + geom_bar()
> p3 <- ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary)) + geom_point()
> library(gridExtra)
> grid.arrange(p1, p2, p3, ncol=3)
- 保存
ggplot(data=mtcars, aes(x=mpg)) + geom_histogram()
ggsave(file="my.png",plot=myplot,width=5,height=4)
#在当前路径下将 my.png 的5英寸*4英寸(12.7厘米*10.2厘米)PNG格式的图片,可设定扩展名为ps\tex\jpeg\pdf\pg\bmp\svg或wmf,其中wmf文件仅限Windows系统
#如果忽略 plot=选项,最近创建的图形会被保存
ggplot(data=mtcars, aes(x=mpg)) + geom_histogram()
ggsave(file="mygraph.pdf") #保存mygraph.pdf到磁盘