【问题标题】:How can I plot multiple variables side-by-side in a dotplot in R?如何在 R 的点图中并排绘制多个变量?
【发布时间】:2013-02-10 23:33:41
【问题描述】:

我对 R 还是很陌生,遇到了一个我无法找到答案的绘图问题。

我有一个看起来像这样的数据框(虽然要大得多):

df <- data.frame(Treatment= rep(c("A", "B", "C"), each = 6),
                 LocA=sample(1:100, 18), 
                 LocB=sample(1:100, 18), 
                 LocC=sample(1:100, 18))

我想要在 Excel 中生成看起来像 this one 的点图。这正是我想要的格式:每个位置的每个治疗并排的点图,多个位置的数据一起显示在一个图表上。 (非常抱歉无法在此处发布图片;发布图片需要 10 声望。)

为每个位置绘制一个图是没有问题的,用颜色编码的点,等等:

ggplot(data = df, aes(x=Treatment, y=LocA, color = Treatment)) + geom_point() 

但我不知道如何将位置 B 和 C 添加到同一个图表中。

任何建议将不胜感激!

【问题讨论】:

  • 将数据重新整形为长格式,然后对绘图进行刻面。

标签: r plot ggplot2


【解决方案1】:

正如一些人所提到的,您需要“融合”数据,将其变成“长”形式。

library(reshape2)
df_melted <- melt(df, id.vars=c("Treatment"))
colnames(df_melted)[2] <- "Location"

在 ggplot 行话中,通过“躲避”实现不同组的并行处理。通常对于像条形图这样的东西,你可以说 position="dodge"geom_point 似乎需要更多的手动规范:

ggplot(data=df_melted, aes(x=Location, y=value, color=Treatment)) +
  geom_point(position=position_dodge(width=0.3))

【讨论】:

  • 无需手动躲避,只需在对geom_point 的调用中使用position_dodge。例如DF &lt;- melt(df, id.var = 'treatment');ggplot(DF, aes(y=value,x=variable)) + geom_point(aes(colour = Treatment), position = position_dodge(width = 1))
  • 该死,position="dodge" 不起作用,所以我认为没有为点数实施闪避。现在编辑我的答案。
  • 谢谢!这正是我所寻求的。坦率地说,我宁愿使用箱线图,但我的老板相信点图更好,因为她喜欢看到点簇并看到异常值(是的,我知道所有信息都存在于箱线图中,不,我无法解释为什么看到各个点会“更好”,除非我遇到真正花哨的东西,例如尝试给每个人[原始数据框中的行]一个特定的符号,在这种情况下,您可以尝试查看是否有一个这在各个位置始终很高)。
【解决方案2】:

您需要重塑数据。这里是一个使用reshape2的例子

library(reshape2)
dat.m <- melt(dat, id.vars='Treatment')
library(ggplot2)
ggplot(data = dat.m, 
        aes(x=Treatment, y=value,shape = Treatment,color=Treatment)) + 
                  geom_point()+facet_grid(~variable)

既然你想要一个dotplot,我也建议一个格子解决方案。我认为在这种情况下更合适。

dotplot(value~Treatment|variable,
        groups = Treatment, data=dat.m,
        pch=c(25,19),
        par.strip.text=list(cex=3),
        cex=2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多