Ich habe ein Facettenplot in ggplot2 mit mehreren Datensätzen in jeder Figur als Liniendiagramme erstellt. Einige der Datenpunkte sind nach einem statistischen Test signifikant (p ≤ 0,05). Ich möchte dies auf der Handlung mit einem Stern über den Datenpunkten angeben, die signifikant sind. I found this example of having asterisks displayed above the significant valuesWie werden mehrere Sternchen für die Signifikanz im ggplot-Facettenplot dargestellt?
Die Farbe des Sternchens auf die Farbe des Datensatzes entsprechen in dem Grundstück verwendet. Und wenn mehrere signifikante Datensätze für diesen Punkt auf der x-Achse vorhanden sind, sollten die Sternchen vertikal gestapelt werden, damit sie sich nicht durch Überlappung verdecken.
In meinen Eingabedaten habe ich eine zusätzliche Spalte mit dem p-Wert. Könnte mich jemand auf den Weg hinweisen, diesen ggplot2 zu machen (wenn es überhaupt möglich ist) oder mir mit dem Code helfen.
Mein aktuelles Grundstück (Legende ist die rechte Seite abgeschnitten den Rest der Figur zu machen größer hier):
Mein aktueller Code:
ggplot(MyData,aes(x = DAF, y = Mvalue ,group=Species, colour = Species)) + geom_line(size=1.3) + xlab("Frequencies") + ylab("Score") + theme(axis.text.x=element_text(angle = -45, hjust = 0, size = 6)) + theme(axis.text.y=element_text(size = 6)) + facet_wrap(~Variant) + geom_point()
Beispiel von Eingang Daten für 2 der 9 Datensätze (der Rest würde weiter unten). Für diese Daten der Sternchen auf Signifikanz (p ≤ 0,05) würden für Linien 6,7,8,10,14 & 19 basierend auf dem Wert in der letzten Spalte ≤ 0,05 wobei:
1 Species Variant DAF Mvalue pvalue
2 Tom 5' UTR 0.1-0.19 -1.6026346186 NA
3 Tom 5' UTR 0.2-0.29 1.1646939405 NA
4 Tom 5' UTR 0.3-0.39 0.0003859956 9.84E-01
5 Tom 5' UTR 0.4-0.49 0.0226744644 3.28E-01
6 Tom 5' UTR 0.5-0.59 0.1163627387 3.22E-05
7 Tom 5' UTR 0.6-0.69 0.1614562558 6.33E-06
8 Tom 5' UTR 0.7-0.79 0.221583632 4.29E-06
9 Tom 5' UTR 0.8-0.89 0.1231280752 1.42E-01
10 Tom 5' UTR 0.9-0.99 0.5765076152 9.13E-03
11 Tom 5' UTR 1 5.8105310419 1.87E-13
12 Jerry 5' UTR 0.1-0.19 -0.1371122871 NA
13 Jerry 5' UTR 0.2-0.29 -0.0539638465 4.30E-01
14 Jerry 5' UTR 0.3-0.39 0.1666681074 1.45E-02
15 Jerry 5' UTR 0.4-0.49 0.0081950639 9.19E-01
16 Jerry 5' UTR 0.5-0.59 -0.1204254909 1.82E-01
17 Jerry 5' UTR 0.6-0.69 0.1017622151 3.15E-01
18 Jerry 5' UTR 0.7-0.79 0.1293398031 3.16E-01
19 Jerry 5' UTR 0.8-0.89 0.2944195851 4.52E-02
20 Jerry 5' UTR 0.9-0.99 -0.2956980914 2.12E-01
21 Jerry 5' UTR 1 0.0746902715 7.63E-01
Wenn es viel ist Einfacher könnte ich die p-Wert-Spalte durch eine 0 oder eine 1 ersetzen, die angibt, ob der Wert signifikant ist.
Ich habe versucht, meine vorherige Arbeit und einige Beispiel-Eingabedaten zu zeigen. Lass mich wissen, ob ich meine Frage verbessern kann. Vielen Dank für Ihre Vorschläge.
ist hier ein dput() Ausgabe einer Teilmenge der Daten wie gewünscht:
structure(list(Species = structure(c(2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Jerry",
"Tom"), class = "factor"), Variant = structure(c(2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("3' UTR",
"5' UTR", "Missense", "Stop gained"), class = "factor"), DAF = structure(c(1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L), .Label = c("0.1-0.19", "0.2-0.29", "0.3-0.39",
"0.4-0.49", "0.5-0.59", "0.6-0.69", "0.7-0.79", "0.8-0.89", "0.9-0.99",
"1"), class = "factor"), Mvalue = c(-1.6026346186, 1.1646939405,
0.0003859956, 0.0226744644, 0.1163627387, 0.1614562558, 0.221583632,
0.1231280752, 0.5765076152, 5.8105310419, -0.0251257018, -0.022586792,
0.0089090304, 0.037280128, 0.0745842692, 0.0831538898, 0.0762765259,
0.1750634419, 0.2095647328, NA, -0.0139837967, -0.0218524964,
-0.023889027, -0.0042744306, 0.0949525873, 0.087866945, 0.1379730494,
0.2719542633, 0.4726727792, NA, 0.0201430038, 0.1304518218, -0.0948886785,
-0.2329137983, -0.0901357588, 0.0504128137, -0.2308377878, 0.4422620731,
NA, NA, -0.1371122871, -0.0539638465, 0.1666681074, 0.0081950639,
-0.1204254909, 0.1017622151, 0.1293398031, 0.2944195851, -0.2956980914,
0.0746902715, -0.005168038, 0.0403712226, -0.0034692714, -0.0049252304,
-0.0089669044, -0.0604522846, 0.1061225099, 0.0180975445, -0.1843156999,
-0.1920104157, 0.2228406046, 0.0532141252, 0.0670815638, -0.1197784096,
-0.235101482, -0.1920644059, -0.2493575855, -0.1564613691, -0.2600385981,
0.069079018, 0.0503810571, 0.4346052688, 0.1300533982, 0.0662828745,
-0.4627398332, -1.081459609, -0.7693678877, -0.4865007276, -0.0230373639,
0.4693415234), pvalue = c(NA, NA, 0.984, 0.328, 3.22e-05, 6.33e-06,
4.29e-06, 0.142, 0.00913, 1.87e-13, NA, NA, 0.354, NA, 1.93e-07,
7.29e-06, 0.00288, 2.48e-05, 0.1, 0.791, 0.124, NA, 0.131, 0.824,
4.11e-05, 0.00354, 0.000711, 3.1e-05, 0.0122, 0.871, 0.73, 0.0963,
0.367, NA, 0.574, 0.799, 0.442, 0.267, 0.319, 0.98, NA, 0.43,
0.0145, 0.919, 0.182, 0.315, 0.316, 0.0452, 0.212, 0.763, 0.824,
0.096, 0.896, 0.868, 0.779, 0.124, 0.0261, 0.761, NA, NA, 6.44e-22,
0.0407, 0.0162, NA, NA, NA, NA, NA, NA, 0.481, 0.809, 0.0236,
0.573, 0.801, 0.172, NA, 0.186, 0.449, 0.975, 0.513)), .Names = c("Species",
"Variant", "DAF", "Mvalue", "pvalue"), class = "data.frame", row.names = c(NA,
-80L))
Können Sie 'dput()' in R verwenden, damit wir Ihre Daten ohne Manipulation verwenden können? – timat
Ich denke, wenn Sie einen Weg finden, dies zu tun, wäre das Diagramm wirklich schwer zu lesen. Ich schlage vor, eine "Skala" zum Punkttyp hinzuzufügen (z. B. Kreis = Nicht signifikant, Diamant = Signifikant). Sie können auch auf die Größe des Punktes spielen. – timat
Die Skala ist eine großartige Idee. Gibt es eine Möglichkeit, ausgefüllte Kreise für signifikante, ungefüllte für signifikante zu tun? Obwohl ich mir Sorgen mache, könnten die überlappenden Linien diese Punkte immer noch verschleiern. Aber ich könnte mit der Größe spielen, wie du gesagt hast. Wie sollte ich dput() verwenden, es gibt mir eine sehr lange Liste von Werten und ich wollte nicht alle Daten hier posten, da es> 600 Zeilen gibt. – user964689