ggplot2不要图例_ggplot2绘图之图例微调
原标题:ggplot2绘图之图例微调
欢迎关注天善智能微信公众号,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区。 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入头条数据爱好者交流群,数据爱好者们都在这儿。
我们说一幅完整的图应包含至少4项元素,即:标题、坐标轴、图例和数据来源,在基于ggplot2图形的微调文中已经详细的介绍了图形的标题、坐标轴和数据来源的设置,包括属性设置和外观设置等。本文就详细为大家讲讲有关图例的设置,包括属性设置、位置设置、顺序设置、外观设置等。
一、清除图例
有时图例的存在并没有意义,如之前的图形中已经出现了图例,在之后的某些图中就没必要使图例存在;x轴或y轴已经表示了分类的各个水平(如盒形图),此时也没必要将图例保存下来。这里介绍两种清除图例的办法,即标度法和主题法。
library(ggplot2)
set.seed(1234)
type
region
values
df
head(df)
#盒形图保留图例是没有必要的
ggplot(data = df, mapping = aes(x = type, y = values, fill = type)) + geom_boxplot()
接下来使用标度法和主题法将图例删除,标度法通过使用scale_fill_discrete()函数实现,只需将guide参数设置为FALSE即可;主题法就是通过them()函数,将参数legend.position设为'none'即可。这两方法可以达到相同的功效。
ggplot(data = df, mapping = aes(x = type, y = values, fill = type)) + geom_boxplot() + scale_fill_discrete(guide = FALSE)
#或者
ggplot(data = df, mapping = aes(x = type, y = values, fill = type)) + geom_boxplot() + theme(legend.position = 'none')
上面的图只是举了个图例为填充色的例子,如果图例是由其他属性构成,如大小、形状、颜色、线型等,同样可以使用以上的标度法,只不过需要将对于的标度更改就可以了。下面就列出常用的标度出来:
基于填充色属性:
scale_fill_discrete() #离散变量填充色
scale_fill_continuous() #连续变量填充色
scale_fill_gradient() #连续变量色阶
scale_fill_gray() #灰度填充色
scale_fill_hue() #自定义画板填充色
scale_fill_brewer() #自定义画板填充色
scale_fill_manual() #自定义填充色
基于颜色属性:
scale_colour_discrete()
scale_colour_continuous()
scale_colour_gradient()
scale_colour_gray()
scale_colour_hue()
scale_colour_brewer()
scale_colour_manual()
基于大小属性:
scale_size_discrete()
scale_size_continuous()
scale_size_manual()
scale_size_area()
基于形状属性:
scale_shape_discrete()
scale_shape_continuous()
scale_shape_manual()
基于线型属性:
scale_linetype_discrete()
scale_linetype_continuous()
scale_linetype_manual()
如果图例是必不可少的,为了美观,可能需要对图例做更多的改动,如图例位置的摆放、顺序的重设定、外观设置等。下面就看看如何使我们的图例变得更具吸引眼球。
二、修改图例位置
有关图例位置的更改,可以通过主题theme()函数实现,只需要通过调整legend.position()参数的设定就可以随心所欲的摆放图例位置。
library(dplyr)
#数据汇总分析
df2
df3 % summarize(., Total = sum(values))
head(df3)
#默认情况下的图例
p
p
#更改图例位置
p + theme(legend.position='bottom')
legend.position可以设置为顶部(top),底部(bottom)、左边(left)和右边(right)。发现图标在顶部或底部的话,原来的图形会被压缩,高度明显变矮。为了解决这样的问题,legend.position还可以设置图例的具体位置,即legend.position = c(x, y)。注意,这里的x和y的取值范围均为[0,1]。
#将图例放到图形内部,并设置为左上角
p + theme(legend.position=c(0,1))
咦?这位置怎么跑的很奇怪?虽是左上角,怎么还跑到图形外面去了?因为默认情况下图例的中心点位置设在了(0,1)的位置,如果需要更改图例中心点位置,则需使用legend.justification = c(x, y)进行设置,如legend.justification = c(1,0)表示图例中心点在图例的左上角。下面使用legend.justification重新绘制一下图例的位置:
p + theme(legend.position=c(0,1), legend.justification=c(0,1))
Perfect!图例不再错误的偏移了。有没有发现不和谐的地方?图形的背景为灰色,而图例的背景为白色,明显感觉像是不专业的PS工作者,如何让图例融入到图形中呢?很简单,只需要进一步设置图例背景主题即可。
p + theme_bw() + theme(legend.position=c(0,1), legend.justification=c(0,1)) + theme(legend.background = element_rect(fill = 'white', colour = 'black'))
其中,theme_bw()将原来的灰色背景设置为黑白背景,fill设置图例背景色为白色, colour设置图例边框为黑色。如果不需要边框色的话,就不需要指定颜色属性的值。
三、修改图例内容的顺序
如果我想把图例内容的顺序改一改,即West在East之上,该如何实现呢?ggplot2包仍然允许你添加少量的代码就可以实现目的。
p + theme_bw() + theme(legend.position=c(0,1), legend.justification=c(0,1)) + theme(legend.background = element_rect(fill = 'white', colour = 'black')) + scale_fill_discrete(limits = c('West','East'))
哎?跟上一幅图相比,发现一个问题,虽然图例内容的顺序发生了变化,但原本的颜色跟着变化了,即原来East为粉红色变为了蓝色,原来West为蓝色变为了粉红色,而且条形图的顺序并没有跟着发生变化。在我看来颜色的变化并不是重点,重点是条形图的顺序纹丝不动,如果想让图例项目顺序和条形图顺序一致的话,该如何操作呢?实际也很简单,只需将因子顺序改变即可。
ggplot(data = df3, mapping = aes(x = type, y = Total, fill = factor(region, levels = c('West','East')))) + geom_bar(stat = 'identity', position = 'dodge') + theme_bw() + theme(legend.position=c(0,1), legend.justification=c(0,1)) + theme(legend.background = element_rect(fill = 'white', colour = 'black')) + scale_fill_discrete(limits = c('West','East')) + labs(fill = 'region')
四、图例内容顺序的整体逆转
如何逆转图例的整体内容呢?同样很简单,只需使用guide()函数就可以轻松实现:
#原始默认的图例内容顺序
ggplot(data = df3, mapping = aes(x = region, y = Total, fill = type)) + geom_bar(stat = 'identity', position = 'dodge')
#实现整体图例内容的逆转
ggplot(data = df3, mapping = aes(x = region, y = Total, fill = type)) + geom_bar(stat = 'identity', position = 'dodge') + guides(fill = guide_legend(reverse = TRUE))
五、修改图例标题和图例项目的内容
使用labs()函数,通过设定fill、colour、shape、size、linetype等属性的值,就可以更改图例标题了。当然也可以通过标度方法达到相同的目的,以例子说明这两种方法的应用:
ggplot(data = df3, mapping = aes(x = region, y = Total, fill = type)) + geom_bar(stat = 'identity', position = 'dodge') + labs(fill = '类型by_labs')
#或者
ggplot(data = df3, mapping = aes(x = region, y = Total, fill = type)) + geom_bar(stat = 'identity', position = 'dodge') + scale_fill_discrete(name = '类型by_scale')
#当然也可以通过这种方式删除图例标题
ggplot(data = df3, mapping = aes(x = region, y = Total, fill = type)) + geom_bar(stat = 'identity', position = 'dodge') + labs(fill = '')
#修改图例项目的内容
ggplot(data = df3, mapping = aes(x = region, y = Total, fill = type)) + geom_bar(stat = 'identity', position = 'dodge') + scale_fill_discrete(labels = c('Level01','Level02','Man','Women','Children'))
六、修改图例标题和图例内容的外观
之前我们说过,修改图形标题、坐标轴标签和刻度标签的外观可以通过主题方式实现,这里同样也可以通过主题theme()函数实现图例标题和图例内容的外观。
#默认情况下的图例
p
p
#修改图例标题和图例内容的外观
p + theme(legend.title = element_text(colour = 'steelblue', size = 15, face = 'bold.italic')) + theme(legend.text = element_text(colour = 'red', face = 'bold'))
参考文献:
R语言_ggplot2:数据分析与图形艺术
R数据可视化手册
转载请保留以下内容:
本文来源自天善社区每天进步一点点2015老师的博客(公众号)。
原文链接: https://ask.hellobi.com/blog/lsxxx2011/7573返回搜狐,查看更多
责任编辑:
ggplot2不要图例_ggplot2绘图之图例微调相关推荐
- ggplot2 | 图例(Ⅰ):图例函数、主题函数中的图例参数
本篇是ggplot2基础语法系列的第六篇推文,来介绍与图例相关的函数和参数. library(ggplot2) library(patchwork) 下面两幅图代码的区别仅在于映射关系中,一个是col ...
- R语言ggplot2可视化:自定义设置连续变量图例(legend)宽度(width)、自定义设置连续变量图例位置(position)、自定义设置连续变量图例连续渐变
R语言ggplot2可视化:自定义设置连续变量图例(legend)宽度(width).自定义设置连续变量图例位置(position).自定义设置连续变量图例连续渐变 #初始示例(图例互相分离.图例细线 ...
- R语言ggplot2可视化自动换行适配长文本图例(legend)实战:Multiple Lines for Text per Legend Label
R语言ggplot2可视化自动换行适配长文本图例(legend)实战:Multiple Lines for Text per Legend Label #导入包及数据处理 library(string ...
- R语言ggplot2可视化为复杂图自定义图例、手动构造图例(legend)实战
R语言ggplot2可视化为复杂图自定义图例.手动构造图例(legend)实战 目录 R语言ggplot2可视化为复杂图自定义.手动构造图例(legend)实战
- R语言ggplot2可视化将颜色图例和形状的图例组合成综合图例实战
R语言ggplot2可视化将颜色图例和形状的图例组合成综合图例实战 目录 R语言ggplot2可视化将颜色图例和形状的图例组合成综合图例实战
- R语言ggplot2可视化移除多余的图例信息实战
R语言ggplot2可视化移除多余的图例信息实战 目录 R语言ggplot2可视化移除多余的图例信息实战 #仿真数据
- R语言ggplot2可视化抑制(部分)图例(legend)输出实战:抑制颜色图例输出、保留数据点形状图例输出
R语言ggplot2可视化抑制(部分)图例(legend)输出实战:抑制颜色图例输出.保留数据点形状图例输出 目录 R语言ggplot2可视化抑制图例输出实战 #ggplot2可视化输出图形(默认图例 ...
- Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)
Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式.清除原有图像.设置横坐标显示文字/旋转角度.添加图例.绘图布局自动调整.图像显示.图像暂停) 目 ...
- echarts 饼图的图例的颜色和图例的颜色相同的设置
在charts中设置图例的颜色和图例字体的颜色相同 legend: { orient: 'vertical', right: 10, textStyle:{ ...
最新文章
- 5000并发的qps是多少_高并发初体验记录-02
- nohup 输出日志到文件_超详细的EFK安装部署教程--filebeat日志数据采集
- JavaScript 技术篇-js正则表达式匹配字符串左右两边是否包含空格
- Pycharm下载 安装 和谐 与 卸载
- OpenGL ES之GLSL实现仿抖音“灰度滤镜”和“颠倒滤镜”效果
- 125KHz 100cm ID 读卡电路_智能卡制作频率13.25MHZ与125KHZ的区别
- 有源代码的iphone项目
- 训练日志 2018.9.12
- 【牛客网】:数据结构——时间复杂度,算法复杂度
- LACP协议:链路聚合/华为交换机LACP
- 实时数仓-数据采集层_1
- BZOJ4715 囚人的旋律
- 零基础入门学习Python4
- python实现excel计算_用python实现简单EXCEL数据统计的实例
- 友盟单点推送(推送给单个设备)
- 数字图像处理与Python实现-沃尔什-哈达玛变换(Walsh-Hadmard Transform,WHT)
- 成长经历:浅谈OSINT认知
- 一个有用的Win32消息处理宏HANDLE_MSG
- Linux驱动快速入门
- 我才22岁,我再玩一年又能怎么样?等我23岁的时候,一定给你活出个人样
热门文章
- 用友uap nc65开发-单据联查相关开发
- identity的作用
- 做一个小exe,双击它使用指定的浏览器打开指定的网页
- 轻型汽车驱动桥设计(说明书+CAD图纸+pro三维+答辩PPT)
- 按照 老罗博客学习安卓 记录
- 货物搬运(move)
- gcc的-g,-o,-c,-D,-w,-W,-Wall,-O3等参数的意义
- 10-120V输入 输出可调 电流5A 外置MOS降压型DC-DC电源芯片
- python基础知识,元祖是什么?元祖的结构?
- 18个程序员才看得懂的段子!