Plot


Plot疫情示例

rm(list = ls())
getwd()
setwd("B:/Temp1")
library(readxl)
data=read_xlsx("全国疫情整理-李世昱.xlsx")#读取数据

#自定义颜色和字体--------------------------------------
#运行rainbow(n)可以获得n种彩虹色
rainbowcolor=rainbow(7) #自定义颜色生成彩虹七色
windowsFonts(zhuanshu=windowsFont("迷你繁篆书"))  #更换运行环境,需要更改此字体,或下载此字体!

#读取数据----------------------------------------------
time<-c(data$报道时间) #读取时间数据,x轴
quezhen<-c(data$新增确诊) #读取确诊人数数据,y轴数据
chuyuan<-c(data$新增出院) #读取出院人数数据,y轴数据
siwang<-c(data$新增死亡) #读取死亡人数数据,y轴数据

#设置画布边距------------------------------------------
opar <- par(no.readonly = TRUE) #开启自定义参数
par(bty="u") #bty: 控制坐标系风格 有l、7、c、u风格
par("mar") #查看默认画布边距
par(mar=c(5.4,4.4,4.4,3.1))  #重新自定义边距

#输出tiff图---------------------------------------------
#LZW是一种无损压缩格式,不会丢失任何数据,但会减少文件大小
tiff("全国疫情变化.tif",height = 2600,width = 2850,res = 450,unit="px",compression = "lzw")

#Plot函数画图-------------------------------------------
plot(time,
     xaxt="n", 
     type = "o", #点线的样式
     pch=25, #点的样式,取值可以很大很大,会出现让人意想不到的情况,是一个神奇的参数。

     bg="red",#节点背景色
     cex=1, #折线节点点的大小
     lty=1, #线的样式
     lwd=1.5, #折线的粗细
     main ="1月11日—2月24日全国疫情变化",
     sub="Powered By李世?9?5  于2020/2/25晚",
     xlab = '', #x轴标题
     ylab = '人数', #y轴标题
     family='zhuanshu', #字体
     cex.main=2.4,cex.sub=1.5,cex.lab=1.4,cex.axis=1.5,
     ylim<-c(quezhen)) #设置y轴取值范围

#补充
     #ann=TRUE,#禁用标题,使用了title()函数来自定义标题
     #frame.plot=FALSE, #隐藏框架线

     #xaxt='n', #隐藏X轴,会留下框架
     #axes=FALSE, #隐藏所有坐标轴及框架线



#生成网格-----------------------------------------------------
grid(nx=10,ny=5) 

#画另外两条线-------------------------------------------------
lines(time,chuyuan,type="o",pch=18,col=rainbowcolor,lwd=2,cex=1) #生成出院人数
lines(time,siwang,type="o",pch=8,col="red",lwd=1.5,cex=0.6) #生成死亡人数

#添加确诊人数数字标注
txt <- text(time,quezhen,as.character(round(quezhen,0)), cex = 0.4, pos = 3, col = "red")

#添加垂直平行线-----------------------------------------------
abline(v=data[32,1],h=15196,lty = 3, col = "blue") 

#添加矩形框---------------------------------------------------
rect(data[31,1],15796,data[33,1],14100,border = "blue") 

#添加检测标准变化文字标注-------------------------------------
text(data[28,1],14700,'检测标准变化时间点',cex=0.6) 

#添加图例----------------------------------------------------
legend("topright",c("新增确诊","新增出院","新增死亡"),pch=c(25,18,8),
       col=c("black",'green',"red"),bg=c("black",'green',"red"),bty="n")

#添加x轴标签--------------------------------------------------
#尚未成功过
#区别于传统的x轴和y轴,axis允许在上,下,左,右4个方向添加轴线
xlabs<-substr(time,6,10) #提取x轴的日期标签列数据
x <- seq(1,43)
axis(1,at=x,labels=xlabs,las=2)

#关闭---------------------------------------------------------
par(opar)
dev.off()

控制台Console输出

