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)

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) #垂线

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值