を使用して、これR
に似たハッチング プロットを描画しました。やりたいことは以下の4つR
- リンクに示されているように凡例を追加します。
- x 軸の名前をデルタのギリシャ記号に置き換えます
- プロット上のさまざまな交点に言及する。たとえば、x=0.75 でいくつかの曲線が x 軸を満たしているため、
0.75
その点の近くに値を置きたいと考えています。 - 曲線が見える場合、それらは滑らかではありません。それらを滑らかにする方法は?Excel でさえ、はるかに滑らかな曲線をプロットします。
これを達成する方法は?
これがプロットです。
次のコードは、プロットを描画するために使用されます。
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
a2 <- curve((x^2+x^3-x-x^5)/(x+x^2), to=0.9, n=45000, add = TRUE)
a3 <- curve((x+x^7-x^2-x^4)/(1+x-x^2-x^3-x^4+x^7),from=0, n=45000, add = TRUE)
a4 <- curve((x+x^8-x^3-x^5)/(x+x^8-x^3-x^5+1-x^4),from=0, to=0.9, n=45000, add = TRUE)
a5 <- curve((x+x^8-x^3-x^5)/(1+x-x^5-x^4),from=0, n=45000, add = TRUE)
a6 <- curve((x+x^2-x^4-1)/(x-x^4), to=0.84, n=45000, add = TRUE)
a7 <- curve((x+x^6-x^3-x^4)/(1+x-x^3-x^4), from=0.83 ,to=1, n=45000, add = TRUE)
a8 <- curve((1+x^7-x^2-x^4)/(1+x^3-x-x^4), from=0.819, n=45000, add = TRUE)
a9 <- curve((x)/(1+x), n=45000,from=0.819, to =1, add = TRUE)
names(a1) <- c('xA1','yA1')
names(a2) <- c('xA2','yA2')
names(a3) <- c('xA3','yA3')
names(a4) <- c('xA4','yA4')
names(a5) <- c('xA5','yA5')
names(a6) <- c('xA6','yA6')
names(a7) <- c('xA7','yA7')
names(a8) <- c('xA8','yA8')
names(a9) <- c('xA9','yA9')
with(as.list(c(a1,a2,a3,a4,a5,a6,a7,a8,a9)),{
idA <- yA3 >=0
idB <- yA2 >=0 & yA2 <= yA4
idC <- yA4 >= yA2
idD <- yA5 >=0
idE <- yA6 >=0 & yA6 <= yA7
idF <- yA7 <= yA6
idG <- yA8 >=0 & yA8 <= yA9
idH <- xA9 >= xA8 & xA9 >0.8
idI <- xA1 >=0 & xA1 <= 0.755
idJ <- xA3 >=0 & xA3 <= 0.755
polygon(x = c(xA3[idA],xA2[idB],rev(xA4[idC])),
y = c(yA3[idA],yA2[idB],rev(yA4[idC])),
density=20, angle=90, border=NULL)
polygon(x = c(xA5[idD],1,1,0),
y = c(yA5[idD],0,1,1),
density=20, angle=0, border=NULL)
polygon(x = c(xA6,xA7),
y = c(yA6,yA7),
density=20, angle=45, border=NULL)
polygon(x = c(rev(xA8[idG]),xA9[idH],1),
y = c(rev(yA8[idG]),yA9[idH],0),
density=20, angle=135, border=NULL)
polygon(x = c(xA1[idI],rev(xA3[idJ])),
y = c(yA1[idI],rev(yA3[idJ])),
col="black", border=NULL)
})