1

我有一些数据,其中包含针对三种不同抗生素的耐药性数据,每种都存储为一列。

Isolate MIC1    MIC2     MIC3
    1   0.008   0.064   0.064
    2   0.016   0.250   0.500
    3   0.064   0.125   32
...

我已经为每种抗生素绘制了条形图,因此:

ggplot(data, aes(factor(MIC1))) + geom_bar()

(这些值是离散的,如 2 - 0.008、0.016、0.032 等的幂 - 绘制因子均匀分布条形,如果有更优雅的方法,请告诉我!)

我真正想做的是拥有一个共享 x 轴的三个图形的多面堆栈。

有没有比像这样重新编码变量更简单的方法来做到这一点:

isolate  antibiotic  MIC
    1        1       0.008
    1        2       0.064
    1        3       0.064
    2        1       0.016
    2        2       0.250
    2        3       0.500
    3        1       0.064
    3        2       0.125
    3        3       32
...

然后这样做?

ggplot(data, aes(factor(MIC))) + geom_bar() + facet_grid(antibiotic ~ .)

提前致谢。

4

1 回答 1

2

重塑你的数据框看起来像你的第二个例子很容易使用reshape2,以至于我不确定它是否真的会变得更容易。这个解决方案有什么具体问题吗?

df = read.table(text="Isolate MIC1    MIC2     MIC3
    1   0.008   0.064   0.064
    2   0.016   0.250   0.500
    3   0.064   0.125   32", header=TRUE)

library(reshape2)
df_melted = melt(df, id.vars="Isolate", variable.name="antibiotic", value.name="MIC")
ggplot(df_melted, aes(factor(MIC))) + geom_bar() + facet_grid(antibiotic ~ .) 
于 2013-09-16T05:19:49.203 回答