2011-04-20 2 views
3

여러 오류 막대가있는 막대 그래프를 만들려고합니다. 이런 식으로 뭔가 : http://flyordie.sin.khk.be/r/histogram%20error%20bars.PNG 나는 다음과 같은 데이터 집합이 : 나는 ggplot2 격자 그래픽을 사용하여 시도했다 http://flyordie.sin.khk.be/r/output.csv다중 오버레이 오류 막대가있는 barchart

을하지만, 내 요구에 맞는 아무것도 발견하지 않았습니다.

는 막대 그래프를 보여주는 나의 현재 코드는 이것이다 :

data <- read.csv("c:/output.csv") 
data 

par(las=3) 
barplot(data$PlateId, 
    height=data$HC.Maximum, 
    names.arg=data$PlateId, 
    col="lightblue") 

그리고 난이 코드 라이브러리를 사용하는 가장 높은 errorbars에게 (ggplot2)

limits <- aes(ymax = qc$HC.Maximum, ymin = qc$HC.Minimum) 

p <- ggplot(qc, aes(colour=HC.Median,x=PlateId)) 
p + geom_bar(position="dodge")+ geom_errorbar(limits,position="dodge") 

을 보여하지만 방법에 대한 단서가 없다 동일한 그래픽에 올릴 수 있습니다. (예와 같이)

데이터 :

qc <- structure(list(row = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "Row", class = "factor"), 
    ID = 1:14, PlateId = c(35276L, 35279L, 35280L, 35281L, 35282L, 
    35290L, 35291L, 35292L, 35293L, 35294L, 35295L, 35296L, 35297L, 
    35298L), LC.Median = c(439688.495, 509376.055, 475218.99, 
    497368.215, 481801.9, 468603.43, 494713.175, 459047.385, 
    482819.47, 495162.31, 449592.51, 460564.95, 478715.915, 452293.465 
    ), LC.Stdev = c(52290.12229, 49648.49436, 55743.10306, 62002.53552, 
    46908.66149, 52489.615, 48016.94019, 52082.23899, 47934.37133, 
    58977.84845, 45827.62648, 53514.21095, 49638.98286, 139686.144 
    ), LC.Minimum = c(279610.16, 423651.45, 356422.31, 411639.77, 
    397362.84, 345178.07, 406073.72, 352834.86, 339035.77, 369554.11, 
    348688.39, 357341.56, 370463.11, 210367.91), LC.Maximum = c(498195.9, 
    630648.53, 614625.78, 686737.35, 621372.36, 576491.41, 579708.95, 
    580633.28, 580125.9, 622108.73, 530234.87, 563616.65, 614936.33, 
    730272.63), HC.Median = c(507356.465, 553226.525, 447067.77, 
    452223.76, 453439.37, 422491.755, 447438.8, 435034.635, 446148.105, 
    438089.69, 466748.63, 440005.81, 454927.74, 483599.71), HC.Stdev = c(65355.46121, 
    72762.07338, 80118.37641, 43653.99318, 73389.12355, 62590.47601, 
    46421.36678, 62822.88532, 61175.4241, 64418.56174, 63101.2232, 
    68166.51814, 61256.74139, 87354.9441), HC.Minimum = c(381552.05, 
    391124.94, 280614.72, 395454.12, 291433.84, 252579.15, 331661.03, 
    296223.64, 240262.37, 299431.98, 375224.27, 278780.87, 310275.66, 
    213170.04), HC.Maximum = c(626483.6, 635111.41, 555357.3, 
    528822.8, 534172.42, 514927.42, 538385.26, 533024.74, 524973.99, 
    544335.94, 564954.87, 572206.98, 547489.1, 565338.09), zPrime = c(-3.96, 
    -23.73, -7.88, -5.81, -5.32, -5.54, -4.48, -7.98, -6.99, 
    -5.63, -22.54, -33.83, -11.92, -17.44), Sb = c(1.17, 1.03, 
    0.91, 0.91, 0.89, 0.89, 0.9, 0.92, 0.92, 0.89, 1.04, 0.98, 
    0.95, 1.09), Sn = c(1.37, 0.3, -0.83, -0.76, -1.22, -1.01, 
    -1.08, -0.74, -0.86, -0.95, 0.31, -0.2, -0.52, 0.27)), .Names = c("row", 
"ID", "PlateId", "LC.Median", "LC.Stdev", "LC.Minimum", "LC.Maximum", 
"HC.Median", "HC.Stdev", "HC.Minimum", "HC.Maximum", "zPrime", 
"Sb", "Sn"), class = "data.frame", row.names = c(NA, -14L)) 
+0

공익 광고 : dput()을 사용하여 데이터를 추가했습니다. – Andrie

답변

5

, 나는 그것을 접근 :

  1. 는 각각의 추가 레이어에 추가 미학을 정의 ggplot
  2. 에 초기 호출에 공통의 미학을 정의

예를 얻을 수 없어서 코드를 수정했습니다.

  1. 이 기본 및 중복
  2. 공급 명시 적으로 stat=identity

geom_bar에 코드 때문에 경고

  • position=dodge 제거를 제거하기 위해 명시 적 binwidth=1geom_bar에 제공 :

    ggplot(qc, aes(x=PlateId)) + 
        geom_bar(aes(y=HC.Median), binwidth=1, stat="identity", fill="cyan") + 
        geom_errorbar(aes(ymin=HC.Minimum, ymax=LC.Minimum), colour="red") + 
        geom_errorbar(aes(ymin=LC.Maximum, ymax=HC.Maximum), colour="purple") 
    

    enter image description here

  • +0

    고맙습니다. –

    2

    geom_errorbar을 추가하면됩니다. 여러 레이어와 플롯을 만들 때 다음과 같이

    #Rename limits to limits_hi 
    limits_hi <- aes(ymax = qc$HC.Maximum, ymin = qc$HC.Minimum) 
    
    #Define the other error bar 
    limits_lo <- aes(ymax = qc$LC.Maximum, ymin = LC.Minimum) 
    
    #I'm not quite sure what you want in the bars; see if this looks right 
    p <- ggplot(qc, aes(factor(PlateId), HC.Median)) 
    
    p + 
        geom_bar(position="dodge") + 
        geom_errorbar(limits_hi, position="dodge", colour = "red") + 
        geom_errorbar(limits_lo, position="dodge", colour = "blue") + 
        opts(axis.text.x = theme_text(angle = 30)) 
    
    +0

    나는 ggplot2 기능을 오해했습니다. 이 답변을 주셔서 대단히 감사합니다. –