2017-11-07 5 views
1

ggplot2를 처음 사용했습니다. 3 열의 표가 있으며 모든 세 열의 빈도 분포를 한 그림에 플로팅하고 싶습니다. 나는 hist()를 사용하기 전에이 ggplot2를 약간 잃어 버렸습니다. 다음은 내 테이블의 예입니다. 3 열 A, B, C 헤더가있는 탭 구분 표.R의 3 열에서 하나의 막대 그래프를 만드는 방법?

A   B   C 
1.38502 1.38502  -nan 
0.637291 0.753084 1.55556 
0.0155242 0.0164394 -nan 
3.29355 1.15757  -nan 
1.00254 1.10108  0.132039 
0.0155424 0.0155424 nan 
0.760261 0.681639 0.298851 
1.21365 1.21365  -nan 
1.216  1.22541 -nan 
0.61317 0.738528 0.585657 
0.618276 0.940312 0.820591 
1.96779 1.31051  1.58609 
0.725413 2.29621  1.78989 
0.684681 0.67331  0.290221 

비슷한 게시물을 찾아 다음 코드를 사용했지만 오류가 발생합니다.

library(ggplot2) 

dnds <- read.table('dNdS_plotfile', header =TRUE) 

ggplot(data=dnds, melt(dnds), aes_(value, fill = L1))+ 
     geom_histogram() 

ERROR:No id variables; using all as measure variables

Error: Mapping should be created with aes() or aes_().

은 정말이 오류를 해결하는 방법에 대한 손실입니다. 내 마지막 그림에서 겹치지 않는 3 가지 색상의 막대 그래프가있는 한 그림이 필요합니다. 이 일을 도와주세요. 고맙습니다.

+0

첫 번째 "오류"는 경고입니다 :

여기에 설명서를 참조하십시오. 두 번째는 오류입니다. 왜냐하면'data' 인수에 녹은 데이터 세트를 제공해야하지만'ggplot'의 두 번째 인수 인'mapping' 인수로 전달해야하기 때문입니다. – aosmith

+0

3 개의 중첩 (또는 무언가) 히스토그램을 원하십니까? 'A','B'','C'에 각각 하나씩, 아니면 세개의 열을 하나의 벡터로 병합할까요? – MrGumble

답변

1

이렇게하면 원하는 결과를 얻을 수 있습니다. 나는 ggplot2와 dplyr 같은 유용한 패키지를로드하는 패키지 tidyverse를로드하고 싶다. geom_histogram()에서

, 당신은 인수 binwidth() 또는 빈()와 쓰레기통의 수와 히스토그램의 bindwidth을 지정할 수 있습니다. 막대를 쌓지 않으려면 인자 position = "dodge"을 사용할 수 있습니다. http://ggplot2.tidyverse.org/reference/geom_histogram.html

library(tidyverse) 

data <- read.table("YOUR_DATA", header = T) 

graph <- data %>% 
    gather(category, value) 

ggplot(graph, aes(x = value, fill = category)) + 
    geom_histogram(binwidth = 0.5, color = "black") 

enter image description here

+0

문제 없습니다! 도와 줄 수있어서 기뻐! –