R語言-繪制雙坐標圖直方圖與折線的結合方式

看代碼吧~

par(mar = c(5, 5, 3, 4)+0.1) #似乎是設置圖片位置
bar<-barplot(gu[1:22,6],xlim=c(0.5,26),ylim=c(0,200000),ylab="交易量",
col="blue",col.axis="blue",col.lab="blue")

mtext(c(1:22),side=1,line=1,at=bar,cex=0.8,col="black")
mtext("time",side =1,line=3,col="black")
par(new=T)
plot(bar,gu[1:22,2],axes=F,xlim=c(0.5,26),ylim=c(17,23),xlab="",ylab="",
col="green",type="o")

#ylim設置不好的話就會看不見折線

axis(4,col="red",col.ticks="red",col.axis="red")
mtext("價格",side=4,line=3,col="red")
par(new=T)
plot(bar,gu[1:22,5],axes=F,xlim=c(0.5,26),ylim=c(17,23),xlab="",ylab="",
col="red",type="o")
legend("top",c('開盤價','收盤價'),col=3:2,lty=1)

效果如下

補充:在R中繪制折線圖的方法與進階

在顯示隨時間而變化的連續數據時通常可以使用折線圖。尤其是顯示在相等時間間隔下數據的趨勢時折線圖則更加優勢。在折線圖中,類別數據沿水平軸均勻分佈,所有值數據沿垂直軸均勻分佈。一般分類標簽是文本並且代表均勻分佈且遞增的數值(例如月度、季度或財年等)。

事實上,在Excel中繪制折線圖是相當方便的。但我們現在要來討論的是在R中如何繪制折線圖,尤其是一些不常見但非常有用的技巧我們也會在本文中討論。

我們首先來討論最簡單的情況,繪制一條折線:

> dose = c(20, 30, 40, 50, 60)
> drugA= c(16, 20, 27, 40, 60)
> drugB= c(15, 18, 25, 31, 40)
> plot(dose, drugA, type = "b")

其中 type = “b” 表示同時畫出點和線。上述代碼執行結果如下:

當使用 type = “c” 時沒有點而隻畫出線。如果想把上圖中的圓圈換成實心三角形,並想用虛線代替實現來連接各個數據點的話,則可以像下面這個做:

上述代碼執行結果如下:

現在我們把這幅圖畫得復雜一些!我們來畫出次刻度線,為此請加載Hmisc包用,以便添加次要刻度線:

> library(Hmisc)

然後執行下面的代碼:

> plot(dose,drugB,type="b",pch=3,lty=3,col="blue",ylim=c(0,max(drugB)*1.1),
+ xlab="x",ylab="y",main="Example")
> minor.tick(nx=5,ny=2,tick.ratio=0.5)#添加次要刻度線

其中nx和ny分別表示x軸和y軸上每個主刻度之間被劃分的子間隔數,上述代碼的執行結果如下

下面我們要做的事情會更加復雜,我們要實現在同一界面上繪制三張圖,並在最後一張圖中繪制多條折線以及添加圖例。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀:

    None Found