使用 R語言 進行簡單製圖(plot,hist)

  • 確保已安裝R語言(R)
  • 本文在RStudio(RStudio)下運行,運行代碼之前加載對應的包library(\cdot)

1、plot(代碼註釋說明)

x<-seq(-3,11,len=8)
y_float<-c(0.0118740242521950,0.0091057538361494,0.0071377665672741,0.0055924181000629,0.0044031276652462,	0.0035296146085217,	0.0028331581203653,0.0022862284829942)
y_int<-c(0.011646798525798,0.009197650732455,0.007194266428098,0.005641787783029,0.004451607654203,0.003545816453096,0.002774558531322,0.002327307729162)
windowsFonts(TNM = windowsFont("Times New Roman"))           #字體設置
windowsFonts(Son = windowsFont("宋體"))

plot(
     x,y_float,
     xlim=c(-3,11),             #x軸範圍設置(最大最小值)
     xlab="SNR/dB",             #x軸標題
     ylab="估計誤差",            #y軸標題
     family="Son",
     family="TNM",               #字體設置
     col='black',                #顏色
     # yaxs="i",xaxs="i",        #去掉座標預留空間
     lty=1,                      #線型
     lwd=2,                      #線寬
     pch=0,                      #點的符號形狀
     cex=2,                      #符號大小
     type='b',                   #點連接方式 l線 b點線 p點
     )

lines(                       #在前一條產生窗口的繪圖指令上添加線條
  x,y_int,
  xlim=c(-3,11),
  xlab="SNR/dB",
  ylab="估計誤差",
  family="Son",
  family="TNM",
  col='red',
  # yaxs="i",xaxs="i",       
  lty=1,                      
  lwd=2,                      
  pch=1,                      
  cex=2,                      
  type='b',                   
)

axis(1,                       #軸線(1234->下左上右)
     seq(-3,11),seq(-3,11),   #座標控制
     las=1,                   #文字方向
     font.axis=1,             #字體(粗細斜)
     family="TNM")          

abline(v=x,lty=2)            #作直線 v豎h橫
abline(h=c(0.01),lty=2)
#grid(nx=7,ny=6,lwd=2,col='blue')#作網格
legend("topright",legend=c("浮點","定點"),col=c("black","red"),pch=c(0,1),lty=1)
                             #圖例 top/bottom+left/right(位置設置)

在這裏插入圖片描述

2、hist(代碼註釋說明)

windowsFonts(TNM = windowsFont("Times New Roman"))
windowsFonts(Son = windowsFont("宋體"))
freq_offset <- matrix(1:4000,nrow=2)    #生成4000個元素的矩陣,分兩行
freq_offset[1,] <- rnorm(2000,0,0.005)  #正態隨機生成2000個數,均值0,標準差0.005)
freq_offset[2,] <- rnorm(2000,0,0.004) 
par(mfrow=c(1,2))                #多圖同時顯示(左右順序排布)

###############################################################
num_1=as.numeric(freq_offset[1,])#freq_offset爲導入得2x2000 tbl_df 格式矩陣文件,轉爲numeric格式(只能向量轉)
hist(num_1, 
     breaks = 20,       #分割直方個數  
     freq = F,          #縱座標:T爲頻數,F爲頻率
     col="pink",
     border = 'white',  #直方邊顏色
     main='SNR=-3dB',family="Son",family="TNM", #標題與字體
     xlab = '估計誤差',xlim=c(-0.01,0.01),ylab = '頻率')
curve(dnorm(x,          #函數正態擬合 curve爲函數作圖
            mean=mean(num_1), 
            sd=sd(num_1)),
      xlim=c(-0.01,0.01),
      add=TRUE)          #線條加入到上一幅圖(FALSE爲獨立顯示)
###############################################################
num_2 <-as.numeric(freq_offset[2,])
hist(num_2,
     breaks = 20,
     freq = FALSE,
     col="pink",
     border = 'white',
     main='SNR=-1dB',family="Son",family="TNM",
     xlab = '估計誤差',xlim=c(-0.01,0.01),ylab = '頻率')
curve(dnorm(x, 
            mean=mean(num_2), 
            sd=sd(num_2)),
      xlim=c(-0.01,0.01),
      add=TRUE)

在這裏插入圖片描述

參考文章:

1、R語言繪圖樣式設置(符號、線條、顏色、文本屬性)
2、R語言hist繪圖函數
3、R語言作圖:座標軸設置
4、R語言中Legend 函數的參數詳解

錯誤解決:

1、Error in plot.new() : figure margins too large

微信公衆號:通信隨筆XIDIAN

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章