修改ggplot2图形外观

  • 坐标轴

                                             控制坐标轴和刻度线外观的函数

函数选项
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 轴名称都设置为空

07142314_T5Zd.png

  • 图例

图例是指如用颜色、形状、尺寸等视觉特性表示数据特征的指南

  • 修改图例的标题

在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%

07142314_jmJN.png

  •  标尺

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")

07142314_y7X4.png

 

> 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)

07142314_eYhz.png

             薪水与助理教授、副教授、教授经验对比散点图,点的颜色是人为指定的

通过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

07142314_sVsS.png

 

> library(RColorBrewer)
> display.brewer.all()  #获得颜色集

07142314_XExN.png

 

  • 主题

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    

 

07142315_a3si.png

 

  • 多重图

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)

 

07142315_W4MN.png

 

  • 保存
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到磁盘
       

 

转载于:https://my.oschina.net/u/1785519/blog/1563787

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值