R自带的作图工具有plot,但是在使用R作图时,不得不提到的一个强大的包ggplot2。ggplot2中qplot和ggplot函数也可以用来作图。下面会一一介绍在R中使用这些函数来制作散点图(scatter plot)、线图(line plot)、条形图(bar graph)、柱状图(histogram)、密度图(density)和箱线图(boxplot)。(上述图形时做数据分析时常用到的,相关概念百度或者wiki搜索都有。)
1. Scatter plot散点图(使用数据集:mtcars)
数据集中wt是车身重量,mpg是每英里使用多少加仑的汽油
plot(mtcars$wt,mtcars$mpg)
plot的使用格式:plot(x, y, …),x参数指图中x坐标轴的坐标,y参数指图中y坐标轴的坐标,…指还有其他可用的参数。
qplot(wt,mpg,data=mtcars)
qplot的使用格式:qplot(x, y = NULL, data,…),data参数指所用到的数据集。(这里也可以使用这种形式:qplot(mtcars$wt,mtcars$mpg)
ggplot(mtcars,aes(wt,mpg))+geom_point()
ggplot这个函数使用起来比较特别,可以看成这种格式:ggplot(所用到的资料)+geom_要绘制的图形类型()+…(可以加多个想要绘制的图形类型)。
ggplot()个人建议大家使用,另外两个能看的懂就好了。
2. Line plot线图(使用数据集:pressure)
pressure数据集就两列temperature和pressure。
plot(pressure$temperature,pressure$pressure,type='l')
前面提到,…是还可以使用其他参数,这就就用了一个type参数来选择想要绘制的图形,没有选择type参数默认是点图。
type参数可选择的图形有:
符号 | 绘制的表格 |
p | 点图 |
l | 线图 |
b | 点图与虚线图 |
c | 虚线图 |
o | 点图与实线图 |
h | 直线条形图 |
s | 阶梯图 |
还有两个 | 不写了,自己看帮助文档 |
points(pressure$temperature,pressure$pressure)
这个方法了解即可。
qplot(temperature,pressure,data = pressure,geom = 'line')
qplot(temperature,pressure,data = pressure,geom = c('line','point'))
qplot函数做简单的图形比较方便。geom参数还可以引用列表。
ggplot(pressure,aes(temperature,pressure))+geom_line()+geom_point()
ggplot函数用起来会比qplot函数复杂点(qplot的q就是quick),但是它的代码看起来比较直观,容易理解。
3.Bar graph条形图(数据集:mtcars&BOD)
BOD数据集只有两列time和demand(需要的氧气量)
条形图是显示数据频数的图,所以我们要用数据框中的数据生成一个统计频数的表。
t<-table(mtcars$cyl)
cyl是车子汽缸数量得到表格如下:
汽缸数 | 车子数量 |
4 | 11 |
6 | 7 |
8 | 14 |
barplot(t)
ggplot(BOD,aes(Time,demand))+geom_bar(stat = 'identity')
stat=’identity’y意为不对数据做统计运算,如果这里没有这步会报错。为什么会这样希望有人能点拨我一下~
这里新版本的R不能用gplot做条形图。
4.Histogram直方图(数据集:mtcars)
hist(mtcars$mpg)
qplot(mpg,data = mtcars,binwidth=4)
ggplot(mtcars,aes(mpg))+geom_histogram(binwidth = 4)
binwidth参数是调节横坐标的区间,你可以任意调节你认为合适的区间。条形图与直方图看起来相似,但是却是不一样的,条形图的x轴是一个确定的数值,而直方图是一个区间。
5.Density密度图(数据集:mtcars)
plot(density(mtcars$mpg))
如果就输入density(mtcars$mpg)
会发现只会输出相关的统计数据。
qplot(mpg,data = mtcars,geom = 'density')
ggplot(mtcars,aes(mpg))+geom_density()
6.Boxplot箱线图(数据集:ToothGrowth)
箱线图可以查看异常值,如果有观察超出上下边界,那么就是异常值。
plot(ToothGrowth$supp, ToothGrowth$len)
plot函数能自动识别分类的字符串。
boxplot(len~supp,data = ToothGrowth)
qplot(supp,len,data=ToothGrowth,geom = 'boxplot')
ggplot(ToothGrowth,aes(supp,len))+geom_boxplot()
以上都是最基础的作图方法,后续还可以改变参数来进行微调。