2
 library(Sleuth2)

 mlr<-lm(ex1222$Buchanan2000~ex1222$Perot96*ex1222$Gore2000)


for (i in 0:3) {
           assign(paste("betaHat", i, sep=""), 
           summary(mlr)$coeff[i+1,1])
               }

x<-sort(ex1222$Perot96)
y<-sort(ex1222$Gore2000)


z1 <- outer(x, y, function(a,b) betaHat0+betaHat1*a+betaHat2*b+betaHat3*a*b)
nrz <- nrow(z)
ncz <- ncol(z)

# Create a function interpolating colors in the range of specified colors
jet.colors <- colorRampPalette( c("blue", "red") ) 

# Generate the desired number of colors from this palette
nbcol <- 100
color <- jet.colors(nbcol)

# Compute the z-value at the facet centres
zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz]

# Recode facet z-values into color indices
facetcol <- cut(zfacet, nbcol)

persp(x, y, z1, col=color[facetcol],theta=-30, lwd=.3,xlab="Perot 96", ylab="Gore 2000", zlab="Predicted Votes for Buchanan")

こんにちは、

上記のプロットに色を付けようとしています。私は、「z」色の濃い赤の色合い(または実際には任意の色)の値を高くしたいと考えていました。

それを実現する方法についての助けをいただければ幸いです。

また、これを実現するための別の機能を自由に提案してください。

ありがとうございました!

編集....?perspの例を見た後、新しいコードを配置しました。色を変更したいのですが、新しいプロットの読みやすさにあまり満足していません

4

1 に答える 1

6

コードを少し変更しました。

library(Sleuth2)

一般に、次の方法dataでデータ フレームから抽出された予測変数を使用するよりも、引数を使用することをお勧めします$

mlr<-lm(Buchanan2000~Perot96*Gore2000,data=ex1222)

と を使用expand.grid()predict()て、きれいな方法で回帰結果を取得できます。

perot <- seq(1000,40000,by=1000)
gore <-  seq(1000,400000,by=2000)

観測の位置でファセットを評価する場合は、代わりに を使用できますperot <- sort(unique(ex1222$Perot96)); gore <- sort(unique(ex1222$Gore2000))

pframe <- with(ex1222,expand.grid(Perot96=perot,Gore2000=gore))
mlrpred <- predict(mlr,newdata=pframe)

次に、予測を行列に変換します。

nrz <- length(perot)
ncz <- length(gore)
z <- matrix(mlrpred,nrow=nrz)

私は明るい赤 ( #ffcccc、青/緑がかなり入った赤) から濃い赤 ( #cc0000、他に何もない少し赤) に行くことにしました。

jet.colors <- colorRampPalette( c("#ffcccc", "#cc0000") ) 

grep("red",colors(),value=TRUE)また、R に組み込まれている reds を確認するために使用することもできます。

# Generate the desired number of colors from this palette
nbcol <- 100
color <- jet.colors(nbcol)

# Compute the z-value at the facet centres
zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz]
# Recode facet z-values into color indices
facetcol <- cut(zfacet, nbcol)

persp(perot, gore, z,
      col=color[facetcol],theta=-30, lwd=.3,
      xlab="Perot 96", ylab="Gore 2000", zlab="Predicted Votes for Buchanan")

ここに画像の説明を入力

プロットの「読みやすさにあまり満足していない」とあなたは言いますが、それはあまり具体的ではありません...私は?perspあなたのオプションのいくつかを確認するためにページでしばらく時間を費やします...

別の選択肢はrglパッケージです。

library(rgl)
## see ?persp3d for discussion of colour handling
vertcol <- cut(z, nbcol)
persp3d(perot, gore, z,
      col=color[vertcol],smooth=FALSE,lit=FALSE,
      xlab="Perot 96", ylab="Gore 2000", zlab="Predicted Votes for Buchanan")

ここに画像の説明を入力

scatter3dまた、パッケージから見てみる価値があるかもしれませんcar(グラフィック プロパティの一部を微調整する方法を説明する SO に関する他の投稿があります)。

library(car)
scatter3d(Buchanan2000~Perot96*Gore2000,data=ex1222)

ここに画像の説明を入力

于 2012-04-28T14:51:35.893 に答える