> rm(list = ls())
> getwd()
[1] "B:/Temp1"
> setwd("B:/Temp1")
> library(readxl)
> data=read_xlsx("全国疫情整理-李世昱.xlsx")#读取数据
> data
# A tibble: 43 x 4
   报道时间            新增确诊 新增出院 新增死亡
   <dttm>                 <dbl>    <dbl>    <dbl>
 1 2020-01-11 00:00:00       41        2        1
 2 2020-01-12 00:00:00        0        4        0
 3 2020-01-13 00:00:00        0        1        0
 4 2020-01-16 00:00:00        0        5        1
 5 2020-01-17 00:00:00        2        0        0
 6 2020-01-18 00:00:00        5        4        0
 7 2020-01-19 00:00:00       17        4        0
 8 2020-01-20 00:00:00      156        6        2
 9 2020-01-21 00:00:00      103        0        2
10 2020-01-22 00:00:00      231        5       11
# ... with 33 more rows
> #自定义颜色和字体--------------------------------------
> rainbowcolor=rainbow(7) #自定义颜色生成彩虹七色
> windowsFonts(zhuanshu=windowsFont("迷你繁篆书"))  #更换运行环境,需要更改此字体,或下载此字体!
> 
> #读取数据----------------------------------------------
> time<-c(data$报道时间) #读取时间数据,x轴
> quezhen<-c(data$新增确诊) #读取确诊人数数据,y轴数据
> chuyuan<-c(data$新增出院) #读取出院人数数据,y轴数据
> siwang<-c(data$新增死亡) #读取死亡人数数据,y轴数据
> 
> #设置画布边距------------------------------------------
> opar <- par(no.readonly = TRUE) #开启自定义参数
> par(bty="u") #bty: 控制坐标系风格 有l、7、c、u风格
> par("mar") #查看默认画布边距
[1] 5.1 4.1 4.1 2.1
> par(mar=c(5.4,4.4,4.4,3.1))  #重新自定义边距
> 
> #输出tiff图---------------------------------------------
> tiff("全国疫情变化.tif",height = 2600,width = 2850,res = 450,unit="px",compression = "lzw")
> 
> #Plot函数画图-------------------------------------------
> plot(time,
+      xaxt="n", 
+      type = "o", #点线的样式
+      pch=25, #点的样式,取值可以很大很大,会出现让人意想不到的情况
+      bg="red",#节点背景色
+      cex=1, #折线节点点的大小
+      lty=1, #线的样式
+      lwd=1.5, #折线的粗细
+      main ="1月11日—2月24日全国疫情变化",
+      sub="Powered By李世?9?5  于2020/2/25晚",
+      xlab = '', #x轴标题
+      ylab = '人数', #y轴标题
+      family='zhuanshu', #字体
+      cex.main=2.4,cex.sub=1.5,cex.lab=1.4,cex.axis=1.5, #文字大小

+      ylim<-c(quezhen)) #设置y轴取值范围
> 
> 
> #生成网格-----------------------------------------------------
> grid(nx=10,ny=5) 
> 
> #画另外两条线-------------------------------------------------
> lines(time,chuyuan,type="o",pch=18,col=rainbowcolor,lwd=2,cex=1) #生成出院人数
> lines(time,siwang,type="o",pch=8,col="red",lwd=1.5,cex=0.6) #生成死亡人数
> 
> #添加确诊人数数字标注
> txt <- text(time,quezhen,as.character(round(quezhen,0)), cex = 0.4, pos = 3, col = "red")
> 
> #添加垂直平行线-----------------------------------------------
> abline(v=data[32,1],h=15196,lty = 3, col = "blue") 
> 
> #添加矩形框---------------------------------------------------
> rect(data[31,1],15796,data[33,1],14100,border = "blue") 
> 
> #添加检测标准变化文字标注-------------------------------------
> text(data[28,1],14700,'检测标准变化时间点',cex=0.6) 
> 
> #添加图例----------------------------------------------------
> legend("topright",c("新增确诊","新增出院","新增死亡"),pch=c(25,18,8),
+        col=c("black",'green',"red"),bg=c("black",'green',"red"),bty="n")
> 
> #添加x轴标签--------------------------------------------------
#尚未成功过
> xlabs<-substr(time,6,10) #提取x轴的日期标签列数据
> x <- seq(1,43)
> axis(1,at=x,labels=xlabs,las=2)
> 
> #关闭---------------------------------------------------------
> par(opar)
> dev.off()
RStudioGD 
        2 
