2013-08-14 2 views
2

본질적으로 그리드 인 플롯 유형을 찾고 있습니다. 예를 들어 10 열 50 행이 있습니다. 이와 같은 예를 들어, 일 : enter image description here그리드로 플롯

각 상자

(이 경우, 10 = 500 * 50)는 I 데이터 프레임을 통해 제공 될 고유 한 값을 가질 것이다. 고유 한 값을 기반으로 각 상자에 색상을 할당하는 함수를 갖게됩니다. 그러면 각 상자의 "범위"를 시각화하는 격자가됩니다. 또한 각 열에 레이블을 붙일 필요가 있습니다 (모든 레이블이 맞을 수 있도록 세로로 정렬) 그리고 행 (가로 방향)으로 레이블을 지정해야합니다.

나는 어떤 종류의 줄거리가 될지 모르겠다. 그리고 어떤 라이브러리가 이것을할지 모르겠다. 나는이 일을하는 데 필요한 도움을 찾고 있습니다. 가능하면 도움을 주시면 감사하겠습니다.

답변

6

어때 대략 heatmap?

m=matrix(runif(12),3,4) 
rownames(m)=c("Me","You","Him") 
colnames(m)=c("We","Us","Them","I") 
heatmap(m,NA,NA) 
그것이 data frame 모든 값이 숫자해야하기 때문에 matrix와하지에 작동하고, data frames이 열 단위 기록 것을

enter image description here

참고.

다른 옵션에 대한 도움말을 참조하십시오.

+0

이 중대하다. 히트 맵에서 모든 색상의 데이터 프레임이나 행렬을 반환 할 수 있습니까? 일부 그리드의 색상을 다른 산점도와 상관시켜야합니다. – intl

+0

히트 맵에는 내 자신의 색을 입력하는 방법이 있습니까? 모든 숫자는 0에서 100까지이고 나는 각각 10의 창을 가질 수 있습니다. 따라서, 0에서 10까지는 하나의 색, 10에서 20까지는 또 다른 색등이 될 것입니다. – intl

+0

히트 맵에 대한 도움말에서 팔레트를 제어하는 ​​방법을 설명합니다. 시도해 봤어? – Spacedman

2

은 "X"및 "Y"는 격자의 각 셀마다 좌표, 및 변수 각각의 셀은 "Z"와 dataframe을 말하게하고 호출 R이 dataframe로드 "을 intlgrid"

head(intlgrid)

 x  y  z 

243.742 6783.367 0.0035285 

244.242 6783.367 0.0037111 

244.742 6783.367 0.0039073 

"..." 
"so on..." 

ggplot2 패키지를 사용하면 쉽게 래스터를 플롯 할 수 있습니다. 그래서 :

install.packages("ggplot2")

한 번 설치 ggplot2, 당신은 이제 코드 그것을 library(ggplot2)

전화 :

ggplot(intlgrid, aes(x,y, fill = z)) + geom_raster() + coord_equal()

을 그리고 당신은 당신의 격자가 그려진 얻을.

+2

'ggplot2'도이 종류의 것을 의미하는'geom_tile'을 가지고 있습니다. –

4

그래픽 패키지의 image 기능을 보거나 제어를 원하는 경우 rasterImage 기능을 확인하십시오.

rect 기능을 사용하여 플롯을 처음부터 빌드 할 수도 있습니다.

4

유연성이 뛰어나므로 ggplot2으로 갈 것입니다. 특히 geom_tile이 유용합니다. 실제로 패널 라인을 원할 경우 theme(panel.grid.major = element_blank()) +theme(panel.grid.minor = element_blank()) + 라인을 주석 처리 할 수 ​​있으며 물론 색상을 지정할 수도 있습니다.각 셀의 텍스트는 선택 사항입니다. 필요하지 않다면 geom_text 전화를 댓글로 남겨주세요. 플롯 윈도우의 크기를 조정하기 만하면 플롯 (행 및 열)의 크기를 조절할 수 있습니다. 또는 - png()을 사용하여 파일에 출력하고자하는 경우 - widthheight 인수를 지정하여 줄 수 있습니다.

library(ggplot2) 
library(reshape) 
library(scales) 

set.seed(1234) 
num.els <- 5 
mydf <- data.frame(category1 = rep(LETTERS[1:num.els], 1, each = num.els), 
        category2 = rep(1:num.els, num.els), 
        value = runif(num.els^2, 0, 100)) 

p <- ggplot(mydf, aes(x = category1, 
         y = category2, 
         fill = value)) + 
    geom_tile() + 
    geom_text(label = round(mydf$value, 2), size = 4, colour = "black") + 
    scale_fill_gradient2(low = "blue", high = "red", 
         limits = c(min(mydf$value), max(mydf$value)), 
         midpoint = median(mydf$value)) + 
    scale_x_discrete(expand = c(0,0)) + 
    scale_y_reverse() + 
    theme(panel.grid.minor = element_blank()) + 
    theme(panel.grid.major = element_blank()) + 
    theme(axis.ticks = element_blank()) + 
    theme(panel.background = element_rect(fill = "transparent"))+ 
    theme(legend.position = "none") + 
    theme() 

print(p) 

출력 :

screenshot

그리고 크기 조정은 :

screenshot