控制六边形图中的显示

时间:2013-07-08 19:50:56

标签: r

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

enter image description here

2 个答案:

答案 0 :(得分:3)

您正试图混合两种完全不同的绘图范例。尽管看起来是基本图形函数plot,但是hexbin-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”

答案 1 :(得分: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...)

所有其他间距(甚至更右边的图例空间)可以通过lattice图表中的“嵌入”设置进行控制。我这样使用它们(但我假设您可以直接在“ 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

干杯!