R 避免重新排序和分组重复的x值ggplot(几何点)

R 避免重新排序和分组重复的x值ggplot(几何点),r,ggplot2,graphics,R,Ggplot2,Graphics,我试图用ggplot绘制以下数据帧。此数据框包含来自13个独立聚类的前10名得分的有序摘要(10x13=130个总观察值) 要获得这样的图形(通过使用一个相当难看的代码使用基本图形函数生成): 我遇到的问题是,ggplot对数据进行分组和重新排序,而不是保持原始顺序。我怎样才能阻止这种行为 另一方面,是否有更好的方法构建此数据框架,以便更好地使用ggplot?我想可视化所有集群的前10名分数,它们在视觉上是分开的,但并排排列(如我上面所附的图片)。我的最终目标是使我的代码具有可扩展性,以便它能

我试图用ggplot绘制以下数据帧。此数据框包含来自13个独立聚类的前10名得分的有序摘要(10x13=130个总观察值)

要获得这样的图形(通过使用一个相当难看的代码使用基本图形函数生成):

我遇到的问题是,ggplot对数据进行分组和重新排序,而不是保持原始顺序。我怎样才能阻止这种行为


另一方面,是否有更好的方法构建此数据框架,以便更好地使用ggplot?我想可视化所有集群的前10名分数,它们在视觉上是分开的,但并排排列(如我上面所附的图片)。我的最终目标是使我的代码具有可扩展性,以便它能够与不同数量的开始
集群
(即18个集群,而这里是13个集群)和
最高分数
(即排名前5位,而这里是排名前10位)只需最少的代码重写,就可以达到同样的数量。

这有点棘手,因为在不同的组中有重复的标签,因此将x轴标签转换为因子的标准建议还不够。在合并cell.type和group id之前,我复制了cell.type,用它绘制图形,然后切换标签。我用刻面来显示标签

图表需要很大才能工作

library("tidyverse")
df2 <- df %>% mutate(id =  rep(1:13, each = 10),
              Cell.Type.label = Cell.Type,
              Cell.Type = paste(Cell.Type, id, sep = "_"),
              Cell.Type = factor(Cell.Type, levels = Cell.Type)) 
df2 %>%
  ggplot(aes(x = Cell.Type, y = Score, colour = as.factor(id))) +
  geom_point(show.legend = FALSE) + 
  facet_wrap(~id, nrow = 1, scales = "free_x") +
  scale_x_discrete(labels = df2$Cell.Type.label) +
  theme(panel.spacing = unit(x = 0, units = "pt"),
        axis.text.x = element_text(angle = 90, hjust = 1, size = 4))
库(“tidyverse”)
df2%突变(id=rep(1:13,每个=10),
Cell.Type.label=Cell.Type,
Cell.Type=粘贴(Cell.Type,id,sep=“\ux”),
Cell.Type=因子(Cell.Type,levels=Cell.Type))
df2%>%
ggplot(aes(x=单元格类型,y=分数,颜色=as.因子(id)))+
几何点(show.legend=FALSE)+
镶嵌面包裹(~id,nrow=1,scales=“free_x”)+
缩放x离散(标签=df2$Cell.Type.label)+
主题(panel.spating=unit(x=0,units=“pt”),
axis.text.x=元素\文本(角度=90,大小=1,大小=4))
资料


df组在数据中是如何编码的?这里没有硬编码。我只知道每10个数据点属于一个集群。我需要想出一种优雅的方法来对集群进行编码。但是我认为我关于ggplot的问题仍然是相关的,不管集群id的编码是什么,对吗?ggplot将需要硬编码集群id。可以添加rep(1:13,每个=10)作为新的列谢谢你的代码。我有两个主要的担忧:1)绘制点之间有很大的差距,因为我认为所有的细胞群都是用彩色点之间的空白数据点绘制的。2) 这似乎是一个相当大的代码块。我担心每次我想分析来自不同实验的不同数据集时都很难编写。您有没有建议如何重新构造数据帧,以便我们可以缩减所需的代码?感谢第一个问题应该通过编辑解决。第二个问题可以通过将绘图指定给对象
g
,然后运行
g%+%df3
或将代码生成函数来解决
library("tidyverse")
df2 <- df %>% mutate(id =  rep(1:13, each = 10),
              Cell.Type.label = Cell.Type,
              Cell.Type = paste(Cell.Type, id, sep = "_"),
              Cell.Type = factor(Cell.Type, levels = Cell.Type)) 
