격자에서 barchart를 사용하여 플롯을 만들려고하지만 주어진 패널에 사용되지 않은 요소에 대해 몇 가지 문제가 있습니다. 나는 drop.unused.levels
을 사용해 보았습니다. 그러나 어떤 패널에서도 사용되지 않았을 때만 요소를 떨어 뜨리는 것으로 보입니다. 이 같은막 대형 차트의 패널 당 사용되지 않은 요소 제거
dm <- structure(list(Benchmark = structure(c(1L, 2L, 3L, 4L, 5L, 6L,
7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L,
2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L), class = "factor", .Label = c("416.gamess",
"429.mcf", "436.cactusADM", "458.sjeng", "462.libquantum", "471.omnetpp",
"482.sphinx3")), Class = structure(c(3L, 1L, 2L, 3L, 1L, 4L,
2L, 3L, 1L, 2L, 3L, 1L, 4L, 2L, 3L, 1L, 2L, 3L, 1L, 4L, 2L, 3L,
1L, 2L, 3L, 1L, 4L, 2L, 3L, 1L, 2L, 3L, 1L, 4L, 2L), class = "factor", .Label = c("CS",
"PF", "PI", "PU")), Config = structure(c(1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("Disabled",
"Shallowest", "Deepest", "StorePref", "StridedPref"), class = "factor"),
Perf = c(1, 0.72, 0.8, 1, 0.32, 1.16, 0.79, 1, 0.98, 1, 1,
0.72, 1, 0.99, 1, 0.98, 1, 1, 1.12, 0.97, 1, 1, 0.97, 1,
1, 0.99, 0.97, 1, 1, 1.18, 1, 1, 0.99, 0.97, 1)), .Names = c("Benchmark",
"Class", "Config", "Perf"), row.names = c(NA, -35L), class = "data.frame")
먼저 내가 사용 시도 된 barchart
:
이
내가 사용하고있는 데이터 프레임barchart(Perf ~ Benchmark | Class, dm, groups=Config,
scales=list(x=list(relation='free')), auto.key=list(columns=3))
나에게 다음과 같은 플롯했다
:
을자세히 알 수 있듯이, PI, PF 및 CS 클래스의 벤치 마크 사이. 그 이유는 각 요소가 주어진 클래스에만 존재하므로 다른 모든 요소에 누락되어 있으며 barchart
은 x 축에 간격을 도입 할 수 있기 때문입니다.
내 두 번째 시도는 barchart
네 번 (각 클래스의 하나)를 호출하는 것이 었습니다 :
class.subset <- function(dframe, class.name) {
return(dframe[dframe$Class == class.name, ])
}
pl1 <- barchart(Perf ~ Benchmark, class.subset(dm, 'PI'), groups=Config)
pl2 <- barchart(Perf ~ Benchmark, class.subset(dm, 'PF'),, groups=Config)
pl3 <- barchart(Perf ~ Benchmark, class.subset(dm, 'CS'),, groups=Config)
pl4 <- barchart(Perf ~ Benchmark, class.subset(dm, 'PU'),, groups=Config)
print(pl1, split=c(1, 1, 2, 2), more = TRUE)
print(pl2, split=c(1, 2, 2, 2), more = TRUE)
print(pl3, split=c(2, 1, 2, 2), more = TRUE)
print(pl4, split=c(2, 2, 2, 2))
나는 거의 내가 원하는 무엇을 가지고 플롯을하지만, 지금은 하나를 만드는 방법을 모른다 (각 부가 적 줄거리 대신 바로 그 전설의) 모든 줄거리 글로벌 전설 :
이상적으로
, 나는 그런 식으로하기 때문에 (첫 번째 방법을 사용하여 직면하고있는 문제를 해결하는 것을 선호 I 또한 ~하겠습니다. 각 패널의 클래스 이름). 그러나 두 번째 경우에는 전역 범례와 클래스 이름을 포함하는 각 서브 플로트의 제목을 추가 할 수 있습니다. 그렇게해도 괜찮습니다.
정확히 내가 필요한 것입니다! 고맙습니다! :) – betabandido