繁体   English   中英

R-ggplot2 geom_line闪避

[英]R - ggplot2 geom_line dodge

我在“闪避”的stacked bars上绘制“闪避” line时遇到麻烦。

dt = mtcars %>% group_by(am, cyl) %>% summarise(m = mean(disp))
dt0 = dt[dt$am == 0, ]
dt1 = dt[dt$am == 1, ]

dt0 %>% ggplot(aes(factor(cyl), m, fill = factor(cyl))) + geom_bar(stat = 'identity', position = 'dodge') +
  geom_point(data = dt1, aes(factor(cyl), m, colour = factor(cyl)), position=position_dodge(width=0.9), colour = 'black') 

在此处输入图片说明

我想是从叠置条到每个黑的顶部画一条线cyl

dt0 %>% ggplot(aes(factor(cyl), m, fill = factor(cyl))) + geom_bar(stat = 'identity', position = 'dodge') +
  geom_point(data = dt1, aes(factor(cyl), m, colour = factor(cyl)), position=position_dodge(width=0.9), colour = 'black') + 
  geom_line(data = dt1, aes(factor(cyl), m, colour = factor(cyl), group = 1), position=position_dodge(width=0.9), colour = 'black')  

但是, position=position_dodge(width=0.9)躲避在这里不起作用。

任何想法 ?

如果您调整汇总数据的形状,这将更容易实现:

dt <- mtcars %>% 
    group_by(am, cyl) %>% 
    summarise(m = mean(disp)) %>% 
    spread(am, m)

    cyl        0        1
* <dbl>    <dbl>    <dbl>
1     4 135.8667  93.6125
2     6 204.5500 155.0000
3     8 357.6167 326.0000

尽管“ 0”和“ 1”是较差的列名,但是如果在反引号中引用它们,它们仍然可以在aes()使用。 position_dodge()的调用也变得不必要:

dt %>% ggplot(aes(x = factor(cyl), y = `0`, fill = factor(cyl))) + 
    geom_bar(stat = 'identity') +
    geom_point(aes(x = factor(cyl), y = `1`), colour = 'black') +
    geom_segment(aes(x = factor(cyl), xend = factor(cyl), y = `0`, yend = `1`))

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM