"a" ist ein Datenrahmen.verbinden Punkte in ggplot2 mit verschiedenen Linientypen
set.seed(2)
a<-data.frame(group= rep(c("A","B","C"),each=4),factor=rep(c(1,1,2,2),3),
model=rep(c("old","new"),6),mean=runif(12),sd=runif(12)/10)
>a
group factor model mean sd
1 A 1 old 0.1848823 0.076051331
2 A 1 new 0.7023740 0.018082010
3 A 2 old 0.5733263 0.040528218
4 A 2 new 0.1680519 0.085354845
5 B 1 old 0.9438393 0.097639849
6 B 1 new 0.9434750 0.022582546
7 B 2 old 0.1291590 0.044480923
8 B 2 new 0.8334488 0.007497942
9 C 1 old 0.4680185 0.066189876
10 C 1 new 0.5499837 0.038754954
11 C 2 old 0.5526741 0.083688918
12 C 2 new 0.2388948 0.015050144
Ich möchte mit ggplot2 einen "Mittelwert ± sd" Liniendiagramm zeichnen. Mein Ziel ist es, ein Bild zu zeichnen (X-Achse ist "Gruppe", Y-Achse ist "Mittelwert ± SD", unterschiedliche "Faktor" sollte unterschiedliche Farbe haben, unterschiedliche "Modell" sollte unterschiedliche Verbindungslinie Typ (altes Modell ist) gestrichelte Linie, neues Modell ist durchgezogene Linie))
ich verwende folgenden Code:
library("ggplot2")
pd <- position_dodge(0.1) #The errorbars overlapped, so use position_dodge to move
#them horizontally
plot<-ggplot(a, aes(x=group, y=mean, colour=as.factor(factor), linetype=model)) +
geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.1, position=pd) +
geom_point(position=pd, size=3, shape=21, fill="white") + # 21 is filled circle
xlab("Groups") +
ylab("Power") +
geom_line(position=pd) +
scale_linetype_manual(values = c(new = "solid", old = "dashed"))
aber „Mittelwert ± sD“ sollten alle durchgezogenen Linien sein, und die Verbindung zwischen den Punkten sollte hinzugefügt werden, . Eigentlich möchte ich, dass es so ist:
Können Sie mir einen Rat geben, danke!
Thank you so much! Es sieht gut aus! Aber es gibt ein Problem: Das neue Modell und das alte Modell in der gleichen Farbe überlappen sich, könnten Sie helfen, damit umzugehen, danke! @beetroot – lightsnail
Zum Beispiel in Gruppe B, zwei rote "Mittelwert ± SD" sind überlappt, es ist besser, sie nicht auf der gleichen X-Achse anzuordnen, eine kleine Lücke ist besser. – lightsnail
Wenn ich "pd <- position_dodge (1)" setze, wird das gragh mit deinem Code etwas seltsam. @beetroot – lightsnail