在R中使用pairs绘制散点图,数据包含零值,要使用对数比例尺。

3

我想使用"pairs"函数绘制一些散点图。我的数据框如下:

    >e
    X Y Z
    0 0 0
    2 3 4
    0 3 4
    3 3 3

这里是完全标准的数据框。

我将其用于绘制散点图,没有什么花哨的东西:

pairs(~X+Y+Z, data=e, log="xy")

它的表现很好,但它不会绘制标签。然而,如果我在命令中删除log="xy",那么标签就会被漂亮地绘制出来。所以我想这与我想让我的散点图处于对数刻度有关。
所以我的问题是我该怎么办? 我应该提前删除所有包含零的行吗(如何做到这一点?) 是否有一个神奇的技巧可以让我拥有log="xy"和我的散点图标记?
请让我知道是否不清楚。
1个回答

7

你忽略了这个(我在调用你的数据框时称其为DF):

R> pairs(~X+Y+Z, data=df, log="xy")
There were 30 warnings (use warnings() to see them)

如果您查看这些30个警告,您会发现:
- 不能在对数坐标上绘制包含零的数据(我猜您知道原因) - log不是pairs()的一个已知参数
所以如果您想在对数坐标下进行配对绘图,您可能需要自己取对数(并且可以添加一个小的epsilon或使用像log(1 + x)这样的转换),然后对该数据调用pairs()
编辑:最简单的方法可能是pairs(~X+Y+Z, data=log(1+DF))

这是一种奇怪的行为。它实际上在对数刻度上绘制数据,一切看起来都很好,只是省略了标签。使用plot(df, log="xy")也会出现类似的结果,其中log(大概?)是plot()的有效参数。 - Ken Williams
另外,不是要挑剔你的解决方案,因为它是我所知道的最好的,但是pairs(~X+Y+Z, data=log(1+DF))会不希望地改变轴标签为对数刻度。 - Ken Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接