2014-09-22 27 views
0

我有动态地构建线图的功能,因此,需要解决我用公式问题,而不是手动设置范围。 (注意专家:我已经为自己&其他人写了这个逻辑进程 - 道歉,这意味着更多的文字;我觉得R的帮助是特别分散和无助于绘图,所以希望这可以帮助其他人)。R:设置的轴蜱&范围包括所有点瓦特/漂亮打破

我生成的线图的坐标轴有正确的刻度间距数(默认,假设是'漂亮中断'?),但轴范围不包含整个数据范围 - 有些是外。 (你可以忽略地毯情节十分位数轴线上方,但第一&最后的显示数据范围)

x axis length

那么想我是x轴的宽度,以涵盖所有数据,但保留美丽的休息时间,即将最小/最大滴答点分散到很好的值,或超过极端值......理想情况下,没有太多工作!我的意思并不是懒惰,但它感觉像是一种常见的愿望。我在读有关at,包括pretty和,也xaxtxaxsxpd

plotxaxs控制实际数据线在图中所占的宽度,“i”将其扩展到边距,“r”(或默认)将其稍微挤压一点。这是很酷的知道,但可以说不是人们所期望的'轴'。 (这里设置为“r”/默认)

xaxt的帮助让我们知道它是用来关闭轴绘图的功能,但没有说明它做了什么/它们是什么类型的。

axis,at控制轴线长度,默认为,默认为xaxp。在它面前,xaxp是我想要的,允许一个指定c(x1, x2, n),但是默认x1 & x2是数据范围之内,而不是围绕它。

axis求助说:

“的轴线从最低的at最高值绘制的,但在情节区域被夹在默认情况下,只蜱这是从点积内绘制。区域(最多为舍入误差容限)绘制,但蜱及其标签可积区外以及延长。使用xpd = TRUExpd = NA允许轴,以进一步扩展”

无论xpd = TRUE也不xpd = NA似乎改变什么。 XPD求助说:

“如果FALSE,所有绘制剪裁到情节区域,如果是真的,所有的绘制剪裁到人物区域,如果不适用,所有的绘制剪裁到设备区”

axis帮助说xpd控制轴扩展,xpd帮说xpd控制绘图裁减。

xaxp帮助表示

“的纯的R执行本见axTicks()”“计算漂亮的对勾标记的位置,以同样的方式为R确实在内部”,并默认为相关方的at值,即par("xaxp")

pretty似乎scarily复杂,并且很可能是什么R在内部使用时,应用到at计算默认的刻度标记的间隔;能够编辑这个参数并没有其他任何东西,也就是说,根据绘图区域大小指定期望的间隔数量,但是我很乐意留下这个意思,如果这意味着花费一天的时间反编译,理解,然后手动重新编译pretty!我也不知道n是否与nxaxp中有相同的作用,如果是这样的话,它会优先考虑。

所以,R的帮助似乎用“轴”是指两轴(xaxtaxis)和绘图(xaxsxpd),没有迹象显示该参数是否受到parplotaxis控制,或可以控制通过它们中的任何一个的组合(像往常一样)。在试图找到负责的元素,axisat其中说其中说xaxp其中说它说at(=循环)。

作为一个次要的,更广泛的元问题:我是否在尝试找出绘制问题的答案方面做了些错误?我阅读和阅读的帮助是经常缺乏,混淆,矛盾,并通常导致直觉黑洞是否应该控制par,plotaxis。先谢谢你们。对不起,这很长,我真的认为这将是一个超级简单的选择。

最小的可重复的例子:

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() 
+2

我没有花时间阅读所有内容,但'scales :: extended_breaks()'应该在这里帮助。 – baptiste 2014-09-22 10:56:09

+0

谢谢。我不假设你知道是否有任何关于何处以及如何使用的信息?即par/plot/axis?我尝试在plot中添加“extended_breaks(n = 7)”,但是得到:“title(...)中的错误:不能强制类型'closure'输入'character'类型的vector。谢谢。 – 2014-09-22 12:26:18

+0

如果你发布了一个最小可重现的例子,有人可能会告诉你 – baptiste 2014-09-22 13:33:00

回答

1

的想法是自己绘制坐标轴,不让阴谋使用默认的。这里有一个似乎工作的例子,

xx <- labeling::extended(min(ChickWeight[,1]), max(ChickWeight[,1]), 
         3, only.loose=TRUE) 
yy <- labeling::extended(min(ChickWeight[,2]), max(ChickWeight[,2]), 
         3, only.loose=TRUE) 
plot(range(xx),range(yy), t="n", xaxt="n", yaxt="n") 
points(ChickWeight[,1:2],type="p") 
axis(1, at = xx) 
axis(2, at = yy) 
+0

有趣的,好爽谢谢,我会有一个发挥与此。似乎很奇怪,R的帮助对于标签包来说太少了,尤其是考虑到它与R的标准绘图设置相比的不直观应用(尽管他们说要阅读他们的论文) – 2014-09-22 15:10:24