具有 R 的 GGally ggpairs 的不同图形的不同比例单位
Different scale units for different graphs with R's GGally ggpairs
这里使用 iris
数据集作为示例,我有以下来自 ggpairs()
的图表网格:
library(GGally)
ggpairs(iris)
...
我想稍微清理一下这张图,特别是轴上的一些格式。我想加粗标题(Sepal.Length、Sepal.Width 等),更重要的是,我想格式化轴上的单位。
但是,对于每一列/行,我想使用不同的单位格式。 (即使它不是 percentage-based 统计数据),对于 Sepal.Width 列/行,我希望单位是百分比。对于带有连续变量的普通 ggplot(),我会做 scale_x_continuous(labels = scales::percent_format())
,但是我不太确定如何有选择地将单位格式应用于 ggpairs() 输出的不同行/列。
非常感谢任何帮助,谢谢!
有几种方法可以继续;这里有两个。
您可以使用子集机制更改特定图:
library(GGally)
p = ggpairs(iris)
p[2,1] = p[2,1] + scale_y_continuous(labels = scales::percent_format())
或者您可以编写一个函数传递给 ggpairs
,您可以在其中指定依赖于变量的格式。格式化 y 轴的愚蠢示例:
# acc_y is a named vector giving the parameters to be passed to
# the accuracy argument of scales::percent_format
quick_fun <- function(data, mapping, acc_y, ...){
y_name = quo_name(mapping$y)
ggplot(data=data, mapping=mapping) +
geom_point() +
scale_y_continuous(labels = scales::percent_format(accuracy = acc_y[y_name]))
}
ggpairs(iris, lower=list(continuous=wrap(quick_fun,
acc_y=c("Sepal.Length"=0.1, "Sepal.Width"=0.1,
"Petal.Length"=10, "Petal.Width"=1000))))
另请注意,ggplot
主题也适用于绘图矩阵,因此您可以格式化条带文本
p + theme(strip.text = element_text(face="bold", colour="red", size=20))
这里使用 iris
数据集作为示例,我有以下来自 ggpairs()
的图表网格:
library(GGally)
ggpairs(iris)
我想稍微清理一下这张图,特别是轴上的一些格式。我想加粗标题(Sepal.Length、Sepal.Width 等),更重要的是,我想格式化轴上的单位。
但是,对于每一列/行,我想使用不同的单位格式。 (即使它不是 percentage-based 统计数据),对于 Sepal.Width 列/行,我希望单位是百分比。对于带有连续变量的普通 ggplot(),我会做 scale_x_continuous(labels = scales::percent_format())
,但是我不太确定如何有选择地将单位格式应用于 ggpairs() 输出的不同行/列。
非常感谢任何帮助,谢谢!
有几种方法可以继续;这里有两个。
您可以使用子集机制更改特定图:
library(GGally)
p = ggpairs(iris)
p[2,1] = p[2,1] + scale_y_continuous(labels = scales::percent_format())
或者您可以编写一个函数传递给 ggpairs
,您可以在其中指定依赖于变量的格式。格式化 y 轴的愚蠢示例:
# acc_y is a named vector giving the parameters to be passed to
# the accuracy argument of scales::percent_format
quick_fun <- function(data, mapping, acc_y, ...){
y_name = quo_name(mapping$y)
ggplot(data=data, mapping=mapping) +
geom_point() +
scale_y_continuous(labels = scales::percent_format(accuracy = acc_y[y_name]))
}
ggpairs(iris, lower=list(continuous=wrap(quick_fun,
acc_y=c("Sepal.Length"=0.1, "Sepal.Width"=0.1,
"Petal.Length"=10, "Petal.Width"=1000))))
另请注意,ggplot
主题也适用于绘图矩阵,因此您可以格式化条带文本
p + theme(strip.text = element_text(face="bold", colour="red", size=20))