df2 %>%
  ggplot(aes(x = Cell.Type, y = Score, colour = as.factor(id))) +
  geom_point(show.legend = FALSE) + 
  facet_wrap(~id, nrow = 1, scales = "free_x") +
  scale_x_discrete(labels = df2$Cell.Type.label) +
  theme(panel.spacing = unit(x = 0, units = "pt"),
        axis.text.x = element_text(angle = 90, hjust = 1, size = 4))
df <- structure(list(Cell.Type = c("GN_Thio_PC", "GN_UrAc_PC", "Mo_6C+II-_Bl", 
"GN_Arth_SynF", "Mo_6C+II+_Bl", "GN_Bl", "MF_Thio5_II-480int_PC", 
"MF_Thio5_II+480int_PC", "MF_RP_Sp", "GN_BM", "T_8Mem_Sp", "NK_b2m-_Sp", 
"NK_DAP10-_Sp", "T_8Nve_Sp_OT1", "T_8Mem_Sp_OT1_d100_LisOva", 
"NK_49H+_Sp", "NK_DAP12-_Sp", "T_8Eff_Sp_OT1_d10_LisOva", "NKT_4+_Lv", 
"T_8Nve_LN", "DC_8+_Th", "DC_8+_SLN", "DC_8-_Th", "DC_103+11b-_Lu", 
"B_GC_Sp", "DC_8+_MLN", "DC_8+_Sp_ST", "SC_MEP_BM", "DC_8-4-11b-_Sp", 
"DC_103+11b-_Lv", "T_8Mem_Sp", "T_8Nve_Sp_OT1", "T_8Nve_LN", 
"T_8Nve_MLN", "T_4Nve_LN", "T_8Nve_PP", "T_8Nve_Sp", "T_4Nve_PP", 
"T_4Nve_MLN", "T_4FP3-_Sp", "MF_Thio5_II-480int_PC", "MF_Thio5_II-480hi_PC", 
"MF_PPAR-_Lu", "MF_Thio5_II+480int_PC", "MF_Lu", "MF_II-480hi_PC", 
"MF_Thio5_II+480lo_PC", "GN_Thio_PC", "MF_Microglia_CNS", "MF_II+480lo_PC", 
"Mo_6C+II-_Bl", "Mo_6C-II-_Bl", "Mo_6C-IIint_Bl", "GN_Bl", "GN_UrAc_PC", 
"Mo_6C+II+_Bl", "GN_BM", "GN_Thio_PC", "GN_Arth_BM", "GN_Arth_SynF", 
"T_8Eff_Sp_OT1_48hr_LisOva", "T_8Eff_Sp_OT1_24hr_LisOva", "T_8Mem_Sp", 
"T_ISP_Th", "T_8Eff_Sp_OT1_12hr_LisOva", "T_8Eff_Sp_OT1_d5_VSVOva", 
"T_8Nve_Sp_OT1", "T_8Eff_Sp_OT1_d6_LisOva", "Tgd_vg3+24alo_e17_Th", 
"T_8SP24-_Th", "MF_Thio5_II-480int_PC", "MF_Thio5_II-480hi_PC", 
"MF_Thio5_II+480int_PC", "MF_II-480hi_PC", "MF_RP_Sp", "MF_Microglia_CNS", 
"MF_PPAR-_Lu", "Fi_Sk", "MF_II+480lo_PC", "MF_Thio5_II+480lo_PC", 
"GN_Thio_PC", "GN_UrAc_PC", "Mo_6C+II-_Bl", "GN_Arth_SynF", "GN_Bl", 
"Mo_6C+II+_Bl", "GN_BM", "Mo_6C-II-_Bl", "Mo_6C-IIint_Bl", "GN_Arth_BM", 
"GN_Arth_SynF", "GN_Thio_PC", "GN_UrAc_PC", "MF_Thio5_II-480hi_PC", 
"GN_Bl", "MF_Thio5_II-480int_PC", "Fi_Sk", "Fi_MTS15+_Th", "MF_Microglia_CNS", 
"MF_RP_Sp", "T_8Eff_Sp_OT1_48hr_LisOva", "T_ISP_Th", "T_DPbl_Th", 
"preT_DN3B_Th", "preT_DN3-4_Th", "T_DN4_Th", "SC_MEP_BM", "T_8Eff_Sp_OT1_d5_VSVOva", 
"Tgd_vg3+24alo_e17_Th", "Tgd_vg5+24ahi_Th", "DC_IIhilang+103+11blo_SLN", 
"DC_IIhilang+103-11b+_SLN", "DC_IIhilang-103-11blo_SLN", "DC_IIhilang-103-11b+_SLN", 
"DC_8-4-11b-_MLN", "DC_8-4-11b+_MLN", "DC_8-4-11b+_SLN", "Ep_MEChi_Th", 
"DC_8-4-11b-_SLN", "DC_8+_MLN", "DC_pDC_8+_SLN", "DC_pDC_8+_Sp", 
"DC_pDC_8+_MLN", "DC_pDC_8-_Sp", "B_T1_Sp", "B_T2_Sp", "B_Fo_Sp", 
"B_T3_Sp", "B_Fo_MLN", "B_Fo_PC"), Score = c(2677.80617009519, 
2637.41032364779, 2556.92913594902, 2391.45433001888, 2315.52547519278, 
2304.98201202492, 2285.71825571867, 2248.11270401521, 2224.65822294734, 
2069.57828218951, 3650.92933141558, 3623.07526981183, 3568.82957776803, 
3535.57114525684, 3532.02217747173, 3519.49779859704, 3500.5532642101, 
3448.56816636704, 3445.33162798595, 3442.41228249856, 1384.56532273906, 
1333.48389922898, 1329.54597466529, 1293.2048614532, 1291.13567921318, 
1266.18747131352, 1251.44702553637, 1229.9373063931, 1204.49733058435, 
1196.79647629317, 4888.53608836612, 4844.62387372193, 4803.08591833927, 
4801.60498804064, 4704.34332374882, 4680.54098917638, 4668.51868809073, 
4654.6363768553, 4644.53632493487, 4643.81716614074, 2104.44279848771, 
2051.91548567208, 1971.01987723135, 1968.1818651747, 1941.36173402858, 
1821.13874693704, 1787.05712946341, 1728.7523034795, 1711.6599582643, 
1711.26332938833, 2962.12603781126, 2758.18375042302, 2638.16680094079, 
2620.07541962536, 2537.2896087047, 2435.36956544536, 2387.13935841906, 
2337.29884997719, 2311.2451915426, 2128.725307006, 3285.38489328741, 
3069.01874851731, 3022.56013472619, 2983.45678085374, 2964.79056150505, 
2950.29516615634, 2893.7887214778, 2891.41381948125, 2875.40895460188, 
2858.05344865649, 2783.70950776927, 2737.88858084566, 2708.73493567958, 
2377.99196863673, 2281.78751440853, 2145.29897799, 2089.46703313723, 
2077.00426240616, 2070.33177217184, 2049.00134439134, 3158.65427762739, 
2993.45396316058, 2807.36027869234, 2783.56931762011, 2666.31559591767, 
2472.0977029947, 2422.62741443588, 2309.43925461481, 2238.0777055497, 
2215.70702972594, 3027.3451404511, 2939.74912223882, 2694.04395500259, 
2507.39045396954, 2407.18406139123, 2380.65584862485, 2211.83581518875, 
2209.41411415371, 2149.92996548155, 2111.76895702472, 4316.4227070348, 
4280.25335061696, 4102.01504953757, 3910.32665898991, 3907.5798288054, 
3840.18882533614, 3780.57141700037, 3757.01659494412, 3685.84648926922, 
3616.99224871103, 4519.50952669406, 4415.97080261725, 4170.40873917108, 
3963.46358118485, 3631.2974118135, 3386.67029828899, 3026.47679955977, 
2844.36034968535, 2835.94178377956, 2183.62863550565, 3785.05815189249, 
3767.7193092587, 3758.58340817543, 3747.60526193027, 2325.20093650829, 
2316.21996448563, 2253.78988549461, 2225.2075463753, 2159.05742315915, 
2142.51258891406)), .Names = c("Cell.Type", "Score"), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", 
"25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", 
"36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", 
"47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", 
"58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", 
"69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", 
"80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", 
"91", "92", "93", "94", "95", "96", "97", "98", "99", "100", 
"101", "102", "103", "104", "105", "106", "107", "108", "109", 
"110", "111", "112", "113", "114", "115", "116", "117", "118", 
"119", "120", "121", "122", "123", "124", "125", "126", "127", 
"128", "129", "130"))