R语言—数据可视化分析

不想记笔记qaq

但是书只有纸质版的。

为了学shiny框架做毕设qaq

GITHUB地址:

github-rstudio/shiny-examples

SHINY官方教程:

shiny.rstudio-tutorial-lesson1

书的数据下载:

csv数据

画图不显示:控制台运行 dev.off() / dev.new()

第1章 R语言入门

1.2 创建R数据

  • <- :赋值
  • c() :创建向量
  • matrix(a):用向量a创建矩阵,nrow=?,ncol=?,byrow=TRUE
  • 将无序因子转化为数值:as.numeric(factor(a))
  • 矩阵和数据框的转换:as.matrix(frame)/as.data.frame(matrix)

1.3 数据的其他操作

1.3.1 数据的读取和保存

#读取数据
table <- read.csv("/") #含有标题的
table <- read.csv("/", header=False) #不含有标题的
load("/") #R数据

#保存数据
write.csv(table, file="/") #保存至csv
save(table, file="/")      #以R格式保存数据

1.3.2 数据类型的转换

  • 变量转化为向量
vector <- as.vector()
  • 数据框<->矩阵
as.matrix(frame)
as.data.frame(matrix)
  • 短格式转换为长格式:其中的id.vars称为标识变量,用于指定按哪些因子汇集其他变量。
library(reshape2) 
table <- melt(table, id.vars, variable.name...)

1.3.3 生成随机数

rnorm(n, mean=0, sd=1)

1.3.4 数据抽样

sample(x, size, replace = FALSE, prob = NULL)

1.4 生成频数分布表

R中生成列联表的函数有base包中的table函数(一、二维),stats包中的ftable函数(多维),vcd包中的structable函数(多维)。

1.4.1 类别数据频率分布表

  • 一维频数分布表—> 百分比表
mytable <- table(data1_1$满意度)
prob.table(mytable)*100
  • 二维列联表
mytable <- table(table1$性别, table1$满意度)
addmargins(mytable) #添加边际和
  • 多维列联表:row和col的数量随意
mytable <- ftable(data1, row.vars = c("", ""), col.vars = "")
  • 高维扁平化表:formula是一个表达式,用于指定行变量和列变量;direction是指定拆分方向(‘h’, 'v');
structable(formula, data, direction)

1.4.2 数值数据类别化

  • 类别化:Sturges:K=1+log10(n)/log10(2);
nclass.Sturges(data1$销售额)
  • 使用cut函数生成频数分布表
d <- table(cut(v, breaks=30*(17, 24), right = FALSE, dig.lab = 4))
  • 使用actuar包中的grouped.data函数实现对数据的分组
grouped.data(v, breakers = 5, right = FALSE)
#breakers = c(500, 550, 600, 650, 700, 750)

1.5 编写R函数

layout(matrix(c(1,2,3,3),2,2,byrow=TRUE))
mai:以数值向量表示边界大小,顺序为"下、左、上、右",单位为英寸
functionname <- function(a1, a2, ...) {
    
}

第2章 R绘图基础

2.1 R的基本绘图函数

2.1.1 高级绘图函数

1 高级绘图函数

  • plot根据不同的数据类型所绘制不同的图形
函数 数据类型 图形
plot() 数值 散点图
plot() 因子 条形图
plot() 一维列联表 条形图
plot() 数值,数值 散点图
plot() 因子,因子 脊形图
plot() 二维列联表 马赛克图
plot() 数值,因子 箱线图
plot() 因子,数值 带状图
plot() 数据框 散点图矩阵
  • 拟合线性模型
par(mfrow = c(2, 2), mai = c(0.6, 0.6, 0.2, 0.1), cex = 0.6)
model <- lm(R~Python, data = data2_1)
plot(model)
  • plot函数及其参数:查help

2 其他高级绘图函数

graphics包中其他一些高级绘图函数

2.1.2 低级绘图函数

chull(x, y = NULL):计算位于指定点集凸包上的点的子集(即数据点集合中最外围,轮廓点集合)

