![](/img/trans.png)
[英]How to show only available geom_segment values in a facet_grid() in ggplot?
[英]R ggplot2 - geom_segment + facet_grid does not line up correctly
添加 facet_grid 時,我似乎無法讓 geom_segement 匹配
library(tidyverse)
library(plotly)
#create data frame in long format
df <- mtcars %>% rownames_to_column(var = "car") %>%
select(car, mpg, disp, cyl) %>%
mutate(car = as.factor(car)) %>%
pivot_longer(cols = c(mpg, disp)) %>%
rowwise() %>%
mutate(target = runif(1, value*.8, value*1.2))
#create ggplot
ggplot(df) +
scale_x_discrete() +
geom_col(aes(x = car, y = value)) +
geom_segment(
aes(
x = as.numeric(car)-.25,
xend = as.numeric(car)+.25,
y = target,
yend = target
),
linetype = 'dotted',
color = 'black'
) +
facet_grid(
rows = vars(cyl),
cols = vars(name),
scales = "free",
space = "free_y"
) +
coord_flip()
正如您在下面看到的,我用 geom_segement 創建的“參考線”不正確,它們應該在 geom_col()
如果您使用scales = "free_x"
而不是scales = "free"
,它似乎有效:
另請參閱在 ggplot2 中,coord_flip 和自由刻度不能一起工作。
library(ggplot2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(tibble)
library(tidyr)
#create data frame in long format
df <- mtcars %>% rownames_to_column(var = "car") %>%
select(car, mpg, disp, cyl) %>%
mutate(car = as.factor(car)) %>%
pivot_longer(cols = c(mpg, disp)) %>%
rowwise() %>%
mutate(target = runif(1, value*.8, value*1.2))
#create ggplot
ggplot(df) +
# scale_x_discrete() +
geom_col(aes(x = car, y = value)) +
geom_segment(
aes(
x = as.numeric(car)-.25,
xend = as.numeric(car)+.25,
y = target,
yend = target
),
linetype = 'dotted',
color = 'black'
) +
facet_grid(
rows = vars(cyl),
cols = vars(name),
scales = "free_x",
space = "free_y"
) +
coord_flip()
由reprex package (v0.3.0) 創建於 2020 年 6 月 4 日
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.