Reputation: 406
I have a dataset with multiple variables and wish to plot them on one graph as one series so that I can plot a "trendline" through the datapoints. However, it's important that the order is the same as the row names in the original dataframe.
I can plot the points as so:
d <- melt(phy.ordered, id.vars = "Species")
plot <- ggplot(d)+
geom_point(aes(x = Species, y = value))+
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.2))+
theme(axis.title.x = element_blank())+
ylab("PC value")
However, the x-axis labels are reordered alphabetically. I know that usually, you would set "Species" as a factor to maintain the desired order in a ggplot similarly to the code below:
d$Species = factor(d$Species, levels=d[order(d$value), "Species"])
However, I get this error:
Error in
levels<-
(*tmp*
, value = as.character(levels)) : factor level [14] is duplicated
I know this is because the species names have been duplicated through the melt()
function but I'm not sure how to get around this.
Any ideas would be greatly appreciated!
Many thanks,
Carolina
Data for phy.ordered as below:
dput(phy.ordered)
structure(list(PC1 = c(0.103177778, 0.095766667, 0.137214286,
0.0902, 0.167, -0.016138, -0.0027375, 0.066788889, -0.006506,
0.002757, -0.028392, -0.05718, -0.045833333, -0.0487, -0.072,
0.027344, 0.0806, 0.03305, -0.0943, 0.178333333, 0.0455, -0.08985,
-0.15, -0.19, -0.128766667, 0.0292, -0.0435, -0.075, -0.03627,
0.0501, -0.0094, 0.0447, 0.000533333, -0.0281, -0.029, 0.01537,
-0.0793, -0.04655, -0.111, -0.0789, 0.08325, -0.007165, -0.0351,
-0.068283333, 0.0277, -0.0984, 0.037333333, -0.113, -0.131, -0.2025,
-0.188, -0.174, -0.13, -0.1671, -0.246, -0.0792, 0.043133333,
0.01435, 0.0288, 0.0824, -0.12215, -0.0403, 0.0129, -0.118, -0.143533333,
0.097855556, 0.194444444), PC2 = c(-0.040322222, -0.0412, -0.0495,
-0.0479, 0.075, -0.04702, -0.02917375, -0.032052222, -0.02674,
-0.026715, -0.026531, 0.10001, 0.093033333, -0.007813333, 0.0404,
0.05916, 0.0794, 0.0957, -0.0558, -0.078333333, -0.0794, -0.05465,
-0.07045, -0.0679, -0.020106667, -0.0216, 0.0247, -0.0375, 0.032366667,
-0.035933333, -0.0508, -0.00662, 0.0136, -0.0209, -0.0577, -0.0202,
-0.00904, 0.0216, 0.0259, -0.00829, 0.00585, 0.00020525, 0.01526,
-0.048766667, 0.021, -0.033953333, -0.004156667, 0.00259, 0.0392,
-0.0132495, 0.00545, 0.023, 0.016, 0.04956525, 0.0403, 0.023705,
0.032523333, 0.00933, -0.0443, 0.0448, 0.0487, 0.0117, 0.053,
-0.0192, -0.001199, 0.064275622, 0.041355556), PC3 = c(0.00168,
0.023096667, -0.05385, -0.0315, 0.040333333, -0.02653, -0.00602125,
-0.007182222, 0.028124, 0.000217, 0.0123781, -0.020345, -0.03525,
-0.018033333, 0.00508, 0.02286, -0.00618, -0.002525, -0.0469,
-0.006076, -0.0161, -0.00318, -0.0565, -0.0584, 0.00302, 0.0362,
0.0406, -0.0208, 0.0415, 0.029166667, 0.0136, 0.04955, 0.015966667,
0.0323, 0.017, 0.007575, -0.0397, -0.0159815, -0.0023, -0.0253,
-0.03445, -0.036, -0.0295, 0.046866667, 0.0799, 0.051666667,
0.106666667, 0.0179, 0.068533333, -0.02607, -0.019405, -0.0104,
-0.0003, -0.014995, -0.0022, 0.03935, 0.023833333, 0.1075, 0.0776,
0.114, 0.03585, 0.0244, -0.0264, 0.00289, -0.1151, 0.007373333,
-0.060844444), PC4 = c(-0.001785556, -0.011816667, -0.018070857,
-0.0234, 0.0435, 0.002221, 0.0214075, 0.003141111, 0.0001114,
0.0206165, 0.018427, -0.0828, -0.082966667, -0.010013333, -0.0157,
0.04328, 0.0495, 0.04315, -0.00971, -0.03555, -0.00704, -0.01385,
0.00155, -0.000635, 0.01858, 0.00918, -0.0212, -0.0201, -0.000156667,
-0.023066667, -0.0351, -0.02475, -0.011996667, -0.0292, 0.00208,
-0.02375, 0.0258, 0.0002, 0.002205, 0.00793, -0.018225, -0.0070525,
0.00972, -0.0085195, -0.00672, -0.011816667, -0.01003, 0.00715,
-0.021766667, -0.004495, 0.0331, 0.0137, 0.02461, 0.0568, -0.000358,
0.02466, 0.020743333, -0.02005, -0.0577, -0.0291, 0.04275, 0.0403,
0.0273, -0.00841, 0.0076, 0.02054, 0.013664444), PC5 = c(0.00694,
-0.016036667, -0.027458571, 0.0169, 0.014523333, 0.016687, 0.01161,
0.024316667, -0.004624, -0.0088794, 0.003454, 0.002985, 0.002066667,
-0.009193333, -0.00666, -0.04456, -0.0484, -0.03905, 0.0182,
-0.026933333, 0.0111, 0.0195, 0.012075, 0.0318, -0.019, -0.019,
-0.0441, 0.00338, -0.031586667, -0.029666667, -0.00253, -0.02985,
-0.0334, -0.0264, -0.00638, -0.03255, -0.00583, -0.01131, -0.02065,
-0.0194, -0.00838, -0.011855, -0.0306, 0.014996667, -0.0191,
0.013256667, -0.01445, -0.0151, 0.012756667, 0.0336, 0.02775,
0.043, 0.004785, -0.005602, 0.0484, 0.00844, -0.0222, 0.012165,
-0.00214, 0.000961, 0.0137, 0.0058, -0.0552, 0.0107, -0.00038,
0.030046667, 0.030291111), PC6 = c(0.006093333, -0.00318, 0.017762571,
0.0161, -0.015833333, 0.0014685, -0.0017975, 0.009891111, 0.012803,
0.0014199, 0.00312, 0.007694, -0.002874333, -0.0358, -0.0227,
-0.03414, -0.0585, -0.03095, -0.0118, 0.021503333, -0.0018, -0.0158,
-0.00828, -0.0109, -0.016133333, -0.0218, -0.0303, 0.000553,
-0.020446667, -0.0251, -0.00564, -0.02485, -0.019573333, -0.00815,
0.0135, -0.00041, -0.016, -0.007223, 0.00412, -0.0141, -0.0237,
-0.0156, -0.02225, 0.023816667, -0.00815, 0.00822, -0.002072,
-0.00447, 0.00175, -0.002625, -0.007925, 0.0256, 0.02065, 0.0211225,
0.0262, 0.00665, 0.01939, 0.03755, 0.00259, 0.0426, 0.0426, 0.0171,
-0.0434, -0.00834, -0.0366, 0.005523333, 0.007584444), PC7 = c(0.019536333,
0.002223333, -0.00846, -0.0216, 0.015363333, -0.001878, 0.02206125,
0.000753333, 0.0001688, 0.001592, -0.0001201, 0.011088, 0.010856667,
0.009986667, -0.00116, -0.02292, 0.0000955, -0.02335, -0.015,
-0.002966667, -0.00111, 0.0107, -0.00784, -0.0372, -0.015866667,
-0.03, -0.0161, 0.0103, -0.01669, 0.01423, 0.00336, 0.010105,
0.007366667, -0.0114, -0.000213, -0.00225, 0.035, 0.00489, 0.000085,
0.0082, 0.006495, 0.0083225, 0.00716, -0.020678333, -0.00391,
-0.017336667, -0.0242, -0.00151, 0.004376667, -0.00448, 0.0199,
0.016, -0.007564, -0.0013775, -0.0142, 0.037, -0.00858, 0.00174,
-0.00439, 0.0132, 0.00175, 0.0182, 0.00763, 0.0336, -0.023523333,
-0.008303333, -0.009307778), PC8 = c(-0.005500333, 0.013733333,
-0.01977, -0.0274, 0.012356667, -0.006477, 0.00912425, 0.015116889,
0.014534, 0.010916, 0.01088, 0.0004592, 0.021876667, -0.003247067,
-0.00592, -0.0094268, -0.0273, -0.01372, -0.00924, -0.021333333,
0.0198, -0.00172, -0.000875, 0.00378, 0.003566667, 0.00211, -0.00806,
-0.0135, -0.003136667, 0.00837, 0.0328, 0.004945, 0.012146667,
0.0208, -0.0349, 0.0039255, -0.00837, 0.00319, 0.004035, 0.00172,
-0.00875, 0.0015975, 0.006915, -0.011686667, -0.00588, -0.0192,
-0.015333333, 0.00457, -0.00003, 0.005188, 0.0005485, 0.0151,
0.01025, 0.000625, 0.00917, -0.02005, 0.003376667, -0.02625,
-0.0369, -0.0275, -0.00338, 0.0112, 0.015, -0.0218, -0.022766667,
0.000175556, 0.005126778), PC9 = c(-0.010337778, 0.0000156667,
0.009385714, -0.0169, 0.008529333, -0.0041977, 0.0077425, -0.0000722222,
0.005142, -0.003088, 0.0010387, 0.0054127, 0.000146667, 0.004686667,
0.0211, 0.0046926, -0.00222, -0.0049, -0.000798, -0.009706667,
0.00452, 0.00817, 0.01685, 0.0181, -0.00169, -0.0058, -0.00843,
-0.0114, -0.00808, -0.004246667, 0.0156, 0.005555, -0.008983333,
-0.0173, -0.0198, -0.00698, -0.00934, -0.01945, -0.013785, -0.0156,
-0.01935, -0.0163275, -0.01415, 0.006148333, -0.00326, 0.009326667,
-0.00494, -0.00681, 0.00136, 0.001652, 0.005445, -0.00154, 0.00851,
0.009945, -0.00532, 0.008855, -0.005266667, 0.01376, 0.013, -0.0396,
0.007825, 0.0214, -0.0111, 0.00385, -0.006283333, 0.00932, -0.001477778
), PC10 = c(-0.002013333, -0.000474333, -0.007381571, -0.00346,
0.016733333, -0.001914, -0.006365375, -0.002538489, -0.007298,
0.0005414, -0.0012003, -0.00008, -0.019166667, 0.019143333, 0.0131,
0.00161, 0.00129, -0.00907, 0.000743, -0.016566667, 0.00236,
0.01131, 0.01075, 0.0207, 0.005730333, 0.00325, 0.00986, 0.00918,
0.003451333, 0.005816667, 0.0122, 0.0081, 0.01709, 0.0208, -0.00153,
0.00316, -0.0109, 0.0016245, 0.00623, -0.00347, -0.019405, -0.00156,
0.006855, 0.005935, -0.00976, 0.007986667, -0.002076667, -0.00558,
-0.012733333, 0.0179, 0.005205, 0.00894, -0.0069, -0.0309, 0.0137,
-0.001095, -0.008856667, 0.0084, 0.014, -0.00362, -0.00584, -0.0103,
-0.0223, 0.00557, -0.005226667, 0.005820556, 0.007604444), PC11 = c(-0.001696778,
0.001516333, 0.008685714, 0.00902, 0.01236, -0.001538, 0.00383325,
-0.001554444, -0.0015082, 0.0071564, 0.010997, 0.006699, 0.016406667,
-0.022466667, -0.0199, 0.004487, 0.0121, -0.0027085, -0.0132,
-0.001876667, 0.0142, 0.00721, -0.00186, 0.00811, 0.00317, -0.0127,
-0.00635, -0.00739, -0.002926667, -0.00243, 0.00432, -0.011785,
0.001596667, -0.00629, 0.00633, -0.013565, -0.0166, -0.0138,
-0.00957, -0.00549, -0.002685, -0.00872, -0.00974, 0.008774,
-0.0142, 0.013653333, -0.00163, -0.0137, -0.010796667, -0.005205,
-0.005035, -0.00695, -0.0116, -0.015395, -0.015, 0.0120185, 0.0128,
-0.004774, -0.0217, -0.018, -0.00779, -0.002, -0.00118, 0.0135,
0.0041804, 0.003305556, -0.010273333), Species = c("Alectoris_rufa",
"Alectoris_graeca", "Perdix_perdix", "Perdix_dauurica", "Lagopus_lagopus",
"Tadorna_tadorna", "Aix_sponsa", "Mergus_merganser", "Bucephala_islandica",
"Anas_crecca", "Anas_clypeata", "Apus_apus", "Tachymarptis_melba",
"Caprimulgus_europaeus", "Caprimulgus_climacurus", "Columba_livia",
"Columba_palumbus", "Streptopelia_decaocto", "Fulica_atra", "Gallinula_chloropus",
"Crex_crex", "Rallus_aquaticus", "Podiceps_cristatus", "Tachybaptus_ruficollis",
"Vanellus_vanellus", "Charadrius_hiaticula", "Charadrius_dubius",
"Haematopus_ostralegus", "Pluvialis_apricaria", "Scolopax_rusticola",
"Tringa_ochropus", "Actitis_hypoleucos", "Calidris_alpina", "Philomachus_pugnax",
"Lymnocryptes_minimus", "Numenius_arquata", "Larus_glaucoides",
"Larus_argentatus", "Larus_marinus", "Larus_canus", "Larus_ridibundus",
"Rissa_tridactyla", "Chlidonias_leucopterus", "Uria_aalge", "Alle_alle",
"Alca_torda", "Fratercula_arctica", "Catharacta_skua", "Fulmarus_glacialis",
"Buteo_buteo", "Milvus_migrans", "Circus_cyaneus", "Accipiter_gentilis",
"Accipiter_nisus", "Aquila_chrysaetos", "Upupa_epops", "Alcedo_atthis",
"Picus_viridis", "Dendrocopos_minor", "Dendrocopos_major", "Falco_peregrinus",
"Falco_columbarius", "Amazona_aestiva", "Gavia_stellata", "Phalacrocorax_carbo",
"Hirundo_rustica", "Delichon_urbicum")), row.names = c("Alectoris_rufa",
"Alectoris_graeca", "Perdix_perdix", "Perdix_dauurica", "Lagopus_lagopus",
"Tadorna_tadorna", "Aix_sponsa", "Mergus_merganser", "Bucephala_islandica",
"Anas_crecca", "Anas_clypeata", "Apus_apus", "Tachymarptis_melba",
"Caprimulgus_europaeus", "Caprimulgus_climacurus", "Columba_livia",
"Columba_palumbus", "Streptopelia_decaocto", "Fulica_atra", "Gallinula_chloropus",
"Crex_crex", "Rallus_aquaticus", "Podiceps_cristatus", "Tachybaptus_ruficollis",
"Vanellus_vanellus", "Charadrius_hiaticula", "Charadrius_dubius",
"Haematopus_ostralegus", "Pluvialis_apricaria", "Scolopax_rusticola",
"Tringa_ochropus", "Actitis_hypoleucos", "Calidris_alpina", "Philomachus_pugnax",
"Lymnocryptes_minimus", "Numenius_arquata", "Larus_glaucoides",
"Larus_argentatus", "Larus_marinus", "Larus_canus", "Larus_ridibundus",
"Rissa_tridactyla", "Chlidonias_leucopterus", "Uria_aalge", "Alle_alle",
"Alca_torda", "Fratercula_arctica", "Catharacta_skua", "Fulmarus_glacialis",
"Buteo_buteo", "Milvus_migrans", "Circus_cyaneus", "Accipiter_gentilis",
"Accipiter_nisus", "Aquila_chrysaetos", "Upupa_epops", "Alcedo_atthis",
"Picus_viridis", "Dendrocopos_minor", "Dendrocopos_major", "Falco_peregrinus",
"Falco_columbarius", "Amazona_aestiva", "Gavia_stellata", "Phalacrocorax_carbo",
"Hirundo_rustica", "Delichon_urbicum"), class = "data.frame")
Upvotes: 2
Views: 35
Reputation: 388982
To maintain the same order as rownames of the orignal dataframe you can do -
d$Species <- factor(d$Species, unique(rownames(phy.ordered)))
#Or using the `Species` column
#d$Species <- factor(d$Species, unique(phy.ordered$Species))
Then plot as usual -
library(ggplot2)
ggplot(d)+
geom_point(aes(x = Species, y = value))+
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.2))+
theme(axis.title.x = element_blank())+
ylab("PC value")
Upvotes: 1