雙坐標(biāo)軸其實(shí)實(shí)用性并不大,而且也有文獻(xiàn)指出了他的可讀性不強(qiáng),但是由于小伙伴的需求Poesie還是去研究了關(guān)于R 繪制雙坐標(biāo)軸的內(nèi)容,一下是Poesie關(guān)于R 繪制雙坐標(biāo)軸的小小總結(jié),主要是基于R包plotrix中twoord.plot函數(shù)!
前期準(zhǔn)備
#主要的R包
library(plotrix)
#字體設(shè)置為一般投稿要求
windowsFonts(myFont = windowsFont("Times New Roman"))
#讀入文件(R包"readxl")
AA=readxl::read_xlsx("Biological process.xlsx")
AA$N=1:10
AA$N=as.numeric(AA$N)
圖片
#輸出文件tiff
tiff(
filename = "Biological process3.tiff",#文件名
type = "cairo", # 抗鋸齒
res = 300, # 300ppi 分辨率
width = 3000, height = 4500,#圖片長寬
bg = "transparent" ,# 透明背景,
)
#x軸坐標(biāo)標(biāo)簽旋轉(zhuǎn)
par(las=2)
#畫圖
twoord.plot( lx = AA$N, ly = AA$Count, rx = AA$N, ry = AA$PValue,
rcol = "red",lcol = "green",
main = 'Biological process',
xlab = 'Term',ylab = 'Count', rylab = 'PValue',
xticklab=AA$Term,
halfwidth=0.2,
mar=c(28,5,5,5),
type = c('bar','l'),
do.first="plot_bg(); grid(col=\"white\",lty=1)",axislab.cex = 1)
關(guān)于上面的設(shè)置
①本圖的mar=c(28,5,5,5)設(shè)置有點(diǎn)大,可以出圖是因?yàn)閠iff中的 width 和 height 設(shè)置也很大,不在Rstudio畫布中出圖,可以根據(jù)自己畫圖和數(shù)據(jù)進(jìn)行調(diào)整
②type = c('bar','l')有個(gè)BUG,就是不能type = c('bar','bar'),只會(huì)出現(xiàn)一個(gè)柱子,被覆蓋了
增加圖例
par(xpd=TRUE,new=TRUE)
#在原來圖形的基礎(chǔ)上繪制一張空?qǐng)D
plot(0:8, 0:8, type="n", xlab="",ylab="", axes=FALSE)
#添加左坐標(biāo)軸軸圖例
legend(6, 8, leg='Count', fill=c('green'), bty = 'n')
#添加右坐標(biāo)軸軸圖例
legend(6, 7.8, leg= 'PValue',col="red" ,lty = 1,bty = 'n')
par(xpd=FALSE, new=FALSE)
關(guān)于上面的設(shè)置
前面的數(shù)字,坐標(biāo)定位,修改可以改位置
leg="圖例名稱"
輸出文件
dev.off()

擴(kuò)展補(bǔ)充——關(guān)于twoord.plot()參數(shù)
數(shù)據(jù)
lx,ly,rx,ry:分別指定左坐標(biāo)軸和右坐標(biāo)軸的值,必須是連續(xù)的值
data:需要繪制雙軸圖形的數(shù)據(jù)框
外觀
lcol,rcol:設(shè)置左右坐標(biāo)軸的顏色,這樣可以起到圖例的作用
lpch,rpch:設(shè)置左右坐標(biāo)軸圖形的外觀
halfwidth: 條形圖的寬度
axislab.cex:設(shè)置坐標(biāo)軸標(biāo)簽和刻度標(biāo)簽的大小
do.first:通過該參數(shù)可以往圖形中添加背景色或網(wǎng)格線
標(biāo)題
main:為圖形指定標(biāo)題
xlab:設(shè)置橫坐標(biāo)軸標(biāo)簽
xticklab:設(shè)置橫坐標(biāo)軸刻度標(biāo)簽
ylab:設(shè)置左坐標(biāo)軸標(biāo)簽
rylab:設(shè)置又坐標(biāo)軸標(biāo)簽
范圍限制調(diào)整
xlim:限制橫坐標(biāo)值的范圍
lylim,rylim:限制左右縱坐標(biāo)值的范圍
mar:設(shè)置圖形邊界距,默認(rèn)值為(5,4,4,4)
軸刻度標(biāo)簽的位置
lytickpos:設(shè)置左坐標(biāo)軸刻度標(biāo)簽的位置
rytickpos:設(shè)置右坐標(biāo)軸刻度標(biāo)簽的位置
xtickpos:設(shè)置橫坐標(biāo)軸刻度標(biāo)簽位置
ylab.at:設(shè)置左坐標(biāo)軸標(biāo)簽位置
rylab.at:設(shè)置右坐標(biāo)軸標(biāo)簽位置
指定圖形類型
type=c(,)
p" for points,
"l" - lines,
"b" - both,
"c" - the lines part alone of "b",
"o" - both ‘overplotted’,
"h" - ‘histogram’ like (or ‘high-density’) vertical lines,
"s" - stair steps,
"S" - other steps, see ‘Details’ below,
"n" - no plotting.