8

を使用し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

完全なコードはこちらから入手できます

4

3 に答える 3

9

現時点では、曲線自体が原因ではなく、画面の表示方法が原因で、プロットがぎざぎざしているように見えます。

@Hemmo は、ラスター形式の代わりにベクター グラフィックス形式を使用して、このソリューションを修正することを提案しました。これが最善の解決策ですが、どうしてもラスター形式を使用する必要がある場合は、アンチエイリアシングを使用できます。

アンチエイリアシングとは、プロットが線の周りに灰色の毛羽立ちで描かれることを意味し、人間の目には曲線が曲がっているように見えます. これは、アンチエイリアス処理された画像を拡大すると簡単に確認できます。今のところ:

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

ここに画像の説明を入力

cairographics はアンチエイリアシングを提供します。したがって、次のオプションとして使用しますpng

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

ここに画像の説明を入力

于 2013-03-16T11:17:16.220 に答える
5

たとえば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として保存する方法、および画像サイズ、解像度などの引数を参照してください。

(ここで使用されているデバイスなどの用語は完全に正しくない可能性があります。私はこの用語に完全には精通していません。適切な場合は、より賢い人が編集できます)。

于 2013-03-16T10:24:53.647 に答える
2

あなたの問題の程度はわかりませんが(表示されているプロットでは明確ではありません)、ポイントのキュービック(またはエルミート)スプライン補間を行うことで改善できます。splineと を使用したいくつかのオプションを次に示しますsplinefun

ここに画像の説明を入力

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)
于 2013-03-16T10:40:03.360 に答える