R에서 막대가 나란히있는 막대 그래프 다이어그램을 작성하는 방법


9

R (CVS 파일에서 읽음)로 이러한 데이터에 대한 막대도를 만들고 싶습니다.

Experiment_Name MetricA MetricB Just_X 2 10 Just_X_and_Y 3 20

다음 다이어그램을 갖습니다.

대체 텍스트

나는 초보자이며 시작하는 방법조차 모른다.


1
? 도움말 파일을 읽는 것이 때로는 포럼에 게시하는 것보다 빠릅니다 ...
RockScience

당신은 barplot 함수에 의해 barplots가 만들어진다는 것을 먼저 알아 내야합니다. 이것은 당신이 그것을 알지 못할 때 쉽지 않습니다.

이것은 질문에 대한 답변을 제공하지 않습니다. 저자에게 비평을하거나 설명을 요청하려면 게시물 아래에 의견을 남겨주십시오.
kjetil b halvorsen

답변:


13

나는 당신이 R로 read.table()또는 짧은 read.csv()기능을 사용하여 데이터를 가져올 수 있다고 가정합니다 . 그런 다음 원하는 요약 기능을 적용 할 수 있습니다 (예 : table또는 mean).

x <- replicate(4, rnorm(100))
apply(x, 2, mean)

또는

x <- replicate(2, sample(letters[1:2], 100, rep=T))
apply(x, 2, table)

아이디어는 표시하려는 요약 값에 대한 행렬 또는 테이블로 끝나는 것입니다.

그래픽 출력의 barplot()경우 옵션이 있는 기능을 확인하십시오 ( beside=TRUE예 :

barplot(matrix(c(5,3,8,9),nr=2), beside=T, 
        col=c("aquamarine3","coral"), 
        names.arg=LETTERS[1:2])
legend("topleft", c("A","B"), pch=15, 
       col=c("aquamarine3","coral"), 
       bty="n")

space인수는 병렬 막대 사이에 여분의 공간을 추가하는 데 사용할 수 있습니다.

대체 텍스트


13

여기 ggplot 버전 :

library(ggplot2)
df = melt(data.frame(A=c(2, 10), B=c(3, 20), 
          experiment=c("X", "X & Y")),
          variable_name="metric")

ggplot(df, aes(experiment, value, fill=metric)) + 
       geom_bar(position="dodge")

대체 텍스트


2
마음에 들지 않기를 바라지 만 명령 출력을 추가했습니다.
csgillespie

@csgillespie 문제 없음 :)
teucer

1

나는 reshape2를 반영하기 위해 teucer의 답변을 업데이트하고 싶었습니다.

library(ggplot2)
library(reshape2)
df = melt(data.frame(A=c(2, 10), B=c(3, 20), 
                 experiment=c("X", "X & Y")),
      variable.name="metric")

ggplot(df, aes(experiment, value, fill=metric)) + 
  geom_bar(position="dodge",stat="identity")

teucer의 답변은 reshape2가 variable_name 대신 variable.name을 사용하기 때문에 reshape2에서 "eval (expr, envir, enclos) : Error in eval (expr, envir, enclos) : object 'metric'not found"오류를 생성합니다.

또한 geom_bar 함수에 stat = "identity"를 추가해야한다는 것을 알았습니다. 그렇지 않으면 "Error : 변수를 y에 매핑하고 stat ="bin "을 사용하기 때문입니다."

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.