一、预备知识
1.使用图形
#绑定数据框mtcars
attach(mtcars)
#打开一个图形窗口并生成散点图
plot(wt,mpg)
#添加一条最优拟合曲线
abline(lm(mpg~wt))
#图形名称
title("aaa")
#数据框解除绑定
detach(mtcars)
2.图形的保存
pdf() 、 win.metafile()、png()、jpeg()、bmp()、tiff()、xfig()等其他格式
3.创建多个图形并随时查看每一个
方法一:创建新的一幅图之前打开一个新的图形窗口,每一幅图形将出现在新的窗口中
dev.new()
方法二:通过图形用户界面查看多个图形
“历史”history-----"记录“recording-----点击上一个previous或下一个next
方法三:使用函数同时打开多个图形窗口,并选择将哪个图形发送到哪个窗口中
dev.new()、dev.next()、dev.prev()、dev.set()、dev.off()
可以使用help(dev.cur)查看帮助
二、基础描述分析(案例说明)
1.数据准备
#载入相关的包
library(plyr)
library(reshape2)
#读入数据
novel<-read.csv("E:/R学习资料/data/novel.csv",fileEncoding = "UTF-8")
2.定性变量
hist(v,main,xlab,xlim,ylim,breaks,col,border)
a = table(novel$小说类型)
a = a[order(a, decreasing = T)]
###条形图
barplot(H names.arg = M xlab = “Revenue” ylab = “Month” col = “blue” border = “red” main = “Revenue chart” horiz = TRUE)(数据集 坐标项名称 坐标标签 坐标标签 主题颜色 边缘颜色 标题 水平方向)
barplot(a[1:5], names.arg = names(a)[1:5], col = rainbow(5, alpha = 0.4), xlab = "小说类型", ylab="频数")
###饼状图
pie(数据、数据对应的标签、名称、颜色)
pie(c(4000, 3000, 2000, 1000), labels = c("北京", "天津", "上海", "广州"), main = "啊啊啊", col = 2:5)
#将小说类型进行合并
novel$'小说类别' = "其他"
novel$'小说类别'[novel$小说类型 == "都市小说" | novel$小说类型 == "职场小说"] = "都市类小说"
novel$'小说类别'[novel$小说类型 == "科幻小说" | novel$小说类型 == "玄幻小说" | novel$小说类型 == "奇幻小说"] = "幻想类小说"
novel$'小说类别'[novel$小说类型 == "武侠小说" | novel$小说类型 == "仙侠小说"] = "武侠类小说"
#求出每个类别所占百分比
ratio = table(novel$'小说类别') / sum(table(novel$'小说类别')) * 100
#定义标签
标签中显示百分比
label1 = names(ratio)
每个百分比所对应的类型
label2 = paste0(round(ratio, 2), "%")
###画饼状图
pie(ratio, col = heat.colors(5, alpha = 0.4), labels = paste(label1, label2, sep = "\n"), font = 1)
3.定量变量
###直方图
novel$总字数 = novel$总字数 / 10000
par(mfrow = c(1, 2))
#去掉异常值
chara = sort(novel$总字数)[1:1500]
hist(v,main,xlab,xlim,ylim,breaks,col,border)
v—直方图中所使用数值的向量
main—图表的标题
col—设置条形图的颜色
border—设置每个栏的边框颜色
xlab—描述X轴
xlim—指定x轴的取值范围
ylim—指定y轴的取值范围
breaks—提及每个栏的宽度
hist(chara, breaks = 10, xlab = "总字数(万字)", ylab = "频数", main = "", col = "lightblue")
hist(chara, breaks = 100, xlab = "总字数(万字)", ylab = "频数", main = "", col = "lightblue")
4.两个变量
#将画板分为1行2列
par(mfrow = c(1, 2))
boxplot(log(总点击数) ~ 小说性质, data = novel, col = rainbow(2, alpha = 0.3), ylab = "总点击数对数")
boxplot(log(评论数) ~ 小说性质, data = novel, col = rainbow(2, alpha = 0.3), ylab = "总评论数对数")
#将画板恢复
par(mfrow = c(1, 1))
test = novel[novel$评论数 < 8000 & novel$总点击数 < 200000, ]
x = test$总点击数
y = test$评论数
plot(x, y, pch = 1, cex = 0.6, xlab = "总点击数", ylab = "评论数")
#分组做箱线图
aa = cut(x, breaks = c(0, 50000, 100000, 150000, 200000), labels = c("(0-5w]", "(5w-10w]", "(10w-15w]", "(15w-20w]"))
boxplot(y ~ aa, col = rainbow(4, alpha = 0.4), xlab = "总点击数", ylab = "评论数")