0

我无法让 ggplot2 在水平条中显示中断。代码如下:

dat <- data.frame(
    result = c(replicate(50, 'ok'), replicate(17, 'error'), replicate(35, 'notrun')),
    test = 'test',
    count = 'count'
)

ggplot(data=dat, aes(x=test, y=count, fill=result)) +
    geom_bar(stat="identity") +
    scale_fill_manual(values = c(ok = '#00BA38', error='#F8766D', notrun='gray')) +
    xlab("") + ylab("") +
    scale_x_discrete(label="") +
    scale_y_discrete(breaks = c(1, 7, 9)) +
    coord_flip()
4

1 回答 1

2

ggplot如果您遗漏,则自动计数stat=identity。在这种情况下,您也可以将 count 变量排除在外:

dat <- data.frame(
    result = c( replicate(50, 'ok'), replicate(17, 'error'), 
                replicate(35, 'notrun') ),
    test = 'test' )

ggplot(data=dat, aes(x=test, fill=result)) +
geom_bar() + 
coord_flip() + 
scale_fill_manual(values = c(ok = '#00BA38', error='#F8766D', notrun='gray'))

为了澄清,我引用了以下文档geom_bar()

“默认情况下,geom_bar 使用 stat="bin"。这使得每个条形的高度等于每个组中的案例数,并且与将值映射到 y 美学不兼容。如果您希望条形的高度表示数据中的值,使用 stat="identity" 并将值映射到 y 美学。”

所以你所做的是将变量count放在 y 轴上,每行都有相同的字符串值“count”,因此无法以数字比例表示。

在此处输入图像描述

于 2013-09-14T21:43:52.743 回答