【发布时间】:2014-09-22 09:33:30
【问题描述】:
我有一个动态构建线图的函数,因此需要用公式而不是手动设置范围来解决我的问题。 (专家提示:我后来为自己和其他人按逻辑顺序编写了这篇文章 - 很抱歉这意味着更多的文字;我发现 R 帮助特别分散且对绘图无益,因此希望这对其他人有所帮助)。
我生成的线图的轴具有正确的刻度间距数量(默认,假定为“漂亮的中断”?)但轴范围不包括数据的整个范围 - 有些超出. (您可以忽略轴上方的地毯图十分位数,尽管第一个和最后一个显示数据范围)
所以我希望 x 轴宽度包含所有数据,但保留漂亮的中断,即将最小/最大刻度点扩展到等于或超过极值的好值...理想情况下没有很多工作!我并不是说听起来很懒惰,但这感觉就像是一种共同的愿望。我正在阅读at,包括pretty 和axTicks,还有xaxt 和xaxs 和xpd。
在plot 中,xaxs 控制实际数据线在图中占据的宽度,“i”将其扩展到边缘,“r”(或默认值)将其稍微挤压。知道这很酷,但可以说不是人们所期望的“轴”。 (此处设置为“r”/默认)
xaxt 的帮助让人们知道这是您用来关闭轴绘图的工具,但没有说明它还有什么作用/其他类型是什么。
在axis中,at控制轴线长度,默认为axTicks,默认为xaxp。从表面上看,xaxp 是我想要的,允许指定c(x1, x2, n),但是默认的x1 和x2 在数据范围内,而不是包含它。
axis 帮助说:
"轴线是从at的最低值到最高值绘制的,但会在绘图区域被剪裁。默认情况下,仅从绘图区域内的点绘制的刻度(最大容差为舍入误差)被绘制,但刻度及其标签可能会延伸到绘图区域之外。使用xpd = TRUE 或xpd = NA 允许轴进一步延伸“
xpd = TRUE 和 xpd = NA 似乎都没有改变任何东西。 xpd 帮助说:
"如果为FALSE,所有绘图都被裁剪到绘图区域,如果为TRUE,所有绘图被裁剪到图形区域,如果NA,所有绘图被裁剪到设备区域"
即axis help 说xpd 控制轴延伸,xpd help 说xpd 控制绘图剪切。
xaxp help 说“请参阅axTicks() 了解此的纯 R 实现”
axTicks "计算漂亮的刻度线位置,与 R 在内部执行的方式相同",并默认为相关侧的 at 值,即par("xaxp")。
pretty 看起来非常复杂,并且很可能是R 在内部用于计算at 时的默认刻度间距;能够编辑 n 参数会很酷,仅此而已,即根据我的绘图区域大小指定所需的间隔数,但如果这意味着要花一天时间进行反编译,我很乐意离开,理解, 然后手动重新编译pretty!另外我不知道漂亮的刻度线的n 是否与xaxp 中的n 做同样的事情,如果是这样,哪个优先。
所以:R帮助似乎使用“轴”来表示轴(xaxt,axis)和绘图(xaxs,xpd),没有迹象表明参数是否由par控制,plot,axis,或者可以通过它们中的任何一个组合来控制(像往常一样)。在试图找到负责的元素时,axis 说at 说axTicks 说xaxp 说axTicks 说at (=循环)。
作为一个次要的、更广泛的元问题:在试图找到绘图问题的答案方面,我在这里做错了吗?我反复阅读,发现帮助经常缺乏、令人困惑、矛盾,并且通常会导致直觉黑洞是否应该由par、plot 或axis 控制。提前谢谢各位。对不起,这很长,我真的认为这将是一个超级简单的选择。
最小的可重现示例:
png(filename="A.png", width=4*480, height=4*480, units="px", pointsize=80, bg="white", res=NA, family="", type="cairo-png")
par(mar=c(1.32,2,0.4,0.5), fig=c(0,1,0,1), las=1, lwd=8, bty="n", mgp=c(2,0.5,0), xpd=NA)
plot(ChickWeight[,1:2],type="l",xaxs="i",yaxs="i")
dev.off()
【问题讨论】:
-
我没有花时间阅读所有内容,但
scales::extended_breaks()应该在这里提供帮助。 -
谢谢。我想你不知道是否有任何关于在哪里以及如何使用它的信息吗?即par/plot/axis?我尝试将“extended_breaks(n = 7)”添加到情节中,但得到:“标题错误(...):无法将类型'闭包'强制转换为'字符'类型的向量”。谢谢。
-
如果你发布一个最小的可重现示例,有人可能会向你展示
-
完成。将“,extended_breaks(n = 7)”添加到绘图中没有任何作用,进入par找不到功能,删除所有par设置。干杯
标签: r plot range axis-labels axes