带误差条的R散射图矩阵

带误差条的R散射图矩阵,r,ggplot2,scatter-plot,R,Ggplot2,Scatter Plot,是否有任何R程序包/方法/功能可提供将散点图矩阵绘制为(scatterplot.matrix找到的car程序包的功能)以及按照询问和回答绘制x和y错误条的功能 例如: set.seed(123) df <- data.frame(X = rnorm(10), errX = rnorm(10)*0.1, Y = rnorm(10), errY = rnorm(10)*0.2, Z = rnorm(10)) require(ggplot2) ggplot(data = df, aes(x =

是否有任何R程序包/方法/功能可提供将散点图矩阵绘制为(
scatterplot.matrix
找到的
car
程序包的功能)以及按照询问和回答绘制x和y错误条的功能

例如:

set.seed(123)
df <- data.frame(X = rnorm(10), errX = rnorm(10)*0.1, Y = rnorm(10), errY = rnorm(10)*0.2, Z = rnorm(10))
require(ggplot2)
ggplot(data = df, aes(x = X, y = Y)) + geom_point() + 
  geom_errorbar(aes(ymin = Y-errY, ymax = Y+errY)) + 
  geom_errorbarh(aes(xmin = X-errX, xmax = X+errX)) + theme_bw()
生成散点图矩阵,如下所示:

现在,我的预期输出将是这样一个散点图矩阵(除了
汽车
之外的任何其他软件包也可以),在这里我还可以显示错误条。(请注意,并非我所有的变量都有错误,例如,
Z
没有)。另外,
spm
函数在这里完成的装配等也是一个很好的噱头,但对我来说不是必需的

数据

set.seed(123)
df <- data.frame(X = rnorm(10), errX = rnorm(10)*0.1,
                 Y = rnorm(10), errY = rnorm(10)*0.2,
                 Z = rnorm(10))
最后,我添加了列
var1
var2
,描述选择了哪些变量:

head(mdf)
#          val1       val2        err1        err2 var1 var2
# 1 -0.56047565 -1.0678237  0.12240818  0.08529284    X    Y
# 2 -0.23017749 -0.2179749  0.03598138 -0.05901430    X    Y
# 3  1.55870831 -1.0260044  0.04007715  0.17902513    X    Y
# 4  0.07050839 -0.7288912  0.01106827  0.17562670    X    Y
# 5  0.12928774 -0.6250393 -0.05558411  0.16431622    X    Y
# 6  1.71506499 -1.6866933  0.17869131  0.13772805    X    Y
通过这种方式转换数据,可以很容易地生成散点图矩阵。使用此方法,还可以修改对角线面板,如以下示例所示:

p + geom_text(aes(ymin = NULL, ymax = NULL, xmin = NULL, xmax = NULL), 
              label = "X",
              data = data.frame(var1 = "X", var2 = "X", 
                                val1 = 0, val2 = 0))
绘图


您是否有可复制的示例和一些代码可供分享?这是一个很好的答案,也是一个非常灵活的解决方案+1我检查了你的代码,我非常确定它应该是
facet\u grid(var2~var1,drop=FALSE)
,这样变量在列中沿x轴的分布和在行中沿y轴的分布是相同的,而现在不是这样。如果可以确认,请进行编辑。
y~x
的左侧(即y)决定行,右侧(即x)决定列。如果你切换它们,你就“转置”了矩阵。但我不确定我是否正确地理解了你的评论,你能重新措辞吗?@ THOTALE让我们讲述最后一个情节和下一行情节:我预期Y轴属于两个情节中的Z变量,而X轴属于左图中的X变量和中间情节中的Y变量。但是,因为这两个子图来自相同的数据集,我希望能够从左子图中的每个点绘制水平线到中间图中的相同点(相同Z值)。从两个子地块的最高点可以看出,这里的情况并非如此。相反,两个图中最左边的点重合。这更有帮助吗?
valCols <- names(df)[grepl("^[A-Z]$", names(df))]
head(mdf)
#          val1       val2        err1        err2 var1 var2
# 1 -0.56047565 -1.0678237  0.12240818  0.08529284    X    Y
# 2 -0.23017749 -0.2179749  0.03598138 -0.05901430    X    Y
# 3  1.55870831 -1.0260044  0.04007715  0.17902513    X    Y
# 4  0.07050839 -0.7288912  0.01106827  0.17562670    X    Y
# 5  0.12928774 -0.6250393 -0.05558411  0.16431622    X    Y
# 6  1.71506499 -1.6866933  0.17869131  0.13772805    X    Y
p + geom_text(aes(ymin = NULL, ymax = NULL, xmin = NULL, xmax = NULL), 
              label = "X",
              data = data.frame(var1 = "X", var2 = "X", 
                                val1 = 0, val2 = 0))