在此示例中,使用iris
数据集,我得到了ggpairs()
中的以下图表网格:
library(GGally)
ggpairs(iris)
我想对此图表进行一些整理,特别是在轴上进行一些格式化。我想加粗标题(Sepal.Length,Sepal.Width等),更重要的是,我想格式化轴上的单位。
但是,对于每个列/行,我想使用不同的单位格式。 (即使它不是基于百分比的统计信息),对于Sepal.Width列/行,我希望单位为百分比。对于具有连续变量的普通ggplot(),我会做scale_x_continuous(labels = scales::percent_format())
,但是我不太确定如何有选择地将单位格式应用于ggpairs()输出的不同行/列。
对此非常感谢,谢谢!
答案 0 :(得分:1)
有两种方法可以进行:这是两个。
您可以使用子设置机制来更改特定图:
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))