1

次のコードを使用して、添付のプロットを生成しました。しかし、どうすれば2つの距離を制御できますか:1)左側のメインプロットと右側の凡例の間の距離(この距離を二重矢印線でマークしました)。この距離を縮めたい。2) 現在の x 軸のラベルは、プロットの下の境界線に非常に近いです。この x 軸のラベルを低くしたいと思います。同様に、y 軸のラベルを左に移動したいと思います。

par(mar=c(10,10,1,0),mgp=c(10,1,0))
plot(matrix.3.numeric.hexbin)

ここで、matrix.3.numeric.hexbin は hexbin オブジェクトです。パラメータを変更しても、生成されたプロットは常に同じに見えます。

ここに画像の説明を入力

4

2 に答える 2

3

2 つの完全に異なるプロット パラダイムを混在させようとしています。基本グラフィックス関数のようplotに見えますが、hexbin-plot メソッドは実際にはグリッドベースのプロット関数です。showMethodsさらに、これは S4 メソッドであるため、実際に表示するには使用する必要があります。(あなたparが何らかの効果を持っていたかどうかはわかりません。(私が使用した例には影響しませんでした。)

showMethods('plot', class="hexbin", includeDefs=TRUE)

これは引数リストです:

.local <- function (x, style = "colorscale", legend = 1.2, 
    lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 1, 
    maxcnt = max(x@count), trans = NULL, inv = NULL, colorcut = seq(0, 
        1, length = min(17, maxcnt)), border = NULL, density = NULL, 
    pen = NULL, colramp = function(n) LinGray(n, beg = 90, 
        end = 15), xlab = NULL, ylab = NULL, main = "", newpage = TRUE, 
    type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", 
        "n"), clip = "on", verbose = getOption("verbose")) 

そのレイアウトを変更したい場合は、値として返されるものを操作する必要があります。

 plot.vp    the hexViewport constructed and used.
 legend.vp  if a legend has been produced, its viewport.

コードを見ると、凡例のビューポートの幅 (インチ) である "legend" 引数を受け入れるように見えるので、それを変更してみてください。

 plot(bin, legend=1.0)

ところで; ggplot に関する混乱は、gplot.hexbin という名前のプロット メソッドの 1 つに由来しますが、「g」は「ggplot」ではなく「grid」への参照です。

于 2013-07-08T23:11:13.277 に答える
0

おそらくあなたはこれを探しているでしょう...私はhexbinplotを使用しましたが、次のように、ビューポート(vp)引数を介して凡例の変位を制御できます。

require(lattice)
require(hexbin)

some.plot = hexbinplot(d.frame$X ~ d.frame$Y
#   ,par.settings = list(fontsize=list(text=16))
   ,aspect=...,cex.lab=...,xbins=...
   ,vp = viewport(x=0.3,y=0.5,default.units='npc',angle=0,height=0.9)
   ,etc...)

他のすべての間隔 (さらに右の凡例スペース) は、格子グラフに「埋め込まれた」設定によって制御できます。私はこのように使用しました(ただし、「 par.settings」引数で直接設定できると思います:

up.image = update(some.plot,par.settings = list(
   layout.widths=list(left.padding = 0,right.padding = 0
      ,key.ylab.padding = 0,ylab.axis.padding = 0
      ,ylab.right = 0,axis.key.padding = 0)
   ,layout.heights=list(top.padding = 0,bottom.padding = 0
      ,main.key.padding = 0,key.axis.padding = 0
      ,axis.xlab.padding = 0,xlab.key.padding = 0
      ,key.sub.padding = 0)
   ))

アイデアは次のとおりです: https://stat.ethz.ch/pipermail/r-sig-geo/2011-August/012612.html

乾杯!

于 2016-02-07T15:15:18.210 に答える