R语言可视化——ggplot图表系统中的形状
今天跟大家分享ggplot图表系统中形状。
在ggplot函数系统中,形状是一类重要的映射属性,如同颜色一样,它可以被赋予给变量,当然也可以直接指定实际的形状类别。
library(ggplot2)
library(reshape2)
data<-data.frame(Name = c("苹果","谷歌","脸书","亚马逊","腾讯"),Company = c("Apple","Google","Facebook","Amozon","Tencent"),Sale2013 = c(5000,3500,2300,2100,3100),Sale2014 = c(5050,3800,2900,2500,3300),Sale2015 = c(5050,4000,3200,2800,3700),Sale2016 = c(6000,4800,4500,3500,4300))
mydata<-melt(data,id.vars=c("Name","Company"),variable.name="Year",value.name="Sale")
ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point()
以上函数通过一个简单的折线图+散点图的形式展现了默认状态下输出的散点形状。
ggplot函数的图层理念中,修改局部图层的元素,需要在局部图层内进行设定,这里需要在geom_point()函数内部进行形状设定。
R绘图系统中存储着的形状符号多达25种:
我们尝试着选择几种形状进行展示:
ggplot(mydata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point(shape=0,size=3)
ggplot(mydata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point(shape=10,size=3)
ggplot(mydata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point(shape=8,size=3)
ggplot(mydata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point(shape=24,size=3)
ggplot(mydata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point(shape=23,size=3)
你也可以通过将形状映射指定给一个分类变量,这样不同的形状将会作为分类标识:
ggplot(mydata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point(aes(shape=Year),size=3)
默认情况下,散点图只有colour属性,没有fill属性,但是当散点图被赋予形状映射之后,他就会扩展fill属性。
ggplot(mydata,aes(Company,Sale,group=Year))+geom_line()+geom_point(shape=22,size=3,colour="black",fill="red")
至于形状的大小,你可以根据自己的需要和喜好自由调整,就像调整线条的size一样。
ggplot(mydata,aes(Company,Sale,group=Year))+geom_line()+geom_point(shape=22,size=5,colour="black",fill="red")
因为形状属于分类性质的映射属性,所以形状不可以被指定给连续性变量:
ggplot(mydata,aes(Company,Sale,group=Year))+geom_line()+geom_point(aes(shape=Sale),size=5,colour="black",fill="red")
软件提示:
Error: A continuous variable can not be mapped to shape
但是形状的大小是可以被映射给连续性变量的:
ggplot(mydata,aes(Company,Sale,group=Year))+geom_line()+geom_point(aes(size=Year),shape=22,colour="black",fill="red")
当将形状大小(size)指定给离散变量时,虽然可以出来图表,但是软件提示不建议将形状大小映射给离散变量。
ggplot(mydata,aes(Company,Sale,group=Year))+geom_line()+geom_point(aes(size=Year,colour="grey"),shape=22,fill="red")
Warning message:
Using size for a discrete variable is not advised.
基于以上叙述,这里我想总结两点:
一、关于属性映射的问题(形状、大小、颜色、线条)
- 形状属性只能通过连续型变量进行映射;
- 大小属性同时可以指定给连续性变量、离散型变量(软件并不建议)。
- 颜色变量是所有属性中为数不多的既可以使用离散型变量、又可以使用连续性变量进行映射的属性
二、关于制定属性映射时shape、size、colour(fill)的位置问题。
- 如果属性是指定给数据集中的变量(无论是连续性还是离散型)的话,那么一定要包含在美学属性之内(aes()):因为只有包含在aes()中,软件才能通过在数据集中调用对应变量进行映射。
- 当要将属性映射指定给具体的属性类别时(比如具体的颜色名称、色值以及形状大小、代号和类别),那么要将其放在对应图层(geom_xxx())内,美学属性【aes()】系统外。
- 作用于单个图层的映射属性要放在对应图层中,(比如作用于线条的属性要放在geom_line()内,作用于形状的属性要放在geom_point()内),作用于全局的属性要放在全局系统函数层内【ggplot()】。(比如本例中同时作用于折线图和散点图的数据集、x轴y轴变量以及分组变量等)
以上是个人学习ggplot函数过程中所获得的一些体会和心得,希望能够帮助大家在学习R语言可视化过程中少走一些弯路,限于个人能力和水平,其中难免会有些叙述不当或者纰漏之处,还望小伙伴们可以批评指正。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 树莓派基础实验21:烟雾报警传感器实验
- 树莓派基础实验22:红外遥控传感器实验
- Spring的BeanUtil的copyProperties方法 慎用!!
- (译)SDL编程入门(9)视口
- (译)SDL编程入门(7)纹理加载和渲染
- 三步带你开发一个短链接生成平台
- 绕安全狗的那些事
- single-spa 基础概念
- DVWA-对Command Injection(命令注入)的简单演示与分析
- 如何探测内网存活主机
- Java ServletContext详解
- Java web Cookie详解(持久化+原理详解+共享问题+设置中文+发送多个Cookie)
- 实战记录之SQL server报错手工注入
- 树莓派基础实验23:触摸开关传感器实验
- springmvc 文件下载 VS resteasy 文件上传下载