ggplot2学习(四)

ggplot2基础(4)——主题

ggplot2基础(1)
ggplot2基础(2)——坐标轴
ggplot2基础(3)——注释
ggplot2基础(4)——主题
ggplot2基础(5)——配色与图例

在R自带的绘图中,主要使用par()函数进行设置。在ggplot2中则主要通过theme()进行设置。一般而言,ggplot的主题包含以下几类元素:

  • 文本类型
  • 线条类型
  • 矩形框类型

在设置时,分别使用element_text()element_line()element_rect()函数进行设置

参考《R数据可视化手册》

1 文本外观

与文本相关的参数主要包括:

  • text 所有文本元素
  • axis.title 双轴标签的外观
  • axis.title.x x轴标签的外观
  • axis.title.y y轴标签的外观
  • axis.ticks 双轴刻度标签的外观
  • axis.ticks.x x轴刻度标签的外观
  • axis.ticks.y y轴刻度标签的外观
  • legend.title 图例标签的外观
  • legend.text 图例项文本的外观
  • plot.title 图形整体标签的外观
  • strip.text 双向分面标签的外观
  • strip.text.x 横向分面标签的外观
  • strip.text.y 纵向分面标签的外观
  • legend.text 图例项文本的外观
  • lengend.title 图例标题的外观

在设置上述属性时,需要通过element_text()函数,常用的文本属性包括:

  • family Helvetica(无衬线)、Times(衬线)、Courier(等宽)
  • face plain(普通)、bold(粗体)、italic(斜体)、bold.italic(粗斜体)
  • colour 字体颜色
  • size 字体大小
  • hjust 横向对其:0表示左对齐,0.5表示居中,1表示右对齐
  • vjust 纵向对齐:0表示底部对齐,0.5表示居中,1表示顶部对齐
  • angle 旋转角度
  • lineheight 行间距倍数
library(ggplot2)
p <- ggplot(economics,aes(pop,unemploy)) + 
    geom_point()


windowsFonts(myFont = windowsFont("微软雅黑"))
p + 
    labs(x="人口",y="失业率",title="经济调查报告")+
    theme(
        title=element_text(family="myFont",size=12,color="red",
                           face="italic",hjust=0.2,lineheight=0.2),
        axis.text.x=element_text(angle=30, hjust=1)
    )
文本对象的主题设置

2 线的外观

在ggplot中,所有线类型的元素的外观也都可以通过theme()函数进行设置,可以使用的参数包括:

  • line 所有的线条
  • axis.line 坐标轴线
  • panel.grid.major 主网格线
  • panel.grid.major.x 纵向主网格线
  • panel.grid.major.y 横向主网格线
  • panel.grid.minor 次网格线
  • panel.grid.minor.x 纵向次网格线
  • panel.grid.minor.y 横向次网格线
  • axis.ticks 坐标轴刻度线
  • axis.ticks.x
  • axis.ticks.y

在设置上述属性时,需要使用element_line()函数,element_line()的定义为:

element_line(
  colour = NULL,
  size = NULL,
  linetype = NULL,
  lineend = NULL,
  color = NULL,
  arrow = NULL,
  inherit.blank = FALSE
)

其中,

  • colour/color 表示线条的颜色
  • size 线条的粗细
  • linetype x线型
  • lineend 线条结束位置的形状(是圆的还是方的)
  • arrow 箭头,参考上篇文章的内容
  • inherit.blank
library(ggplot2)

p <- ggplot(mtcars, aes(x = wt, y = mpg)) + 
    geom_point()

p + theme(
    panel.border = element_blank(),
    axis.line = element_line(color="black"),
    axis.ticks = element_line(color="red", size=2),
    panel.grid.major = element_line(color="blue"),
    panel.grid.minor = element_line(color="green")
)
线条元素的主题设置示例

3 矩形元素的外观

常见的矩形元素包括:

  • rect 所有的矩形元素
  • lengend.background 图例的背景
  • panel.background 绘图区域的背景
  • panel.border 绘图区域的边框
  • plot.background 整个图形的背景
  • strip.background 分面标签的背景

在设置上述属性时,需要使用element_rect()函数,其定义为:

element_rect(
    fill = NULL, 
    colour = NULL, 
    size = NULL, 
    linetype = NULL, 
    color = NULL
)

该函数比较简单,所有的参数均在前面有所介绍,在此不再赘述了。下面来看几个例子就好:

p + 
    theme(
        panel.background=element_rect(
            fill="pink",
            color="black",
            size=2
        )
    )
矩形元素的主题设置

4 主题的设置与自定义

ggplot2中已经包含了许多预定的主题,系统默认的主题为theme_gray(),系统中自带的主题包括:

  • theme_bw()
  • theme_minimal()
  • theme_classic()
  • theme_void()

如果想设置某个主题,除了常规的用加号来实现主题的加载外,还可以使用theme_set()来设置主题,例如:

theme_set(theme_classic())

p <- ggplot(mtcars, aes(x = wt, y = mpg)) + 
    geom_point()

p

theme_set(theme_gray())
主题设置
mytheme <- theme_bw() + theme(
    text = element_text(color="red"),
    axis.title = element_text(size=rel(1.25))
)

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

推荐阅读更多精彩内容