#par(mai = c(0.7, 0.7, 0.4, 0.4), cex=0.8)
set.seed(1)
x <- rnorm(200)
y <- 1+2*x+rnorm(200)
d <- data.frame(x, y)
plot(x, y, xlab="x=自变量", ylab="y=因变量")
grid(col="grey60")
axis(side=4, col.ticks = "blue", lty=1)

polygon(d[chull(d), ], lty=6, lwd=1)
points(mean(x), meand(y), pch=19, cex=5, col=2)
abline(v=mean(x), h=mean(y), lty=2, col="gray30")
abline(lm(y~x), lwd=2, lty=6)
lines(lowess(y~x, f=1/6), col=4, lwd=2, lty=6)#拟合曲线
segments(-0.8, 0, -1.6, 3.3, lty=6, col="blue")#左示意曲线
arrows(0.45, -2.2, -0.8, -0.6, code = 2, angle = 25, length = 0.06, col=2)#带箭头的线段头

text(-2.2, 3.5, labels=expression("拟合的曲线"), adj=c(-0.1, 0.02), col=4)
rect(0.4, -1.6, 1.6, -3.5, col="pink")
mtext(expression(hat(y)==hat(beta)[0]+hat(beta)[1]*x), cex=1.2, side=1, line=-5.6, adj=0.72)
legend("topleft", legend=c("拟合的曲线", "拟合的曲线"), lty=c(1, 6), col=c(2, 4), cex=0.8, fill=c("red", "blue"), ncol=1, inset=0.02)
title("散点图以及拟合直线和曲线", cex.main=0.8, font.main=4)
box(col=4, lwd=2)

R语言—数据可视化分析_第1张图片

2.2 图形参数与图形控制

2.2.1 绘图参数

  • title("");设置标题  main="" 设置图标标题
  • horiz=TRUE;水平放置
  • density = 40;填充密度
  • xlab="", ylab="";x,y轴标签
  • col=c("lightgreen", "skyblue");varwidth = FALSE;箱线图颜色设置

2.2.2 图形设置

使用par设置图的排列方式,图形的边界大小,图中字体或符号的大小,主标题字体的大小等;如果希望所有的图形都使用相同的参数,可将参数放在par函数中统一设置,如果不同的图形有不同的参数设置,则需要将参数设置放在相应的绘图函数中。

2.2.3 图形颜色

使用colors()函数可以查看R全部567种颜色的名称列表;在graphics中

  • col主要用于设置绘图区域中绘制的数据符号、线条、文本等元素
  • bg用于设置图形的前景颜色(坐标轴、图形的边框)
  • fg用于设置图形的背景颜色,如图形区域的颜色

使用多种颜色:col=colors(),col=colors(256),col=rainbow(n, start=0.4, end=0.5) #渐变

2.3 页面布局与图形组合

2.3.1 用par函数布局页面

  • 参数mfrow=c(nr, nc)表示按行填充各图;参数mfcol=c(nr, nc)则表示按列填充各图;

2.3.2 使用layout函数布局页面

相当于在每一个小图里面,继续布局。

par(mfrow=c(1,2))
layout(matrix(c(1, 2, 3, 3), nrow=2, ncol=2, byrow=TRUE), heights=c(2, 1))
layout.show(3)#预览

matrix(c(1, 2, 3, 4, 5, 5, 6, 7, 8), 3, 3, byrow=TRUE), widths=c(2:1), heights=c(1:1);宽是2:1

2.3.3 同时打开多个绘图窗口

dev.new();打开多个绘图窗口,以比较不同的图像,最多63个;

第3章 类别数据可视化

3.1 一维表的可视化

data1_1 <- read.csv("D:/soft/other/R/data/mydata/chap01/data1_1.csv")
attach(data1_1)
table2 <- table(网购次数)
bar <- barplot(table2, col=grey.colors(3), ylim = c(0, 1.1*max(table2)), xlab="网购次数", ylab = "人数", cex.names = 0.8, main = "abc")
text(bar, table2, labels = table2, pos = 3) #频数标签
lines(bar, table2, type = "o", col = "red", pch=19) #频数折线
points(bar, table2, type = "h", col = "red", lwd = 1, lty=6) #垂线

 R语言—数据可视化分析_第2张图片

或者使用sjPlot;会自动加上频数标签和各类别频数百分比等

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(R)