应用单独的图层时,在ggplot中保持离散的缩放级别

时间:2019-03-02 18:58:14

标签: r ggplot2 graphics

应用新的geom_会更改ggplot中现有的因子水平。

想象一下绘制一个相关矩阵,其中点表示对角线以下的相关性,而标签则位于对角线以下。

library(tidyverse)
library(magrittr)
library(broom)

t1 <- mtcars %>% 
  cor %>% 
  as_tibble %>%
  mutate(
    v1 = mtcars %>% names
    ) %>% 
  gather(
    v2, cor, -v1
  ) %>% 
  filter(
    cor != 1
  )

此对象(fl)是所需的因子水平安排

fl <- mtcars %>% 
  factanal(factors = 1) %>% 
  tidy %>% 
  arrange(fl1) %>% 
  use_series(variable)

设置此t1对象进行绘图

t1 %<>% 
  modify_at(
    1:2, 
    ~factor(., fl)
  ) %>% 
  mutate(
    v1_num = v1 %>% 
      as.numeric,
    v2_num = v2 %>% 
      as.numeric,
    lab = cor %>% 
      round(2) %>% 
      as.character 
    )

然后绘制第一个对象

p1 <- ggplot() +
  geom_point(
    aes(v1, v2, 
        color = cor, size = abs(cor)),
    data = t1 %>% 
      filter(
        v1_num <= v2_num
        )
    )

enter image description here

这可以按需工作。但是尝试在水平线上绘制标签会改变因子水平

p1 + 
  geom_text(
    aes(v1, v2, label = lab),
    t1 %>% 
      filter(
        v1_num >= v2_num
      )
  )

返回

enter image description here

如何保持随后的geom_的水平?

0 个答案:

没有答案