5

正如您在下面的数据中看到的,某些刻面变量“items”缺少某些级别的 x 轴变量“type”。例如,“items = 32”没有“type = A”。

我想摆脱与不存在的“类型”相对应的 x 轴上的空白空间(例如,类型 A 用于 32 个项目的情况)。

一些数据(“温度”):

 type   items     value
    A      16       6.3
    B      16       8.3
    C      16       7.9
    B      32       7.7
    C      32       8.3
    C      64       7.9

绘图代码:

library(ggplot2)
ggplot(temp, aes(x = type, y = value, fill = type)) + 
  geom_bar(stat = "identity") + 
  facet_grid( . ~ items)

在此处输入图像描述

========================

编辑:

根据 Joran 的解决方案,设置scales = "free_x"就是做我想做的事。但是,在项目编号 32 和 64 下,条的宽度变得非常大。请帮助我使所有条的宽度均等。

ggplot(temp, aes(x = type, y = value, fill = type)) + 
  geom_bar(stat = "identity") + 
  facet_grid( . ~ items, scales = "free_x")

在此处输入图像描述

4

1 回答 1

5

只需按照joranEtienne Low-Décarie的指示来结束这个未回答的老问题。请为joranEtienne Low-Décarie投票。

另外,请注意上面Roman Luštrik的宝贵评论“我希望你有充分的理由这样做。空白空间非常丰富,它让读者知道这些级别的值是 0(这仍然是一个值)。”

# data
temp <- structure(list(type = structure(c(1L, 2L, 3L, 2L, 3L, 3L), .Label = c("A", 
"B", "C"), class = "factor"), items = c(16L, 16L, 16L, 32L, 32L, 
64L), value = c(6.3, 8.3, 7.9, 7.7, 8.3, 7.9)), .Names = c("type", 
"items", "value"), class = "data.frame", row.names = c(NA, -6L
))

# plot
library(ggplot2)
ggplot(temp, aes(type, value, fill = type)) + 
  geom_bar(stat = "identity") + 
  facet_grid( . ~ items, scales = "free_x", space = "free") 

在此处输入图像描述

于 2013-01-22T18:31:09.917 回答