2010-02-20 79 views
4

我在R中繪製了一個大型數據集,並且我想在圖的兩邊各有一個座標軸,以兩種不同比例顯示數據。因此,例如,在左側縱軸上,我想直接繪製數據(例如plot(y〜x))和右側軸,我想要對左側軸進行線性縮放。 。(如圖(Y * 20〜X)在R中爲一個數據集繪製具有不同比例的座標軸

所以只會有顯示一個數據集,但將軸顯示這些數據點不同的含義

我已經試過如下:

plot(x = dataset$x, y = dataset$y) 
axis(4, pretty(dataset$y,10)) 

這將正確打印新的右軸同等規模爲默認左軸(基本上是無用的,但它的作品)但是,如果我做這個微小的變化:

plot(x = dataset$x, y = dataset$y) 
axis(4, pretty(10*dataset$y,10)) 

突然,它拒絕添加我的新右軸。我懷疑這與R看到軸是否以某種方式匹配數據集並拒絕它有關。我如何讓R忽略數據集並只打印我選擇的任意軸?

+0

爲什麼這個社區wiki? – Shane 2010-02-20 02:41:22

回答

3

R似乎不會拒絕你的座標軸。你遇到了什麼錯誤?你的命令將會從圖表中刪除(因爲它使用第一個軸來定位它們)。我想你想要的是:

> plot(x = dataset$x, y = dataset$y) 
> axis(4, at = axTicks(2), label = axTicks(2) * 10) 
+0

這是完美的,優雅地解決了我的問題。我的問題不在於刻度線被錯誤地畫出來,而是因爲我需要重新標記它們。 – deontologician 2010-02-23 00:31:13

+1

所以at = axTicks(2)意味着從曲線邊獲得新的座標軸刻度= 2;和label = axTicks(2)* 10表示從'at'刻度創建標籤,刻度爲10。 – philcolbourn 2010-11-05 11:22:47

7

你所要求的,是不是永遠正確的實踐,但你可以通過par(new=TRUE)迫使它:

x <- 1:20 
plot(x, log(x), type='l') 
par(new=TRUE)    # key: ask for new plot without erasing old 
plot(x, sqrt(x), type='l', col='red', xlab="", yaxt="n") 
axis(4) 

的X-axsis繪製兩次,但你有相同的x座標不是問題。第二個y軸被抑制並繪製在右側。但標籤顯示你現在正在混合到不同的層次。

+0

您也可以在第二次調用'plot()'時使用參數'axes = F'來抑制x軸的雙重繪圖。 – Sharpie 2010-02-20 04:42:19

相關問題