如何获得仅由带有 1:1 线的散点图和良好的轴标签组成的散点矩阵?
How to get a scatter matrix consisting of just scatterplots with a 1:1 line, and good axis labels?
我想要一个仅包含散点图的矩阵,其中存在一条 1:1 线。
数据具有以下结构:
bulk_SIC_25 <- data.frame(soilsample$bulk_SIC_scheibler_25,soilsample$bulk_SIC_LECO.CBLB_25,soilsample$bulk_SIC_RE6_25)
colnames(bulk_SIC_25)<-c("SIC_scheibler_25","SIC_LECO-CBLB_25","SIC_RE6_25")
dataframe中的数据是:
dput(bulk_SIC_25)
structure(list(SIC_scheibler_25 = c(8.292, 9.648, 9.072, 6.084,
10.944, 12.48, 4.368, 6.732, 5.592, 9.024, 8.7, 9.48, 9.588,
3.432, NA, 15.72), SIC_LECO-CBLB_25
= c(6.9, 9.5, 8, 6.6, 11.1,
13, NA, 7, 5.5, 8.95, 9.14, 9.6, 9.2, 3.5, NA, NA), SIC_RE6_25 = c(10.4,
10.7, 11.3, 8.6, 13.2, 15.5, 6.3, 9.6, 7.6, 10.5, 10.7, 11.3,
11.4, 5.1, 17.2, 17.9)), class = "data.frame", row.names = c(NA,
-16L))
pairs 函数生成一个漂亮的矩阵,其中只有散点图和可见的 x/y 轴和变量名:
example pairs
pairs(bulk_SIC_25, labels=colnames(bulk_SIC_25),gap=0.5, main=" Total Carbon in bulk soil ",lower.panel=NULL, cex.labels=1.5 ,pch=21, bg="Black")`
但是,我无法更改点的大小,也无法添加 1:1 行。
因此,我切换到带有内部标签的 ggpairs:
Example ggpairs internal labels
代码:
ggpairs(data=soilsample, columns = c("bulk_SIC_scheibler_25","bulk_SIC_LECO.CBLB_25","bulk_SIC_RE6_25"), upper="blank",axisLabels = "internal")+ggtitle(label="Soil Organic Carbon bulk soil")+theme_bw(base_size=15)+geom_abline(intercept=0,slope=1)+labs(x="g C/ kg soil", y= "g C / kg soil")+geom_point(size=3)+ theme(plot.title = element_text(hjust = 0.5))
但是,如您所见,内部轴标签的网格线与散点图不匹配,因此散点图很难阅读。
我试过:
limitRangediag <- function(data, mapping, ...) {
ggplot(data = data, mapping = mapping, ...) +
scale_y_continuous(limits = c(5, 16)) +
scale_x_continuous(limits = c(5, 16))
}
ggpairs(data=soilsample, columns = c("bulk_SIC_scheibler_25","bulk_SIC_LECO.CBLB_25","bulk_SIC_RE6_25"), upper="blank",lower = list(continuous = limitRange),diag=list(continous=limitRangediag),axisLabels = "internal")+ggtitle(label="Soil Organic Carbon bulk soil")+theme_bw(base_size=15)+geom_abline(intercept=0,slope=1)+labs(x="g C/ kg soil", y= "g C / kg soil")+geom_point(size=3)+
theme(plot.title = element_text(hjust = 0.5))
我知道我在编写函数时做错了,但我对此非常缺乏经验,不知道我做错了什么。
我也可以安心地将外部标签放在 ggpairs 的正确位置(因此跳过第一个空白行,并将标签放在图本身上方),但我不知道这样做...... :
example ggpairs external labels
ggpairs(data=df, columns = c("bulk_SIC_scheibler_25","bulk_SIC_LECO.CBLB_25","bulk_SIC_RE6_25"), upper="blank",diag="blank",axisLabels = "shown")+ggtitle(label="Soil Organic Carbon bulk soil")+theme_bw(base_size=15)+geom_abline(intercept=0,slope=1)+labs(x="g C/ kg soil", y= "g C / kg soil")+geom_point(size=3)+ theme(plot.title = element_text(hjust = 0.5))
如果有人能帮我解决这 3 个选项中的一个问题,以获得一个漂亮的散点图矩阵,其中包含一条 1:1 线和大小可调的点,并带有可读的轴标签,我将不胜感激! !
- 在
pairs()
中,您可以将 panel=
参数(默认情况下为 points()
)指定为包含您想要的任何内容的函数,例如对 [=14 的调用=](在您的情况下,您将使用 upper.panel=
,因为您希望下面板为 NULL)
cex
参数(传递给面板函数)将更改磅值。
pairs(mtcars[,1:5],
panel = function(...) { points(...); abline(a=0,b=1,lty=2,col="red") },
cex=4,
gap=0 ## you didn't ask for this but I prefer it
)
在此特定示例中,1:1 线并未出现在每个面板中,但原则上它存在(您必须设置 x、y 限制以确保它与面板区域相交)
我想要一个仅包含散点图的矩阵,其中存在一条 1:1 线。 数据具有以下结构:
bulk_SIC_25 <- data.frame(soilsample$bulk_SIC_scheibler_25,soilsample$bulk_SIC_LECO.CBLB_25,soilsample$bulk_SIC_RE6_25)
colnames(bulk_SIC_25)<-c("SIC_scheibler_25","SIC_LECO-CBLB_25","SIC_RE6_25")
dataframe中的数据是:
dput(bulk_SIC_25) structure(list(SIC_scheibler_25 = c(8.292, 9.648, 9.072, 6.084, 10.944, 12.48, 4.368, 6.732, 5.592, 9.024, 8.7, 9.48, 9.588, 3.432, NA, 15.72),
SIC_LECO-CBLB_25
= c(6.9, 9.5, 8, 6.6, 11.1, 13, NA, 7, 5.5, 8.95, 9.14, 9.6, 9.2, 3.5, NA, NA), SIC_RE6_25 = c(10.4, 10.7, 11.3, 8.6, 13.2, 15.5, 6.3, 9.6, 7.6, 10.5, 10.7, 11.3, 11.4, 5.1, 17.2, 17.9)), class = "data.frame", row.names = c(NA, -16L))
pairs 函数生成一个漂亮的矩阵,其中只有散点图和可见的 x/y 轴和变量名: example pairs
pairs(bulk_SIC_25, labels=colnames(bulk_SIC_25),gap=0.5, main=" Total Carbon in bulk soil ",lower.panel=NULL, cex.labels=1.5 ,pch=21, bg="Black")`
但是,我无法更改点的大小,也无法添加 1:1 行。 因此,我切换到带有内部标签的 ggpairs:
Example ggpairs internal labels 代码:
ggpairs(data=soilsample, columns = c("bulk_SIC_scheibler_25","bulk_SIC_LECO.CBLB_25","bulk_SIC_RE6_25"), upper="blank",axisLabels = "internal")+ggtitle(label="Soil Organic Carbon bulk soil")+theme_bw(base_size=15)+geom_abline(intercept=0,slope=1)+labs(x="g C/ kg soil", y= "g C / kg soil")+geom_point(size=3)+ theme(plot.title = element_text(hjust = 0.5))
但是,如您所见,内部轴标签的网格线与散点图不匹配,因此散点图很难阅读。
我试过:
limitRangediag <- function(data, mapping, ...) {
ggplot(data = data, mapping = mapping, ...) +
scale_y_continuous(limits = c(5, 16)) +
scale_x_continuous(limits = c(5, 16))
}
ggpairs(data=soilsample, columns = c("bulk_SIC_scheibler_25","bulk_SIC_LECO.CBLB_25","bulk_SIC_RE6_25"), upper="blank",lower = list(continuous = limitRange),diag=list(continous=limitRangediag),axisLabels = "internal")+ggtitle(label="Soil Organic Carbon bulk soil")+theme_bw(base_size=15)+geom_abline(intercept=0,slope=1)+labs(x="g C/ kg soil", y= "g C / kg soil")+geom_point(size=3)+
theme(plot.title = element_text(hjust = 0.5))
我知道我在编写函数时做错了,但我对此非常缺乏经验,不知道我做错了什么。
我也可以安心地将外部标签放在 ggpairs 的正确位置(因此跳过第一个空白行,并将标签放在图本身上方),但我不知道这样做...... : example ggpairs external labels
ggpairs(data=df, columns = c("bulk_SIC_scheibler_25","bulk_SIC_LECO.CBLB_25","bulk_SIC_RE6_25"), upper="blank",diag="blank",axisLabels = "shown")+ggtitle(label="Soil Organic Carbon bulk soil")+theme_bw(base_size=15)+geom_abline(intercept=0,slope=1)+labs(x="g C/ kg soil", y= "g C / kg soil")+geom_point(size=3)+ theme(plot.title = element_text(hjust = 0.5))
如果有人能帮我解决这 3 个选项中的一个问题,以获得一个漂亮的散点图矩阵,其中包含一条 1:1 线和大小可调的点,并带有可读的轴标签,我将不胜感激! !
- 在
pairs()
中,您可以将panel=
参数(默认情况下为points()
)指定为包含您想要的任何内容的函数,例如对 [=14 的调用=](在您的情况下,您将使用upper.panel=
,因为您希望下面板为 NULL) cex
参数(传递给面板函数)将更改磅值。
pairs(mtcars[,1:5],
panel = function(...) { points(...); abline(a=0,b=1,lty=2,col="red") },
cex=4,
gap=0 ## you didn't ask for this but I prefer it
)
在此特定示例中,1:1 线并未出现在每个面板中,但原则上它存在(您必须设置 x、y 限制以确保它与面板区域相交)