簡體   English   中英

R ggplot2 - geom_segment + facet_grid 沒有正確排列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM