我正在使用 R 來繪制一個函式,并想在同一個圖中添加描述多個函式的行。要繪制函式,我寫:
plot(function(x){x},
xlab="Celsius", xlim=c(-100, 100),
ylab="Degrees", ylim=c(-100, 100))
這將繪制一條 1:1 的線。如果我想在同一個圖上繪制不同的函式,我可以使用該points()函式,但這需要提供資料值,x以便將length(x)點(由線連接)繪制為:
points(x=seq(-100, 100, by=0.1),
y=c(seq(-100, 100, by=0.1)-32)*5/9,
typ="l", col="red")
繪制函式時是否可以在繪圖中添加線條,而不必使用points()或 其他函式計算資料點?本質上,它會是這樣的:
plot(function(x){x},
xlab="Celsius", xlim=c(-100, 100),
ylab="Degrees", ylim=c(-100, 100))
points(function(x){(x-32)*5/9},
typ="l", col="red")
這只是一個例子,它顯示了 X 軸上的攝氏度與 Y 軸上的攝氏度(黑色)和華氏度(紅色)之間的關系。實際上,我想繪制多個復雜的函式,但這只會給問題增加噪音。

我發現的一種解決方案是
plot(function(x){x},
xlab="Celsius", xlim=c(-100, 100),
ylab="Degrees", ylim=c(-100, 100))
par(new=TRUE)
plot(function(x){(x-32)*5/9},
xlab="", xlim=c(-100, 100),
ylab="", ylim=c(-100, 100),
axes=FALSE, col="red")
但是AXES=FALSE每次都必須定義限制和標簽似乎很麻煩。
uj5u.com熱心網友回復:
您可以使用該plot函式兩次并add = TRUE為第二個繪圖添加。
使用plot,您還可以使用from和to引數來避免重復 y 軸限制,盡管它會保留第一個圖中定義的 y 軸限制(因此它可能不是最佳的)。
plot(function(x){x},
xlab="Celsius", xlim=c(-100, 100),
ylab="Degrees", ylim=c(-100, 100))
plot(function(x) {(x-32)*5/9}, from = -100, to = 100, typ="l", col="red", add=T)

正如@Roland和@ user2554330提到的,你也可以使用curves,如果你想從繪制相同功能的多條線路,并使用()以避免預先分配的功能,與add = i!=1站立add = T在每次迭代除了第一個。
for(y in 1:10) {
curve((x 10*y), from=-100, to=100, add=i!=1)
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/369334.html
上一篇:R中資料框列的呼叫
下一篇:獲取多個CSV檔案的行數和列數
