Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(R) 轴宽度(单位:gbm.plot)_R_Plot_Axis Labels_Par_Gbm - Fatal编程技术网

(R) 轴宽度(单位:gbm.plot)

(R) 轴宽度(单位:gbm.plot),r,plot,axis-labels,par,gbm,R,Plot,Axis Labels,Par,Gbm,希望得到一些提示或经验,因为我真的对这件事失去了理智,我花了整整两天的时间试图设置正确的值,让函数从gbm.plot函数(包dismo&gbm)中吐出干净的简单线条图 我从这里开始。BTY=N的PAR关闭框和留给我只有左和底部轴。通常,Gbm.plot会为每个解释变量吐出一个图,所以通常是6个图,等等,但我正在调整它,为每个变量吐出一个图&循环它。我已经删除了循环&许多其他代码,因此很容易看到发生了什么 png(filename = "whatever.png",width=4*480, hei

希望得到一些提示或经验,因为我真的对这件事失去了理智,我花了整整两天的时间试图设置正确的值,让函数从gbm.plot函数(包dismo&gbm)中吐出干净的简单线条图

我从这里开始。BTY=N的PAR关闭框和留给我只有左和底部轴。通常,Gbm.plot会为每个解释变量吐出一个图,所以通常是6个图,等等,但我正在调整它,为每个变量吐出一个图&循环它。我已经删除了循环&许多其他代码,因此很容易看到发生了什么

png(filename = "whatever.png",width=4*480, height=4*480, units="px", pointsize=80, bg="white", res = NA, family="", type="cairo-png")
par(mar=c(2.6,2,0.4,0.5), fig=c(0,1,0.1,1), las=1, bty="n", mgp=c(1.6,0.5,0))
  gbm.plot(my_gbm_model,
         n.plots=1,
         plot.layout = c(1,1),
         y.label = "",
         write.title=F,
         variable.no = 1, #this is part of the multiple plots thing, calls the explanatory variable
         lwd=8,  #this controls the width of the main result line ONLY
         rug=F)
dev.off()

这就是起始条件。目标:使轴和刻度变厚。就这样

“lwd=20”
放入
par
中没有任何作用

axes=F
添加到
gbm.plot()
中可关闭轴及其编号。因此我得出结论,这些轴的控制是由
gbm.plot
处理的,而不是
par
。这就是令人沮丧和糟糕的地方。从搜索中获得的公认智慧是,
lwd
应该控制这一点,但根据我上面的注释,它只控制摆动的中心线。因此,也许我可以将
轴(side=1,lwd=8)
添加到
gbm.plot()

它运行,但莫名其妙地增加了一个平滑!(这很薄,很难在网上看到,但我保证它就在那里)。它添加了以下警告:

In if (smooth & is.vector(predictors[[j]])) { ... :
  the condition has length > 1 and only the first element will be used
好吧,R将毫无理由地成为一个混蛋,我会继续堵住漏洞。轴与以前一样且现在已禁用平滑的新代码:

png(filename = "whatever.png",width=4*480, height=4*480, units="px", pointsize=80, bg="white", res = NA, family="", type="cairo-png")
    par(mar=c(2.6,2,0.4,0.5), fig=c(0,1,0.1,1), las=1, bty="n", mgp=c(1.6,0.5,0))
      gbm.plot(my_gbm_model,
             n.plots=1,
             plot.layout = c(1,1),
             y.label = "",
             write.title=F,
             variable.no = 1,
             lwd=8,
             rug=F,
             smooth=F,
             axis(side=1,lwd=8))
    dev.off()
给出错误:

Error in axis(side = 1, lwd = 8) : plot.new has not been called yet
所以它在
plot
中清晰地绘制轴,因为我不能从
par
影响轴,我可以在
plot
中关闭它们。我可以做我想做的,并使一个轴粗体,但这会导致一个更平滑和警告。我可以关闭平滑器,但是它失败了,因为它显示的是
plot.new
没有被调用。这甚至没有考虑到我要处理的另一个轴,这也会导致
绘图。如果我按顺序调用2轴并允许更平滑的曲线,则new
会失败

我是这里一个大笑话的对象,还是我错过了一些明显的东西?我花了很长时间才计算出PAR应该在所有绘图之前,除非你用PNG输出它们。在这种情况下,它必须在<代码> PNG < /C>和<代码>图< /代码> -难以置信的是,这个信息不在<代码> PAR < /代码>中。我知道我说的话有点离题了,抱歉,但是是的,整整两天。这是每个人在R中策划的经验吗

我要打开冰箱里的伏特加。我很感激我没有把完整的可复制代码放在这里,抱歉,如果绝对必要的话,我可以这样做,但要达到可复制的阶段需要花费大量的时间,我希望有人能从我给出的内容中看到一个基本的逻辑/编码失败

谢谢各位

编辑:再现性 核心数据csv: (我以前曾试图使这些数据具有可复制性,但我不知道如何做到这一点)
示例以下内容将拓宽轴刻度:

  ..... , lwd.ticks=4 , ...
我在不进行测试的基础上预测,因为我不断地从您提供的有限代码中得到错误)它将在gbm.plot或后续的axis调用中得到正确处理。需要进行后续的
axis
调用,事实上其中两个调用(因为正如您所指出的,“lwd”会被不加区别地传递):

这是我通过一个简单的例子看到的:

png(); Speed <- cars$speed
Distance <- cars$dist
plot(Speed, Distance,
     panel.first = lines(stats::lowess(Speed, Distance), lty = "dashed"),
     pch = 0, cex = 1.2, col = "blue", axes=FALSE)
 axis(1, lwd.ticks=4, lwd=4) 
      axis(2, lwd.ticks=4, lwd=4)
dev.off()

png();Speed Post是一个可复制的示例。(我尝试使用vignette构建一个,但在几个步骤后都出现了错误。似乎您在这里推卸了自己的责任。)没有示例
gbm
对象,我们无法自己复制绘图,因此无法帮助您进行故障排除。但是
轴(side=1,lwd=8)
不应作为参数传递给函数。这是一个单独的函数,将在调用
plot()
后调用:
plot(1:3,1:3,xaxt=“n”);例如,轴(1,lwd=7)
。但是,
gbm.plot
可能有不同的处理方法。通常,当你花时间创建一个最小的、可重复的示例时,你可以很容易地自己发现错误。在发布问题之前不这样做真的是浪费每个人的时间。关键词是“最小”和“可复制”。通常,R帮助页面是此类示例的良好起点。这是一项基本技能,无论你用哪种语言编程,你都应该掌握。为帮助你的人干杯。MrFlick:原则上是的,但我上一次试过了,花了两个小时试着调试为什么我试图创建一个与我的核心数据的最小模拟量没有在gbm中运行。相同的最小值/最大值、相似的平均值、相同的n等。。我只是希望有人能看到代码,然后说“哦,是的,你需要”laxt()“或类似的东西。我有一个“嗯,你为什么不做…X呢?”“是冲动,但我更喜欢测试我的答案。我被自己的错误折磨了太多次了。你应该能够从小插曲中构建一个工作示例,这比我能做的更容易。干杯。感觉gbm.plot导致了这种奇怪的行为。我起床后要做一个测试。我想我不会责怪gbm.plot。它传递大多数绘图参数,就像大多数硬编码绘图函数一样。基本绘图功能中的
lwd
lwd.line
之间没有区别。感谢您的帮助。通过执行额外的axis()线并删除现有的线,轴标签的增量仅为20%。这让我再次研究了这个函数&我意识到gbm.plot只是plot.gbm的一个奇特的包装器,所以我不会直接调用它。不幸的是,现在我无法删除yaxis标签,所以这是下一个问题。。。!
png(); Speed <- cars$speed
Distance <- cars$dist
plot(Speed, Distance,
     panel.first = lines(stats::lowess(Speed, Distance), lty = "dashed"),
     pch = 0, cex = 1.2, col = "blue", axes=FALSE)
 axis(1, lwd.ticks=4, lwd=4) 
      axis(2, lwd.ticks=4, lwd=4)
dev.off()