簡體   English   中英

如何在R中繪制更平滑的曲線

[英]How to plot smoother curves in R

使用R ,我繪制了一個陰影圖。 如果看到曲線,它們就不平滑了。 如何讓它們流暢? 即使是excel也可以繪制更平滑的曲線。 設備功能:Windows 7,屏幕分辨率= 1366 x 768(最大)

這是情節。

情節

以下代碼用於繪制圖表。

plot(NA,xlim=c(0,1),ylim=c(0,1),xlab="delta",ylab="K", xaxs="i",yaxs="i") # Empty plot
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=450000, add = TRUE) # First curve

完整代碼可在此處獲得

目前,看起來你的情節是鋸齒狀的,不是因為曲線本身,而是因為你的屏幕顯示它。

@Hemmo建議使用矢量圖形格式而不是光柵格式來修復此解決方案。 這是最好的解決方案,但如果您迫切需要使用柵格格式,則可以使用消除鋸齒功能。

消除鋸齒意味着繪制的圖形周圍有一些灰色模糊,因此它們看起來像是彎曲到人眼。 如果放大消除鋸齒的圖像,您將很容易看到這一點。 目前:

png("no-alias.png")
# Your code
dev.off()

在此輸入圖像描述

cairographics提供抗鋸齒功能。 所以用它作為png一個選項:

png("alias.png", type="cairo")
# Your code again
dev.off()

在此輸入圖像描述

我相當肯定,如果你將你的數字繪制為例如pdf,曲線是完全平滑的。 這是Rgui的內部顯示,它將曲線顯示為不平滑,並且使用復制粘貼可能會導致問題。 最好直接繪制到文件中,如下所示:

# Open device:
pdf("D:/test.pdf") #change for appropriate file path
plot(NA,xlim=c(0,1),ylim=c(0,1),xlab="delta",ylab="K", xaxs="i",yaxs="i")
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=450000, add = TRUE)
dev.off() #close device

現在看一下pdf,它看起來完全沒問題。 如果你想要例如jpg圖像,使用函數jpeg等,請參閱?jpeg以獲取更多詳細信息如何保存為tiff,jpeg,png或bmp,以及圖像大小,分辨率等參數。

(注意,這里使用的設備等術語可能不完全正確,我對這個術語並不完全熟悉,如果合適的話,更聰明的人可以編輯)。

我不確定你的問題是什么(在你所展示的情節中不清楚),但你可以通過對你的點進行三次(或Hermite)樣條插值來改善。 這里有一些使用splinesplinefun選項。

在此輸入圖像描述

layout(matrix(c(1,2,3),nrow=3,byrow=TRUE))
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i",
     main='orginal plot with 45000 points') # Empty plot
a1 <- curve((x+x^7-x^2-x^4)/(1+x-x^3-x^4), from=0, n=45000, add = TRUE)
x <- seq(0,1,length.out=1000)
y <- (x+x^7-x^2-x^4)/(1+x-x^3-x^4)
f <- splinefun(x, y)
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i",
     main='splinefun plot with 1000 points') 
curve(f(x),0, 1, col = "green", lwd = 1.5,add=TRUE)
plot(NA,xlim=c(0,1),ylim=c(0,0.2),xlab="delta",ylab="K", xaxs="i",yaxs="i",
     main='spline plot with 1000 points') 
lines(spline(x,y), col = 2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM