ggplot2学习(二):修改外观

课本学习
(最新的Salaries数据集是在carData包中,而书本的car包没有更新)

1、修改坐标轴

自定义坐标轴的函数


image.png

例子:

data(Salaries,package="carData")
library(ggplot2)
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="") 
image.png

2、修改图例(legend)

图例是指出如何用颜色、形状、尺寸等视觉特性表示数据特征的指南。ggplot2包能自动生成图例,而且在很多时候能够满足我们的需求;但是在其他时候,我们可能要对其进行自定义。

标题和位置是最常用的定制特征。

  • 当更改图例的标题时,必须考虑图例是否基于颜色、填充、尺寸、形状或它们的组合。图例代表fill审美(见aes()函数),因此我们可以通过将fill="mytitle"加到labs()
    函数中来改变标题。
  • 标题的位置由theme()函数中的legend.position选项控制。可能的值包括"left"、
    "top"、"right"(默认值)和"bottom"。我们也可以在图中给定的位置指定一个二元素向量。调整图形,使图例出现在左上角并且将标题从sex变为Gender。
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"),
                   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 Gender",
       x="", y="", fill="Gender") +
  theme(legend.position=c(.1,.8)) 
image.png

这个例子中,图例的左上角是分别距离左侧边缘10%和底部边缘80%的部分。如果想删除图例,可以使用legend.position="none"。

3、修改标尺

使用标尺把数据空间的观察值映射到可视化的空间中。标尺既可以应用到连续的变量,也可以应用到离散的变量。

ggplot(mtcars, aes(x=wt, y=mpg, size=disp)) +
     geom_point(shape=21, color="black", fill="cornsilk") +
     labs(x="Weight", y="Miles Per Gallon",
     title="Bubble Chart", size="Engine\nDisplacement") 

上述代码中,aes()函数的参数size=disp生成连续型变量disp(发动机排量)的标尺,并使用它来控制点
的尺寸。

image.png

离散的例子:

ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary, color=rank)) +
     scale_color_manual(values=c("orange", "olivedrab", "navy")) +
     geom_point(size=2) 
image.png

1、使用scale_color_manual()函数来设定三个学术等级的点的颜色.
2、可以通过scale_color_brewer()scale_fill_brewer()函数来预先指定分得清的颜色集,其中,参数palette="Set1"用其他的值(例如"Set2"、"Set3"、"Pastel1"、"Pastel2"、"Paired"、"Dark2"或"Accent")来代替将会产生不同的颜色方案。

4、修改主题(theme)


theme可以看到theme()功能的大量参数,可以实现与外观相关的大多数要求。其中有四种主要类型:
element_text():使用element_text()函数设置基于文本的组件,如title,subtitle 和caption等。
element_line():使用element_line()设置基于线的组件,如轴线,主网格线和次网格线等。
element_rect():使用element_rect()修改基于矩形的组件,如绘图区域和面板区域的背景。
element_blank():使用element_blank()关闭显示的主题内容。

theme()函数中的选项可以让我们调整字体、背景、颜色和网格线等。主题可以使用一次,也可以保存起来应用到多个图中。

theme(plot.title = element_text(hjust = 0.5,size = 20, face = "bold"),axis.text=element_text(size=12,face = "bold"),axis.title.x=element_text(size=14),axis.title.y=element_text(size=14))

注:参数说明
axis.text:改变坐标轴刻度值的字体大小;
axis.title.x和axis.title.y改变x轴和y轴标题字体大小;
binwidth表示的柱形的宽度;
hjust = 0.5大标题居中;
size=20表示大标题字体大小为20

data(Salaries, package="car")
library(ggplot2)
mytheme <- theme(plot.title=element_text(face="bold.italic",
 size="14", color="brown"),
 axis.title=element_text(face="bold.italic",
 size=10, color="brown"),
 axis.text=element_text(face="bold", size=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")
 ggplot(Salaries, aes(x=rank, y=salary, fill=sex)) +
 geom_boxplot() +
 labs(title="Salary by Rank and Sex", x="Rank", y="Salary") +
 mytheme 

5、多重图

将多个ggplot2包的图形放到单个图形中最简单的方式是使用gridExtra包中的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) 

6、保存图形

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容