ggplot中的分层轴?

Mar*_*lla 4 r ggplot2

我想知道是否可以在GGLPOT2(或其他图形包中制作分层/分段轴;我只是喜欢ggplot).

我想要做的是采取以下数据,制作一个堆积条形图,其中包含在x轴上的周期,但在每个周期内,每个动物也是如此.然后每只动物中的条形颜色将是"颜色"变量

set.seed(1234)
data <- data.frame(
    animal = sample(c('bear','tiger','lion'), 50, replace=T),
    color = sample(c('black','brown','orange'), 50, replace=T),
    period = sample(c('first','second','third'), 50, replace=T),
    value = sample(1:100, 50, replace=T))
Run Code Online (Sandbox Code Playgroud)

然后将其放入堆积条形图中:

library(ggplot2)
plot <- ggplot(data, aes(x=period, y=value, fill=color)) + 
    geom_bar(stat='identity')
Run Code Online (Sandbox Code Playgroud)

产生这个:

在此输入图像描述

但我真正想要的是,在每个栏中,每个动物有三个独立的堆叠条(按颜色堆叠).

我有一种感觉,我在这里缺少一个简单的语法,但"显而易见"的东西似乎不起作用,例如,

plot <- ggplot(data, aes(x=c(period,animal), y=value, fill=color)) + 
    geom_bar(stat='identity')
Run Code Online (Sandbox Code Playgroud)

Dav*_*son 6

这样做的两个步骤:

  1. group=animal在情节中添加美感(告诉它按动物分组)

  2. 添加position="dodge"到您的geom_bar图层(告诉它应该是分开的栏)

从而:

ggplot(data, aes(x=period, y=value, fill=color, group=animal, color=animal)) +
        geom_bar(stat="identity", position="dodge")
Run Code Online (Sandbox Code Playgroud)

这看起来像:

在此输入图像描述

这里的一个问题是它没有描述哪种动物是哪种:没有一种特别简单的方法来解决这个问题.这就是为什么我可能会通过刻面来制作这个情节:

ggplot(data, aes(x=animal, y=value, fill=color)) + geom_bar(stat="identity") +
    facet_wrap(~ period)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述