ggplot2:使用geom_pointrange()和coord_flip()以向量和单独的组(例如,使用facet_wrap)指定的顺序显示间隔

时间:2016-01-31 05:35:01

标签: r ggplot2 match facet-wrap

我一直在努力创建一个包含" N1"," NON-N1"按特定顺序分组。我的数据包含名为" A"," N1"," NON-N1"," Comb"的不同群组,我试图展示首先是所有被叫" A"的组,然后是" N1"," NON-N1"按照特定的顺序,最后该组名为" Comb"。我想展示" N1"与(在...之上)" NON-N1"在所有的比较中,但我已经尝试过的一切都失败了。 我也希望使用facet_wrap分离这些组,但似乎该函数不适用于coord_flip()。但这甚至是次要的,因为我甚至无法解决我的第一个问题。我可以重新排序数据框,但ggplot不遵守。请帮我理解如何解决这个问题。谢谢!

library(ggplot2)

df = structure(list(CI1 = c(-3.2, -2, -2.1, -4.4, -2.0, -2.0, -4.4, -2.0, -4.6, -4.6, -0.5, 2.3, 2.0, -2.0, 1.2, 0.01, 2.0), OR = c(-2.2, 2, -2.1, -2.4, 0.04, 0.004, -2.4, 0.26, -2.6, -2.6, 0.24, 2.4, 2.5, 0.02, 1.5, 0.15, 2.4), CI2 = c(4.34247, 5.05772, 4.96875, 5.26578, 1.91331, 1.87162, 3.78027, 4.55967, 4.07937, 4.50965, 3.54538, 3.97742, 3.5491, 2.41067, 2.73239, 2.3767, 3.55664), Label = structure(1:17, .Label = c("N1_A", "NON-N1_A", "N1_B", "NON-N1_B", "N1_C", "NON-N1_C", "N1_D", "NON-N1_H", "N1_H", "NON-N1_D", "N1_E", "NON-N1_E", "N1_F", "NON-N1_F", "N1_G", "NON-N1_G", "Comb"), class = "factor"), group = c("N1", "NON-N1", "N1", "NON-N1", "N1", "NON-N1", "N1", "NON-N1", "N1", "NON-N1", "N1", "NON-N1", "N1", "NON-N1", "A", "A", "Comb")), .Names = c("CI1", "OR", "CI2", "Label", "group"), class = "data.frame", row.names = c(12L, 4L, 8L, 11L, 10L, 13L, 9L, 5L, 6L, 7L, 3L, 2L, 1L, 14L, 17L, 16L, 18L))

# order wanted using the column "Label":
ordered.names = c("N1_G", "NON-N1_G", "N1_C", "NON-N1_C", "N1_F", "NON-N1_F", "N1_A", "NON-N1_A","N1_B", "NON-N1_B","N1_H", "NON-N1_H","N1_D", "NON-N1_D","N1_E", "NON-N1_E", "Comb")

df$group = factor(df$group, levels =c("A", "N1", "NON-N1", "Comb"))
# df <- transform(df, category2 = factor(Label))
df$Label = factor(df$Label, levels=ordered.names)
# df = df[order(df$Label),]
# df$Label <- factor(rev(df$Label), levels=rev(levels(df$Label)))

ggplot(df, aes(x=Label, y=OR, ymin=CI1, ymax=CI2, group=group, color=group)) + geom_pointrange() + coord_flip() 
# + facet_wrap(~group, scale="free_x")

1 个答案:

答案 0 :(得分:1)

假设您的问题是:如何从上到下按特定顺序(A,N1,NON-N1,梳子)绘制组。

首先,有用的链接:

  • 如何通过Kohske [link]
  • 在ggplot2中订购因子变量
  • 按两列[link]
  • 订购数据框

以下方法使用这两个链接。首先根据然后标签对您的数据进行重新排序(按降序排列,因为您希望标签以相反的顺序显示(即在{{之后从上到下) 1}})。其次,根据数据框中的外观对新因子 Label2 进行排序。

coord_flip()

Reorder factors in reverse order