提高ggpairs、ggplot中散点图的可读性

Improving the readability of the scatterplot in ggpairs, ggplot

我正在使用 ISLR 库中的 Auto 数据集和 gpairs 库中的函数 ggpairs() 来创建所有可能的变量组合的散点图。我的代码如下:

data(Auto)
setDT(Auto)
ggpairs(Auto[, -c("name"), with = FALSE] , 
        lower = list(continuous = wrap("points", color = "red", alpha = 0.5), 
                     combo = wrap("box", color = "orange", alpha = 0.3), 
                     discrete = wrap("facetbar", color = "yellow", alpha = 0.3) ), 
                    diag = list(continuous = wrap("densityDiag",  color = "blue", alpha = 0.5) ))+
     theme(axis.text.x = element_text(angle = 90, hjust = 1))

剧情如下:

这个情节有一些问题:

  1. 轴刻度标签不可读。我怎样才能删除数字并可能旋转刻度标签使其垂直于轴?

  2. 如何为组合对(分类 - 连续)强制使用不同的颜色

我们将不胜感激您的建议。

也许建议的解决方案与您的愿望并不完全吻合,但希望对您有所帮助。

  1. 您需要调用更多库才能使代码正常工作。
  2. 您将需要有 "force" 分类变量的因数。

以下代码可以解决问题:

library(ISLR)
library(data.table)
library(GGally)
library(ggplot2)
data(Auto, package = "ISLR")

# remove unwanted column and make categorical variables
Auto2 <- Auto[, -9]
Auto2$cylinders <- factor(Auto2$cylinders)
Auto2$origin <- factor(Auto2$origin)

ggpairs(Auto2 , 
        lower = list(continuous = wrap("points", color = "red", alpha = 0.5), 
                     combo = wrap("box", color = "orange", alpha = 0.3), 
                     discrete = wrap("facetbar", color = "yellow", alpha = 0.3) ), 
        diag = list(continuous = wrap("densityDiag",  color = "blue", alpha = 0.5) ))

这会产生下图:

请告诉我这是否是您想要的。

非常棘手的东西,梳状包装器使用因子水平作为输入来改变颜色(如@KoenV 的示例所示)而不是离散的,这有点用词不当。但是,更改 class 会更改 upper/diag 部分。

我发现的唯一替代方法是使用 putPlot 手动更改地块。

# remove ticks (I don't get labels when plotting it)

p = ggpairs(Auto[, -c("name"), with = FALSE] , 
        lower = list(continuous = wrap("points", color = "red", alpha = 0.5), 
                     combo = wrap("box", color = "orange", alpha = 0.3), 
                     discrete = wrap("facetbar", color = "yellow", alpha = 0.3)), 
        diag = list(continuous = wrap("densityDiag",  color = "blue", alpha = 0.5) ))+
        theme(axis.text = element_blank(),axis.ticks = element_blank())

并更改单个图并添加箱线图/ + 颜色(可能遍历所需的图

cp = ggplot(Auto) +
  geom_boxplot(aes(as.factor(cylinders), mpg),color="orange")
putPlot(p, cp, 2,1)