画图代码整理于菜鸟教程,包括了饼图、条形图、曲线图、散点图:
# R 绘图 - 饼图
# 语法格式如下:
# pie(x, labels = names(x), edges = 200, radius = 0.8,
# clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
# density = NULL, angle = 45, col = NULL, border = NULL,
# lty = NULL, main = NULL, …)
# x: 数值向量,表示每个扇形的面积。
# labels: 字符型向量,表示各扇形面积标签。
# edges: 这个参数用处不大,指的是多边形的边数(圆的轮廓类似很多边的多边形)。
# radius: 饼图的半径。
# main: 饼图的标题。
# clockwise: 是一个逻辑值,用来指示饼图各个切片是否按顺时针做出分割。
# angle: 设置底纹的斜率。
# density: 底纹的密度。默认值为 NULL。
# col: 是表示每个扇形的颜色,相当于调色板。
# 数据准备
info = c(1, 2, 4, 8)
# 命名
names = c("Google", "Runoob", "Taobao", "Weibo")
# 涂色(可选)
cols = c("#ED1C24","#22B14C","#FFC90E","#3f48CC")
getwd()
# 绘图
pie(info, labels=names, col=cols)
# 设置输出图片
png(file='runoob-pie.png', height=300, width=300)
# 绘图
pie(info, labels=names, col=cols)
# 数据准备
info = c(1, 2, 4, 8)
# 命名
names = c("Google", "Runoob", "Taobao", "Weibo")
# 涂色(可选)
cols = c("#ED1C24","#22B14C","#FFC90E","#3f48CC")
# 计算百分比
piepercent = paste(round(100*info/sum(info)), "%")
# 绘图
pie(info, labels=piepercent, main = "网站分析", col=cols, family='GB1')
# 添加颜色样本标注
legend("topright", names, cex=0.8, fill=cols)
#如果要绘制 3D 的饼图,可以使用 plotrix 库的 pie3D() 函数,使用前我们需要先安装:
install.packages("plotrix", repos = "https://mirrors.ustc.edu.cn/CRAN/")
# 载入 plotrix
library(plotrix)
# 数据准备
info = c(1, 2, 4, 8)
# 命名
names = c("Google", "Runoob", "Taobao", "Weibo")
# 涂色(可选)
cols = c("#ED1C24","#22B14C","#FFC90E","#3f48CC")
# 设置文件名,输出为 png
png(file = "3d_pie_chart.png")
# 绘制 3D 图,family 要设置你系统支持的中文字体库
pie3D(info,labels = names,explode = 0.1, main = "3D 图",family = "STHeitiTC-Light")
install.packages("showtext", repos = "https://mirrors.ustc.edu.cn/CRAN/") # 安装 showtext
library(sysfonts)
font_files() # 查看字体
pie3D(info,labels = names,explode = 0.1, main = "3D 图",family = "ArialUnicodeMS")
# 载入 showtext
library(showtext);
# 第一个参数设置字体名称,第二个参数为字体库路径,同目录下,我们写字体库名就可以了
font_add("SyHei", "SourceHanSansSC-Bold.otf");
# 设置文件名,输出为 png
png(file = "runoob-bar-cn.png")
cvd19 = c(83534,2640626,585493)
#加载字体
showtext_begin();
barplot(cvd19,
main="新冠疫情条形图",
col=c("#ED1C24","#22B14C","#FFC90E"),
names.arg=c("中国","美国","印度"),
family='sans' # 设置字体库
)
# 去掉字体
# showtext_end();
#barplot 中的数据既可以是向量,也可以是矩阵,现在我们生成一张新冠疫情 6 月和 7 月对比图
dev.off()
library(showtext);
font_add("SyHei", "SourceHanSansSC-Bold.otf");
cvd19 = matrix(
c(83017, 83534, 1794546, 2640626, 190535, 585493),
2, 3
)
# 设置文件名,输出为 png
png(file = "runoob-bar-1.png")
#加载字体
showtext_begin();
colnames(cvd19) = c("中国", "美国", "印度")
rownames(cvd19) = c("6月", "7月")
barplot(cvd19, main = "新冠疫情条形图", beside=TRUE, legend=TRUE, family='SyHei')
# 去掉字体
showtext_end();
#我们设置的颜色样本将是每各组的颜色样本:
dev.off()
library(showtext);
font_add("SyHei", "SourceHanSansSC-Bold.otf");
cvd19 = matrix(
c(83017, 83534, 1794546, 2640626, 190535, 585493),
2, 3
)
# 设置文件名,输出为 png
png(file = "runoob-bar-1.png")
#加载字体
showtext_begin();
colnames(cvd19) = c("中国", "美国", "印度")
rownames(cvd19) = c("6月", "7月")
barplot(cvd19, main = "新冠疫情条形图", beside=TRUE, legend=TRUE, family='SyHei')
# 去掉字体
showtext_end();
# beside 参数
# beside 设置矩形条堆叠的方式,默认为 FALSE:
#
# beside=FALSE 时,条形图的高度是矩阵的数值,矩形条是水平堆叠的。
# beside=TRUE 时,条形图的高度是矩阵的数值,矩形条是并列的。
library(showtext);
font_add("SyHei", "SourceHanSansSC-Bold.otf");
cvd19 = matrix(
c(83017, 83534, 1794546, 2640626, 190535, 585493),
2, 3
)
# 设置文件名,输出为 png
png(file = "runoob-bar-3.png")
#加载字体
showtext_begin();
colnames(cvd19) = c("中国", "美国", "印度")
rownames(cvd19) = c("6月", "7月")
barplot(cvd19, main = "新冠疫情条形图", beside=FALSE, legend=TRUE,col=c("blue","green"), family='SyHei')
# 去掉字体
showtext_end();
# R 绘图 - 函数曲线图
# R 中 curve() 函数可以绘制函数的图像,代码格式如下:
#
# curve(expr, from = NULL, to = NULL, n = 101, add = FALSE,
# type = "l", xname = "x", xlab = xname, ylab = NULL,
# log = NULL, xlim = NULL, …)
#
# # S3 函数的方法
# plot(x, y = 0, to = 1, from = y, xlim = NULL, ylab = NULL, …)
# 注:R 语言的类有 S3 类和 S4 类,S3 类用的比较广,创建简单粗糙但是灵活,而 S4 类比较精细。
#
# 参数:
#
# expr:函数表达式
# from 和 to:绘图的起止范围
# n:一个整数值,表示 x 取值的数量
# add:是一个逻辑值,当为 TRUE 时,表示将绘图添加到已存在的绘图中。
# type:绘图的类型,p 为点、l 为直线, o 同时绘制点和线,且线穿过点。
# xname:用于 x 轴变量的名称。
# xlim 和 ylim 表示x轴和y轴的范围。
# xlab,ylab:x 轴和 y 轴的标签名称。
# plot 函数中,x 和 y 分别表示所绘图形的横坐标和纵坐标。
#
# 以下我们绘制一个 sin(x) 函数的图表:
curve(sin(x), -2 * pi, 2 * pi)
# 定义函数 f
f = function (x) {
if (x >= 0) {
x
} else {
x ^ 2
}
}
# 生成自变量序列
x = seq(-2, 2, length=100)
# 生成因变量序列
y = rep(0, length(x))
j = 1
for (i in x) {
y[j] = f(i)
j = j + 1
}
# 绘制图像
plot(x, y, type='l')
dev.off()
#使用 plot() 函数对向量数据进行绘图:
# 向量数据
v <- c(7,12,28,3,41)
# 生成图片
png(file = "line_chart_label_colored.jpg")
# 绘图、线图颜色为红色,main 参数用于设置标题
plot(v,type = "o", col = "red", xlab = "Month", ylab = "Rain fall",
main = "Rain fall chart")
# R 绘图 - 散点图
# plot(x, y, type="p", main, xlab, ylab, xlim, ylim, axes)
# x 横坐标 x 轴的数据集合
#
# y 纵坐标 y 轴的数据集合
#
# type:绘图的类型,p 为点、l 为直线, o 同时绘制点和线,且线穿过点。
# main 图表标题。
#
# xlab、ylab x 轴和 y 轴的标签名称。
#
# xlim、ylim x 轴和 y 轴的范围。
#
# axes 布尔值,是否绘制两个 x 轴。
#
# type 参数可选择值:
#
# p:点图
# l:线图
# b:同时绘制点和线
# c:仅绘制参数 b 所示的线
# o:同时绘制点和线,且线穿过点
# h:绘制出点到横坐标轴的垂直线
# s:阶梯图,先横后纵
# S:阶梯图,先纵后竖
# n: 空图
#
#
# 创建一个简单的线图:
dev.off()
x<-c(10,40)
y<-c(20,60)
# 生成 png 图片
png(file = "runnob-test-plot2.png")
plot(x, y, "l")
#创建一个简单的线图,type 使用 o 参数,同时绘制点和线,且线穿过点:
dev.off()
x<-c(10,40)
y<-c(20,60)
# 生成 png 图片
png(file = "runnob-test-plot.png")
plot(x, y, "o")
# 使用 mtcars 数据集的 wt 和 mpg 列:
input <- mtcars[,c('wt','mpg')]
print(head(input))
# 生成 png 图片
png(file = "scatterplot.png")
# 设置坐标 x 轴范围 2.5 到 5, y 轴范围 15 到 30.
plot(x = input$wt,y = input$mpg,
xlab = "Weight",
ylab = "Milage",
xlim = c(2.5,5),
ylim = c(15,30),
main = "Weight vs Milage"
)
#散点图矩阵
# pairs(formula, data)
# 参数:
#
# formula 变量系列
#
# data 变量的数据集
# 输出图片
png(file = "scatterplot_matrices.png")
# 4 个变量绘制矩阵,12 个图
pairs(~wt+mpg+disp+cyl,data = mtcars, main = "Scatterplot Matrix")
网友评论