2012-01-05 6 views
2

Rでlevelplot(格子パッケージから)を使用すると、グラフの端に余分な空白がありますcolumn.valuesとrow.valuesが小さい(範囲が1より小さいなど)この問題は、column.valuesとrow.valuesの範囲が大きい場合(たとえば、範囲が10の場合)に消えます。 myLevelPlotがR:Levelplotはrow.valuesとcolumn.valuesの範囲が小さいときに余分な空白を与えます

library(gplots) # for colorpanel() 
library(lattice) # for levelplot() 

#generate data 
myData = runif(100) #generate vector of 100 random numbers 
myMatrix=matrix(myData, sqrt(length(myData)), sqrt(length(myData))) 

#generate vectors that will be used for col.values and row.values 
labelIncrement= 1/10 
labelLow = -0.5 
labelHigh = 0.5 - labelIncrement 

dataForRow.values <- c(seq(labelLow, labelHigh, labelIncrement)) 
dataForColumn.values <- c(seq(labelLow, labelHigh, labelIncrement)) 

myLevelsArbitrary <- c(0, 0.2, 0.4, 0.6, 0.8, 1.0) 
myColors = topo.colors(length(myLevelsArbitrary)+1) 

myLevelPlot = levelplot(myMatrix, 
    at=myLevelsArbitrary, 
    col.regions=myColors, 
    column.values=dataForColumn.values, 
    row.values=dataForRow.values, 
    main="Title", 
    xlab="Distance from center (cm)", 
    ylab="Distance from center (cm)", 
    colorkey=list(width=3)) 

plot(myLevelPlot) 

This image次のとおりです。

は、ここでの問題を示している例です。

それでは、row.valuesとcolumn.valuesためのより大きな範囲を有するように上記のコードを微調整しましょう:

labelIncrement= 1 
labelLow = -5 
labelHigh = 5 - labelIncrement 

This myLevelPlot imageは、行の大きな範囲が再実行されるコードによって生成されました。値とcolumn.values。余分な空白が次のイメージでは発生しないことに注意してください。

したがって、row.valuesとcolumn.valuesの範囲が狭い場合、この無関係な空白を避けるにはどうすればよいですか?

答えて

3

これは厳しいものです。 scales = "sliced"

myLevelPlot = levelplot(myMatrix, 
    at=myLevelsArbitrary, 
    col.regions=myColors, 
    column.values=dataForColumn.values, 
    row.values=dataForRow.values, 
    main="Title", 
    xlab="Distance from center (cm)", 
    ylab="Distance from center (cm)", 
    scales = "sliced", 
    colorkey=list(width=3) 
    ) 
plot(myLevelPlot) 

が、私は2回の警告を好きではないが、時々警告は無視することができます...

+0

ブリリアント - これが私の作品:これは動作します!ありがとう! – solvingPuzzles

+1

いいえ、回答を最も良いとマークすることを忘れないでください(白いチェックマークは緑色になります)。そしてupvoteもいいだろう。私の評判を上げようとしています。 –

+0

私はあなたの答えを最高とマークしました。 :)私はupvoteに許可されるために十分な高い評判を持っているようには思わない。 – solvingPuzzles

関連する問題