2016-11-27 1 views
1

여기에 내가 플롯하기 위해 노력하고있어 데이터의 : 나는 용융 데이터 프레임, hi.m, 즉이 포함되어 있습니다GGplot의 히트 맵은 각 타일에이 라벨을 가지고

ggplot(hi.m, aes(Var1, Var2)) + 
    geom_tile(aes(fill = value)) + 
    geom_label(aes(label = round(ovals,4)),fill="white",alpha=0.65) + 
    scale_fill_viridis(name="Scaled\nValue",option="plasma") 

:

여기
structure(list(Var1 = structure(c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), class = "factor", .Label = c("Specificity", "Dunn Index")), Var2 = structure(c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 9L, 10L, 10L, 1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 9L, 10L, 10L), class = "factor", .Label = c("Variance (2)", "Variance (4)", "Variance & Mean (2)", "Variance & Mean (4)", "Radar Only (2)", "Radar Only (4)", "All Data(2)", "All Data(3)", "All Data Scaled(2)", "All Data Scaled(4)")), value = c(-0.692279597863213, -1.48943741434953, -1.09355531182318, -1.08413861964885, 0.912823257976641, -0.626715742011029, -1.94602923014127, -0.746300681279627, 0.912823257976641, 1.64344717562082, -0.491325775754128, 0.350878495792349, 0.912823257976641, 0.90352725291858, 0.661946945469388, 0.668160073306832, 0.311225652165799, 0.688901920415944, 0.511547544016677, -0.308322460765497, -0.692279597863213, -1.48943741434953, -1.09355531182318, -1.08413861964885, 0.912823257976641, -0.626715742011029, -1.94602923014127, -0.746300681279627, 0.912823257976641, 1.64344717562082, -0.491325775754128, 0.350878495792349, 0.912823257976641, 0.90352725291858, 0.661946945469388, 0.668160073306832, 0.311225652165799, 0.688901920415944, 0.511547544016677, -0.308322460765497), ovals = c(48.41, 42.06, 73.81, 28.57, 73.81, 51.59, 73.81, 69.84, 64.29, 67.46, 5.28412698412698, 11.7253968253968, 8.63095238095238, 33.4107142857143, 18.3043650793651, 76.5388888888889, 36.3634920634921, 52.168253968254, 52.1623015873016, 84.1174603174603, 0.00520833333333333, 0.0164803125616411, 0.0292019422400468, 0.0258761022200942, 0.0923386443151634, 0.0563903328454791, 0.0717603398435939, 0.065214418675562, 0.0657912811602958, 0.0380569462508109, 0.72083903433112, 0.757277684759935, 0.633561928614755, 0.496305437129809, 0.435493681015241, 0.402952149580986, 0.296927697111903, 0.300126336907244, 0.247276928682524, 0.257546088468624)), .Names = c("Var1", "Var2", "value", "ovals"), row.names = c(NA, -40L), class = "data.frame") 

내 코드의이 원래 값의 크기가 조정 된 버전이지만 원래 값을 레이블로 사용하려면 hi.m이라는 새 열, 타원을 추가했습니다. 여기에 내가 무엇을 시도했다입니다

enter image description here

: 여기

는 스케일링 값이 스케일 없음의 값의 상단에있는 것 같습니다, 플롯 결과,하지만 그들은 모두 4 소수점 이하 자릿수로 반올림되고있어 :

  1. par(op)
  2. 는 1 aes()
  3. label 배치와 그래픽 매개 변수를 재설정 이 라벨에 각 값을 중첩 그래서 (여전히 표시 모두 라벨) 1 aes()
  4. 제거 geo_tilefill을 배치 16,

답변

1

귀하의 데이터는 Var1Var2 모두에 대해 여러 관측이있다. 가능한 경우 플로팅하기 전에 데이터 프레임을 집계하십시오.

library(dplyr) 
library(ggplot2) 
library(viridis) 

plot_data <- hi.m %>% 
    group_by(Var1, Var2) %>% 
    summarize_each(funs(mean), value, ovals) 

ggplot(plot_data, aes(Var1, Var2)) + 
    geom_tile(aes(fill = value)) + 
    geom_label(aes(label = round(ovals,4)),fill="white",alpha=0.65) + 
    scale_fill_viridis(name="Scaled\nValue",option="plasma") 
+0

: enter image description heredplyr를 사용하는 예는 내가 mean 사용하지만, 당신의 선택의 또 다른 집계 함수가 될 수있다 (당신이 자신을 정상화해야 당신이 당신의 작업 흐름이 상류을 수행 할 수 있습니다), 다음과 같습니다 예. 원래 데이터 프레임을 분할 할 때 2 개의 변수를 삭제하는 것을 잊었 기 때문에 서로 쌓여있었습니다. ggplot이 오류를주지 않는 것은 이상한 일입니다. 나는 그 밖의 모든 것에 대해 오류가있는 것처럼 느낍니다. 그래도 ggplot의 방법을 배웁니다. 그것은 신비합니다. 도와 주셔서 감사합니다. –

관련 문제