> 

输出tiff

原图下载

数据来源:澎湃美数课,个人认为他有着较好的数字可视化表达方式

参数小说明

#type = “p” :点图
#type = “l” :折线图,
#type = “b” :既有点图又有折线,就叫它附点折线图吧
#type = “c” :只画附点折线图线的那部分
#type = “o” :重叠的附点折线图
#type = “h” :垂直线图
#type = “s” :阶梯图
#type = “S” :另外一种阶梯图
#type = “n” :不画图,只画出坐标

font.axis=2,设置坐标刻度字体,1常规字体,2加粗字体,3斜体字,4斜体加粗

示例二

x <- seq(1,12)
months <- c('一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月')
months

typeof(x)
typeof(months)
Tokyo <- c(7.0,6.9,9.5,14.5,18.2,21.5,25.2,26.5,23.3,18.3,13.9,9.6)
New_York <- c(-.2,.8,5.7,11.3,17.0,22.0,24.8,24.1,20.1,14.1,8.6,2.5)
Berlin <- c(-.9,.6,3.5,8.4,13.5,17.0,18.6,17.9,14.3,9.0,3.9,1.0)
London <- c(3.9,4.2,5.7,8.5,11.9,15.2,17.0,16.6,14.2,10.3,6.6,4.8)
London
opar <- par(no.readonly = TRUE)
par(bty="n")
plot(Tokyo,
     xaxt="n",
     pch=19,type="b",
     lwd=2,
     main="月平均气温",
     sub="Plotted by R Language",
     ylim=c(-10,30),
     col="blue",xlab="",
     ylab="Temperature(℃)",
     axes=FALSE)

lines(New_York,type="b",pch=18,col="black",lwd=2)
lines(Berlin,type="b",pch=15,col="green",lwd=2)
lines(London,type="b",pch=17,col="orange",lwd=2)
axis(2,at=seq(-10,30,10),tick=F)
axis(1,at=x,labels=months,las=2)
abline(h=c(0,10,20,30),col="gray")
legend("topright",c("Tokyo","New York","Berlin","London"),pch=c(19,18,15,17),
       col=c("blue","black","green","orange"),bty="n")
par(opar)

tiff输出


垂直线示例

plot(1:5, 1:5, xlim = c(0,6), ylim = c (0,6))
#abline(v = 0, col = "blue")
#abline(h = c(0,1,2), v = c(0,1,2), col = c("red", "green", "blue"))
#h: y水平线 设置y=多少即可画出y=多少的平行于x轴的直线
#v: x垂直线 同上
abline(h=5,v=6,lty = 3, col = "blue")
abline(h = c(0,1,2), col = c("red", "green", "blue"))

abline(v = c(0,1,2), col = c("red", "green", "blue"))

title函数

#为y轴标题设置
title(ylab = "Weight",

      col.lab = "orange",

      cex.lab = 1.5, font.lab = 3)

同布异表

同一个画布下有多个图表

# 同布异表
a<-2000:2018
length(a)
b<-c(runif(19,350,1500))
d<-c(runif(19,1000,2500))
mat <- matrix(c(1,2,3,4,5,6), 2, 3, byrow = TRUE)
mat
layout(mat, widths = c(1,1,2), heights = c(1,2))
plot(a, b)
plot(a, b)

控制台输出

> a<-2000:2018
> length(a)
[1] 19
> b<-c(runif(19,350,1500))
> d<-c(runif(19,1000,2500))
> mat <- matrix(c(1,2,3,4,5,6), 2, 3, byrow = TRUE)
> mat
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> layout(mat, widths = c(1,1,2), heights = c(1,2))
> plot(a, b)
> plot(a, b)

输出tiff


他山之石


试试ggplot吧!!!!


文章作者: 李世昱
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 李世昱 !
评论
  目录