Próbuję utworzyć wykres liniowy i punktowy z listami błędów. Ma różne czynniki, jednak niektóre czynniki mają tylko jedną wartość. Dowiedziałem się, że jeśli użyję position_dodge, jeden z jednego współczynnika wartości ma znacznie szerszy pasek błędów w porównaniu do innych słupków błędów na wykresach. W jakiś sposób position_dodge ma wpływ na szerokość na pasku błędów. Nie znalazłem nikogo, kto miałby ten sam problem wcześniej, więc mam nadzieję, że ktoś może mi pomóc.ggplot2 position_dodge wpływa na szerokość paska błędów
Dane manekin:
require(ggplot2)
x <- c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,3,3,5)
y <- c(3,5,6,3,5,3,5,6,2,6,3,7,3,6,2,1,5,8,7)
se <- x*0.2
treatment <- c("A", "B","C", "D","A", "B","C", "D","A", "B","C", "D","A", "B","C", "D","E", "F", "G")
data <- data.frame(x, y, se ,treatment)
data$treatment <- as.factor(data$treatment)
Pierwsza działka bez position_dodge - wszystko jest w porządku
# Without position dodge
myplot <- ggplot(data, aes(x=x, y=y, group= treatment, fill = treatment, colour = treatment)) +
geom_line(stat="identity", size = 1) +
geom_point(stat="identity", size = 3, shape = 21) +
geom_errorbar(aes(ymin = y-se, ymax = y+se), width = 0.2)
myplot
Teraz działka z pozycji unik:
# With position dodge
myplot <- ggplot(data, aes(x=x, y=y, group= treatment, fill = treatment, colour = treatment)) +
geom_line(stat="identity", size = 1, position=position_dodge(width=0.2)) +
geom_point(stat="identity", size = 3, shape = 21, position=position_dodge(width=0.2)) +
geom_errorbar(aes(ymin = y-se, ymax = y+se), width = 0.2, position=position_dodge(width=0.2))
myplot
Jak widać pasek błędu po prawej stronie ma znacznie większą szerokość w porównaniu do innych pasków błędów. Jest tak prawdopodobnie dlatego, że nie ma nakładających się zmiennych x dla tego punktu, a paski błędów mogą mieć normalny rozmiar. Nadal chciałbym wiedzieć, w jaki sposób mogę uzyskać paski błędów o tej samej szerokości.
Może istotną kwestią: https://github.com/tidyverse/ggplot2/issues/1068 – zx8754
Tak pewnie, jeśli spojrzeć na drugim wykresie punkty dla x = 3 mają również mniejszy pasek błędów. Jest tak prawdopodobnie dlatego, że szerokość paska błędów zależy od liczby grup. – Marinka
Tak, przestrzeń jest dzielona przez liczbę punktów, a linia pozioma staje się krótsza. Rozwiązaniem może być ręczne dodge, na przykład 'x = 1' będzie dla 4 punktów,' x = c (1, 1.02, 1.04, 1.06) ', a następnie usuń opcję dodge. – zx8754