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

时间:2017-06-08 04:30:20

标签: r ggplot2 scatter-plot

我使用来自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))

情节如下: enter image description here

这个情节存在一些问题:

  1. 轴刻度标签不可读。如何删除数字并可能将刻度标记旋转为垂直于轴?

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

  3. 您的建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

也许建议的解决方案不能完全符合您的意愿,但我希望它有所帮助。

  1. 您需要调用更多库才能使代码生效。
  2. 你需要有因素来强迫"分类变量就是这样的。
  3. 以下代码可以解决问题:

    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) ))
    

    这会产生以下图片:

    enter image description here

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

答案 1 :(得分:0)

非常棘手的东西,梳子包装器使用因子水平作为输入来改变颜色(如示例中所示的@KoenV)而不是离散的,这有点用词不当。但是更改类会更改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())

更改单个图并添加boxplot / +颜色(可能在所需图上循环

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