应用新的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
)
)
这可以按需工作。但是尝试在水平线上绘制标签会改变因子水平
p1 +
geom_text(
aes(v1, v2, label = lab),
t1 %>%
filter(
v1_num >= v2_num
)
)
返回
如何保持随后的geom_
的水平?