Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 简化绘制条形图并使条形图具有相同的宽度_R_Ggplot2 - Fatal编程技术网

R 简化绘制条形图并使条形图具有相同的宽度

R 简化绘制条形图并使条形图具有相同的宽度,r,ggplot2,R,Ggplot2,以下是我的玩具示例: yvalue = c(.1, .2, .3, .2, .1, .2, .3, .1) df = data.frame(yvalue) df$name = c("a", "b", "c", "d", "e", "f", "g", "h") df$type = c("apple", "apple", "apple", "apple", "apple", "banana", "banana", "banana") ggplot(data = df) + geom_bar(aes(

以下是我的玩具示例:

yvalue = c(.1, .2, .3, .2, .1, .2, .3, .1)
df = data.frame(yvalue)
df$name = c("a", "b", "c", "d", "e", "f", "g", "h")
df$type = c("apple", "apple", "apple", "apple", "apple", "banana", "banana", "banana")
ggplot(data = df) + geom_bar(aes(y = yvalue, x=type, fill=name), stat = "identity", position = position_dodge())
以下是结果图表:

这种安排基本上就是我想要的,但我想在这里做三件我不知道该怎么做的事情:

  • 使所有的条颜色相同
  • 删除图例
  • 使所有的钢筋宽度相同
  • 谢谢

    像这样的事情?:

    yvalue = c(.1, .2, .3, .2, .1, .2, .3, .1)
    df = data.frame(yvalue)
    df$name = c("a", "b", "c", "d", "e", "f", "g", "h")
    df$type = c("apple", "apple", "apple", "apple", "apple", "banana", "banana", "banana")
    
    fulldat <- rbind(df, cbind(yvalue=NA,expand.grid(name=df$name,type=df$type)))
    
    ggplot(data = fulldat) + geom_bar(aes(y = yvalue, x=type, fill=name),width=0.5,stat = "identity",position=position_dodge(0.9)) +
      guides(fill=FALSE) + scale_fill_manual(values = rep("red",8))
    
    yvalue=c(.1、.2、.3、.2、.1、.2、.3、.1)
    df=数据帧(yvalue)
    df$name=c(“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”)
    df$type=c(“苹果”、“苹果”、“苹果”、“苹果”、“苹果”、“香蕉”、“香蕉”)
    
    fulldat从定义中删除
    fill
    时,您可以同时删除颜色和图例

    您可以使用以下代码:我使用
    facets
    在图片中保留“type”

    ggplot(data = df) + 
    geom_bar(aes(y = yvalue, x=name), stat = "identity", position = position_dodge()) +
    facet_wrap(~type) +
    theme_classic()
    

    请告诉我这是否是您想要的。

    这在颜色和图例方面都很好,但条的宽度不同:香蕉条比苹果条宽。还有一种方法可以在条形图之间添加一个小的分隔或边框吗?固定几何条形图的宽度是相当棘手的,它将根据每个因素级别内的特征数量来选择宽度。这(创建
    fulldat
    )是一个黑客解决方案,因为您可以更改宽度/位置\u减淡宽度,以增加横杆之间的空间。我将此标记为答案,因为它是有效的,但我最终只是制作了两个不同的条形图,并将它们放在一个图像编辑器中,因为正如你所说的,这是相当粗糙的。这似乎是ggplot不打算做的事情之一。顺便问一下,你能给我解释一件事吗:为什么ggplot要求“fill=name”在那里,然后要求“scale\u fill\u manual()”使所有颜色都相同?当我在我的原始代码中简单地去掉“fill=name”时,我只得到两个巨大的条形图。您需要
    fill=name
    来创建name变量的附加层,该层为名称添加不同的条形图。如果不添加它,则会得到两个blob,这两个blob只是每个
    类型的y值的总和。如果您添加'fill=name',但不添加
    scale\u fill\u manual
    ,您将获得一个可变颜色显示,如示例所示,但将其全部设置为红色,您将获得单一颜色(它需要与df行的nr相同的数量。我同意这是一个解决方法,显然没有办法在因子水平上固定宽度,这很麻烦!你到底想要实现什么?你想用你的图回答什么问题?我认为理解你想对你说什么会更有帮助。)你的图不仅仅是一段代码…@fasttouch:我想要一个条形图,可以直观地将两组或更多的数据分开(这里用苹果和香蕉表示),不是按颜色而是按位置,即使分组的值不相同,条的宽度也相同。这很有趣,但我不希望名称下的空格不重叠。