5

levelplot (lattice) を使用して R で相関ヒートマップを作成しています。ボックス間の境界線が必要ですが、プロットの境界線に干渉するため、外側に沿ってはいけません。ボックスから外側の境界線を削除するにはどうすればよいですか?

これが私のコードです:

levelplot(matrix, border="black", 
          colorkey=list(height=.25, space="right", at=seq(-1, 1, .25), cuts=7), 
          scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)),
          main="Leaf Correlations", xlab="", ylab="", 
          col.regions=scalebluered)

そして、これがどのように見えるかです..エッジの二重線が好きではありません..

ここに画像の説明を入力

編集:ここに再現可能な例があります:

data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
levelplot(cars.corr, border="black", colorkey=list(height=.25, space="right", 
          at=seq(-1, 1, .25), cuts=7), 
          scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)), 
          xlab="", ylab="")
4

2 に答える 2

5

OK、少しわかりにくい場合でも、これの修正は簡単です。

lattice.options()used for factorの値をリセットするために使用axis.paddingし、デフォルト値の 0.6 (少しパディング) から 0.5 (パディングなし) に変更するだけで問題ありません。

lattice.options(axis.padding=list(factor=0.5))

## An example to show that this works
data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
levelplot(cars.corr, border="black", colorkey=list(height=.25, space="right", 
          at=seq(-1, 1, .25), cuts=7), 
          scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)), 
          xlab="", ylab="")

ここに画像の説明を入力

将来的に役立つ可能性のある参考資料として、 で使用されているコードをざっと見て、これを理解しましたprepanel.default.levelplot()。(さまざまなprepanel.***関数は、とりわけ、各パネルにプロットされるオブジェクトがすべてうまく収まるように、各パネルに割り当てられるべき座標と最小領域を決定する責任があります。)

head(prepanel.default.levelplot, 4)

1 function (x, y, subscripts, ...)                    
2 {                                                   
3     pad <- lattice.getOption("axis.padding")$numeric
4     if (length(subscripts) > 0) {  
于 2013-11-01T20:06:26.363 に答える
1

少し掘り下げてみると、多くの par コマンドが Lattice パッケージ グラフィックスに到達しない可能性があることがわかります。たとえば、par(bty = 'n') は、このレベルプロットの例では機能しません

ベース R グラフとは異なり、格子グラフは par( ) 関数で設定された多くのオプションの影響を受けません。変更可能なオプションを表示するには、help(xyplot) を参照してください。多くの場合、これらのオプションを高レベルのプロット関数内で設定するのが最も簡単です...パネルのレンダリングを変更する関数を作成できます。

ここでYangchen Linによって提案された方法で、軸の色をグラフィックスアラに直接渡してみてください:

axis.line = list(col='transparent')
于 2013-11-01T18:48:19.913 に答える