final_2
열 type
이 각 행의 값이 계산 된 GWAS를 식별 하는 테이블 이 있습니다.
> final_2
geneid BPcum genesymbol type TWAS.Z TWAS.P
1: ENSG00000272438.1 910406 RP11-54O7.16 aoi -0.75885 0.447942
2: ENSG00000230699.2 913192 RP11-54O7.1 aoi -0.94690 0.343688
3: ENSG00000223764.2 918941 RP11-54O7.3 aoi -0.66248 0.507661
4: ENSG00000187634.11 934255 SAMD11 aoi -0.52081 0.602502
5: ENSG00000187961.13 963152 KLHL17 aoi 0.22512 0.821883
---
61176: ENSG00000205559.3 2871588859 CHKB-AS1 si 1.96200 0.049800
61177: ENSG00000206841.1 2871696719 RNU6-409P si -0.78246 0.434000
61178: ENSG00000225929.1 2871742389 AC000036.4 si 0.70652 0.480000
61179: ENSG00000100312.10 2871747173 ACR si -0.01373 0.989000
61180: ENSG00000254499.1 2871747464 AC002056.5 si 0.76906 0.442000
두 산점도 사이에 존재하는 상관 관계를 시각적으로 파악하기 위해 각 플롯이 서로 겹쳐진 두 산점도를 보여주는 산점도 행렬을 만들고 싶습니다.
내가 사용하는 일부 진전을 ggplot
하고 ggpairs
. 내 ggplot
코드 는 다음과 같습니다 .
sample_test <- sample_n(final_2, 10000)
ggplot(sample_test, aes(x = BPcum, y = TWAS.Z, color = type)) +
geom_point() +
facet_grid(~ type)
보시다시피 가깝지만 거기에는 없습니다. Y 축에서 각 type
GWAS를 GWAS의 서로 비교 하는 상관 관계도처럼 type
되길 바랍니다.
내 ggpairs
코드는 다음과 같습니다 .
final_wide <-
dcast(final_2,
geneid + genesymbol ~ type,
value.var = c("TWAS.Z"))
> final_wide
geneid genesymbol aoi cpd dpw sc si
1: ENSG00000000419.12 DPM1 0.566609 -1.826550 -0.062600 -0.087280 -0.172400
2: ENSG00000000457.13 SCYL3 -1.101820 -1.126189 -0.352060 -1.449136 1.867089
3: ENSG00000000460.16 C1orf112 1.534340 -0.607821 -0.160940 1.407573 1.243600
4: ENSG00000000938.12 FGR 1.302000 -1.085000 -0.490000 -0.678000 -1.661000
5: ENSG00000001460.17 STPG1 -0.436960 -0.885166 -0.536580 -1.541952 0.601034
---
12240: ENSG00000283672.1 MIR4678 -0.584710 0.616161 -0.091148 1.202870 -0.905510
12241: ENSG00000283675.1 snoMe28S-Am2634 1.002720 0.074320 -1.658840 0.929563 -1.011690
12242: ENSG00000283683.1 RP3-454G6.2 0.548000 0.249000 0.157000 0.147000 0.142000
12243: ENSG00000283696.1 RP11-122G18.12 0.029400 0.905570 -1.972690 0.435826 -0.924870
12244: ENSG00000283699.1 MIR4481 -1.280010 0.605154 0.546647 1.366070 -0.303850
ggpairs(final_wide %>% select(-c(geneid, genesymbol)))
이것은 내가 원하는 것에 훨씬 더 가깝지만 내 문제는이 모든 플롯 ( "정확한"사각형 또는 곡선)의 위쪽 절반이 필요하지 않으며의 미학을 변경하는 방법을 알 수 없다는 것입니다. 과도하게 플롯하기 때문에 알파를 줄이거 나 type
.
의견 있으십니까? 난 둘 다 사용하여 열려있어 ggplot
와 ggpairs
.
광범위한 데이터를 기반으로 원하는 결과를 얻는 한 가지 방법은 별도의 산점도를 만들고 patchwork
다음을 사용하여 함께 붙이는 것입니다 .
var1
)에 대한 변수로 벡터 만들기var2
).map2
.map2
사용 map
됩니다. 또한를 사용하여 enpty 패널로 목록을 채우십시오 plot_spacer
.reduce
wrap_plots
하여 별도의 플롯을 함께 붙입니다.if
조건을 사용하여 축 레이블, 텍스트 및 선을 조건부로 제거합니다.편집 물론 색상을 추가 할 수도 있습니다. 그러나 내 접근 방식의 단점은 가이드를 수집 한 후에도 4 개의 전설이된다는 것입니다. 따라서 단일 색상 범례를 모방하기 위해 범례 간격과 여백을 조정해야했습니다.
library(ggplot2)
library(patchwork)
library(purrr)
make_plot <- function(df, var1, var2) {
df$var1 <- var1
df$var2 <- var2
xlabel <- if (var2 == "si") var1 else NULL
ylabel <- if (var1 == "aoi") var2 else NULL
color_label <- if (var1 == "aoi") "type" else NULL
xaxis <- if (var2 != "si") theme(axis.text.x = element_blank(), axis.ticks.x = element_blank()) else NULL
yaxis <- if (var1 != "aoi") theme(axis.text.y = element_blank(), axis.ticks.y = element_blank()) else NULL
ggplot(df, aes(x = .data[[var1]], y = .data[[var2]], color = var1)) +
geom_point() +
scale_color_manual(values = cols, labels = var1) +
labs(x = xlabel, y = ylabel, color = color_label) +
xaxis +
yaxis
}
var1 <- names(final_wide)[-c(1:2)]
var2 <- lapply(1:4, function(x) var1[(x + 1):5])
cols <- scales::hue_pal()(5)
cols <- setNames(cols, var1)
labs <- setNames(var1, var1)
plot_list <- map2(var1[1:4], var2, function(var1, var2) {
blank <- rep(list(plot_spacer()), 4 - length(var2))
map(var2, ~ make_plot(final_wide, var1, .x)) %>% c(blank, .)
})
plot_list <- reduce(plot_list, c)
wrap_plots(plot_list, nrow = 4, byrow = FALSE) +
plot_layout(guides = "collect") &
theme(legend.spacing.y = unit(0, "pt"),
legend.margin = margin(1, 1, 1, 1 , "pt"),
legend.title = element_text(margin = margin(0, 0, 3, 0, "pt")))
데이터
final_wide <- structure(list(geneid = c(
"ENSG00000000419.12", "ENSG00000000457.13",
"ENSG00000000460.16", "ENSG00000000938.12", "ENSG00000001460.17",
"ENSG00000283672.1", "ENSG00000283675.1", "ENSG00000283683.1",
"ENSG00000283696.1", "ENSG00000283699.1"
), genesymbol = c(
"DPM1",
"SCYL3", "C1orf112", "FGR", "STPG1", "MIR4678", "snoMe28S-Am2634",
"RP3-454G6.2", "RP11-122G18.12", "MIR4481"
), aoi = c(
0.566609,
-1.10182, 1.53434, 1.302, -0.43696, -0.58471, 1.00272, 0.548,
0.0294, -1.28001
), cpd = c(
-1.82655, -1.126189, -0.607821, -1.085,
-0.885166, 0.616161, 0.07432, 0.249, 0.90557, 0.605154
), dpw = c(
-0.0626,
-0.35206, -0.16094, -0.49, -0.53658, -0.091148, -1.65884, 0.157,
-1.97269, 0.546647
), sc = c(
-0.08728, -1.449136, 1.407573, -0.678,
-1.541952, 1.20287, 0.929563, 0.147, 0.435826, 1.36607
), si = c(
-0.1724,
1.867089, 1.2436, -1.661, 0.601034, -0.90551, -1.01169, 0.142,
-0.92487, -0.30385
)), class = "data.frame", row.names = c(
"1:",
"2:", "3:", "4:", "5:", "12240:", "12241:", "12242:", "12243:",
"12244:"
))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다