带误差条的R散射图矩阵
是否有任何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 =
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))