4

Rで(ラティスパッケージからの)レベルプロットを使用する場合、column.valuesとrow.valuesの範囲が小さい場合(たとえば、範囲が1未満の場合)、グラフのエッジの周りに余分な空白があることに気付きました。column.valuesとrow.valuesの範囲が大きい場合(たとえば、範囲が10の場合)、この問題は解消されます。

問題を説明する例を次に示します。

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) 

この画像はmyLevelPlotです。

次に、上記のコードを微調整して、row.valuesとcolumn.valuesの範囲を広げましょう。

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

このmyLevelPlotイメージは、より広い範囲のrow.valuesとcolumn.valuesを使用してコードを再実行することによって生成されました。 次の画像では、余分な空白が発生していないことに注意してください。

では、row.valuesとcolumn.valuesの範囲が狭い場合に、この余分な空白を回避するにはどうすればよいですか?

4

1 に答える 1

4

それは難しいことです。これは機能します: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つの警告が好きではありませんが、警告を無視できる場合があります...

于 2012-01-06T01:09:07.587 に答える