Ich war answering diese question, dass ich ein seltsames Problem konfrontiert;Falsche Achsenbeschriftungen für ggplot Facettengitter
Ich möchte ein Balkendiagramm mit ggplot2
erstellen und haben x Achsenbeschriftungen als das letzte Zeichen der Spalte Group
. Verwenden Sie substring(Group, 3, 3)
zu diesem Zweck:
substring(df$Group, 3, 3)
# [1] "1" "2" "3" "1" "2" "1" "2" "3" "4"
Aber wenn ich es verwende in ggplot
wie unten, druckt es 1
statt 4
am letzten Tick;
ggplot(data=df, aes(x=Group, y=Value)) +
geom_bar(stat="identity") +
scale_x_discrete(labels = substring(Group, 3, 3), expand=c(0.1,0.1)) +
facet_grid(~ substring(Group, 1, 1), space="free_x", scales="free_x", switch="x") +
theme_bw() +
theme(strip.placement = "outside",
strip.background = element_rect(fill=NA,colour="grey50"),
panel.spacing=unit(0,"cm"))
Ich kann es mithilfe labels =unique(substring(Group, 3, 3)
zu arbeiten, aber würde jemand erklären, was los ist?
Daten:
df <- structure(list(Group = structure(1:9, .Label = c("1_1", "1_2",
"1_3", "2_1", "2_2", "3_1", "3_2", "3_3", "3_4"), class = "factor"),
Value = c(-1.23, 2.34, 0.56, 1.87, -2.4, 5.54, -0.98, -2.31,
6)), .Names = c("Group", "Value"), row.names = c(NA, -9L), class = "data.frame")
# > df
# Group Value
# 1 1_1 -1.23
# 2 1_2 2.34
# 3 1_3 0.56
# 4 2_1 1.87
# 5 2_2 -2.40
# 6 3_1 5.54
# 7 3_2 -0.98
# 8 3_3 -2.31
# 9 3_4 6.00
Was passiert, wenn ich 'df $ verwenden Gruppe?Ich habe das versucht und bekomme immer noch das gleiche Ergebnis. Abgesehen davon habe ich sogar "labels = c (" 1 "," 2 "," 3 "," 1 "," 2 "," 1 "," 2 "," 3 "," 4 ")' aber Ich bekomme wieder die gleiche Handlung? Es ist seltsam, oder? – Masoud
Sie haben eine Achse mit 4 verschiedenen Werten und Sie stellen 9 Beschriftungen zur Verfügung. Es verwendet die ersten vier Etiketten, die Sie bereitstellen. Was ist überraschend? – Gregor
wahrscheinlich eine naive Frage, aber warum habe ich 4 verschiedene Werte? – Masoud