2016-04-14 10 views
1

:Ggplot2 [R] kullanarak bir veri çerçevesinden yatay hata çubuklarıyla birden fazla çizgi nasıl çizilir? Bu kullanıyorum

http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/

öğretici veri çerçevesi verileri gruplayarak çoklu hat grafikler çizmek için. Veriler şöyle görünür:

> all 
    y   x  err lab 
1 -41.93 5.7696373 0.9120865 he 
2 -41.68 5.6345447 0.9100468 he 
3 -41.43 5.4954702 0.9068282 he 
4 -41.18 5.3588358 0.9054044 he 
... 
471 15.72 4.3701857 0.5170079 te 
472 15.97 4.5128508 0.5262806 te 
473 16.22 4.6592179 0.5320847 te 
474 16.47 4.8052565 0.5397946 te 
475 16.72 4.9518592 0.5465613 te 
476 16.97 5.1057900 0.5504546 te 
477 17.22 5.2503157 0.5602737 te 
478 17.47 5.4000783 0.5711784 te 
479 17.72 5.5506885 0.5830945 te 
480 17.97 5.7085180 0.6109026 te 

Ve grafik çizmek için aşağıdaki satırı kullanıyorum: Ne var olduğunu

ggplot(all, aes(x,y, colour=lab, group=lab)) + geom_errorbarh(aes(xmin=x-err, xmax=x+err)) + geom_line() + geom_point() 

şöyle:

enter image description here

Sadece istiyorum dikey çizgileri düzeltin. İki ayrı çizgi (her renk) ve kendi yatay hata çubuklarıyla görünmelidirler.

Ggplot işlevinde neyi düzeltmeliyim? Çok teşekkürler!

Veri

all <- structure(list(y = c(-41.93, -41.68, -41.43, -41.18, 15.72, 15.97, 
16.22, 16.47, 16.72, 16.97, 17.22, 17.47, 17.72, 17.97), x = c(5.7696373, 
5.6345447, 5.4954702, 5.3588358, 4.3701857, 4.5128508, 4.6592179, 
4.8052565, 4.9518592, 5.10579, 5.2503157, 5.4000783, 5.5506885, 
5.708518), err = c(0.9120865, 0.9100468, 0.9068282, 0.9054044, 
0.5170079, 0.5262806, 0.5320847, 0.5397946, 0.5465613, 0.5504546, 
0.5602737, 0.5711784, 0.5830945, 0.6109026), lab = structure(c(1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("he", 
"te"), class = "factor")), .Names = c("y", "x", "err", "lab"), class = "data.frame", row.names = c("1", 
"2", "3", "4", "471", "472", "473", "474", "475", "476", "477", 
"478", "479", "480")) 
+2

ile karşılaştırın. – rawr

cevap

0

sorun her grupta aynı X birden y değerlerine eşlemek bir veri kümesi için geom_line() kullanımı ile. geom_line, veri noktalarını sürekli olarak en alçaktan en yüksek x'e bağlamayı dener; bu nedenle grafiğinizde (neredeyse) dikey çizgiler elde edersiniz. Bunun yerine geom_path kullanın. Örneğin, geom_line`ı

df <- data.frame(
    y = -5:5, 
    x = (-5:5)^2 
) 

# geom_line 
ggplot(df) + 
    aes(x, y) + 
    geom_line() 


# geom_path 
ggplot(df) + 
    aes(x, y) + 
    geom_path() 
+0

çok teşekkürler. geom_path() kullanarak onu düzeltir. – wthimdh

İlgili konular