今天跟大家分享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)的位置问题。
以上是个人学习ggplot函数过程中所获得的一些体会和心得,希望能够帮助大家在学习R语言可视化过程中少走一些弯路,限于个人能力和水平,其中难免会有些叙述不当或者纰漏之处,还望小伙伴们可以批评指正。