1

我使用以下代码生成附加图。但是我怎样才能控制这两个距离: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 对象。在我看来,无论我更改 par 中的参数,生成的图总是相同的。

在此处输入图像描述

4

2 回答 2

3

您正在尝试混合两种完全不同的绘图范例。尽管看起来是一个基本的图形函数,plothexbin-plot 方法实际上是一个基于网格的绘图函数。此外,它是一种 S4 方法,这意味着您需要使用showMethods它才能真正看到它。(我不知道您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 的绘图方法,但“g”是对“grid”的引用,而不是对“ggplot”的引用

于 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 回答