在本教程的第12章我们简单介绍了R语言中的可视化包ggplot2,这个可视化工具十分灵活强大,本章来具体的介绍一下如何来利用它做散点图。

ggplot2画图的原理其实和Photoshop有类似之处,都是多个图层堆叠起来的,如下图。

那么我们在绘图和调整ggplot2的绘图就可以将分别调整图中的坐标、条形和上下限等了。

 

首先来看看该包导入数据的基本格式

#准备数据!

library(mlbench)
data(Ozone, package="mlbench")
inputData <- Ozone
names(inputData) <- c("Month", "Day_of_month", "Day_of_week", "ozone_reading", 
"pressure_height", "Wind_speed", "Humidity", "Temperature_Sandburg", 
"Temperature_ElMonte", "Inversion_base_height", "Pressure_gradient", 
"Inversion_temperature", "Visibility")
#读取包
library(ggplot2)
#首次绘图
ggplot(inputData,aes(x=Month,y=ozone_reading))+geom_point()
#读取数据结构
head(inputData[,c("Month","ozone_reading")])
  Month ozone_reading
1     1             3
2     1             3
3     1             3
4     1             5
5     1             5
6     1             6

 

我们这里可以看到,x轴和y轴对应的数据分别为两列数据,在以后我们给数据填充颜色或者指定形状的时候只需要在旁边新增一列即可。

我们再来看一下刚刚的绘图代码,ggplot函数让我们将数据导进去,通过里面的aes()制定x轴数据,y轴数据,而后面的geom_point()则表明是散点图,函数会报一个warning表面帮我们把5个具有空值的数据剔除。
绘图效果如下

 

如果要加分类颜色

ggplot(inputData,aes(x=Month,y=ozone_reading,color=Day_of_week))+geom_point()

在aes()里面加上color指定到对应的列即可,绘图效果如下

 

如果要加形状

ggplot(inputData,aes(x=Month,y=ozone_reading,color=Day_of_week,shape=Day_of_week))+
  geom_point()+
  scale_shape_manual(values = 0:6)

加一个shape指标,并且由于形状会超过6个需要手动指定形状,会用到这个函数scale_shape_manual(values = 0:6),绘图效果如下

 

如果我们嫌点太小了,可以

ggplot(inputData,aes(x=Month,y=ozone_reading,color=Day_of_week,shape=Day_of_week))+
  geom_point(size=5)+
  scale_shape_manual(values = 0:6)

通过调整size参数调大,绘图效果如下

 

我们还可以改变它配到的填色方案

ggplot(inputData,aes(x=Month,y=ozone_reading,color=Day_of_week,shape=Day_of_week))+
  geom_point(size=5)+
  scale_shape_manual(values = 0:6)+
  scale_colour_brewer(palette="Set1")
#加scale_colour_brewer(palette="Set1")指定我们的调色盘

 

当然,我们的坐标轴和背景填充色也是可以修改的

ggplot(inputData,aes(x=Month,y=ozone_reading,color=Day_of_week,shape=Day_of_week))+
  geom_point(size=5)+
  scale_shape_manual(values = 0:6)+
  scale_colour_brewer(palette="Set1")+
  theme_bw()
#通过加theme_bw()调整我们的风格。

 

我们觉得数据都放在一条竖线上不好,还可以这么调整

ggplot(inputData,aes(x=Month,y=ozone_reading,color=Day_of_week,shape=Day_of_week))+
  geom_point(size=2,position="jitter")+
  scale_shape_manual(values = 0:6)+
  scale_colour_brewer(palette="Set1")+theme_bw()
#通过position="jitter"调整位置

打散并随机放到对应的x轴周围

假设我们更复杂一些,想要将各个月的数值进行分别统计一下,可以
 

假设我们更复杂一些,想要将各个月的数值进行分别统计一下,可以
ggplot(inputData,aes(x=Month,y=ozone_reading,color=Day_of_week,shape=Day_of_week))+
  geom_point(size=2,position="jitter")+
  scale_shape_manual(values = 0:6)+
  scale_colour_brewer(palette="Set1")+
  theme_bw()+
  stat_boxplot(geom="errorbar", width=.5)
#通过加stat_boxplot来进行区间统计。

 

以上就是我们的散点图教程了。