繁体   English   中英

ggplot:position_dodge结果重叠?

[英]ggplot: position_dodge results in overlap?

我有以下工作流程:

rm(list=ls())

data(mtcars)
attach(mtcars)

library(ggplot2)
library(plyr)
library(dplyr)
library(scales)
library(reshape2)
library(lazyeval)

my_func <- function(x, y) {
  test<<-mtcars %>% group_by_(x, y) %>%
    summarise(Freq = n()) %>% 
    mutate(Freq = Freq/sum(Freq))
  test
  } 
my_func('gear', 'cyl')

ggplot(test, aes(x=gear, y=Freq))+
  geom_bar(stat="identity", aes(fill=cyl), position=position_dodge(width=0.1))+
  scale_y_continuous(labels=percent_format(), limits = c(0,1))

但是,生成的图并没有显示彼此相邻的条,而是一些条彼此重叠。 有什么用,我该如何解决?

您需要将cyl列转换为factor。

test$cyl <- as.factor(test$cyl)
ggplot(test, aes(x=gear, y=Freq))+
       geom_bar(stat="identity", aes(fill=cyl), position=position_dodge(width=1))+
       scale_y_continuous(labels=percent_format(), limits = c(0,1))

在此处输入图片说明

暂无
暂无

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

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