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