R 控制hexbin绘图中的显示

R 控制hexbin绘图中的显示,r,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中改变参数,生成的情节总

我使用以下代码生成附加的绘图。但我如何控制这两个距离: 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中改变参数,生成的情节总是相同的。


您正在尝试混合两种完全不同的绘图模式。尽管hexbin plot方法看起来是一种基本的图形功能,
plot
,但它实际上是一种基于网格的绘图功能。此外,它是一种S4方法,这意味着您需要使用
showMethods
来实际查看它。(我无法判断您的
par
是否有任何影响。(它不影响我使用的示例。)

这是参数列表:

.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")) 
如果查看代码,它似乎会接受一个参数“legend”,即图例视口的宽度(以英寸为单位),因此请尝试修改该参数:

 plot(bin, legend=1.0)

顺便说一句,关于ggplot的混淆来自一种名为gplot.hexbin的绘图方法,但“g”是对“grid”的引用,而不是对“ggplot”

可能您正在寻找这个……尽管我使用了: 您可以通过viewport(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...)
所有其他间距(甚至右边更大的图例间距)都可以通过图形中“嵌入”的设置来控制。我这样使用它们(但我假设您可以直接在“段落设置”参数中设置它们:

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)
   ))
这个想法来自:


干杯!

对。
par
仅影响基本图形坐标。
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...)
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)
   ))