xticks 위치를 변경하고 levelplot(격자 라이브러리)을 사용하여 범례를 사용자 정의하는 방법

StackOverflow https://stackoverflow.com/questions/19847664

  •  29-07-2022
  •  | 
  •  

문제

  1. x-틱과 x-레이블의 위치를 ​​그림 하단에서 상단으로 이동하려고 합니다.

  2. 게다가 내 데이터에는 NAs.현재, levelplot 그냥 제거하고 플롯의 공백으로 남겨 두십시오.이거 추가해도 되는지 궁금합니다 NAs 전설에도.

어떤 제안이 있으십니까?감사해요!

내 코드와 출력은 다음과 같습니다.

require(lattice)
# see data from dput() below
rownames(data)=data[,1]
data_matrix=as.matrix(data[,2:11])
color = colorRampPalette(rev(c("#D73027", "#FC8D59", "#FEE090", "#FFFFBF", "#E0F3F8", "#91BFDB", "#4575B4")))(100)
levelplot(data_matrix, scale=list(x=list(rot=45)), ylab="Days", xlab="Strains", col.regions = color)

데이터

data <- 
structure(list(X = structure(1:17, .Label = c("Arcobacter", "Bacillus", 
"Bordetella", "Campylobacter", "Chlamydia", "Clostridium ", "Corynebacterium", 
"Enterococcus", "Escherichia", "Francisella", "Legionella", "Mycobacterium", 
"Pseudomonas", "Rickettsia", "Staphylococcus", "Streptococcus", 
"Treponema"), class = "factor"), day.0 = c(NA, -3.823301154, 
NA, NA, NA, -3.518606107, NA, NA, NA, NA, NA, -4.859479387, NA, 
NA, NA, -2.588402346, -2.668136603), day.2 = c(-4.006281239, 
-3.024823788, NA, -5.202804501, NA, -3.237622321, NA, NA, -5.296138823, 
-5.105469059, NA, NA, -4.901775198, NA, NA, -2.979144202, -3.050083791
), day.4 = c(-2.880770182, -3.210165554, -4.749097175, -5.209064234, 
NA, -2.946480184, NA, -5.264113795, -5.341881713, -4.435780293, 
NA, -4.810650076, -4.152531609, NA, NA, -3.106172794, -3.543161966
), day.6 = c(-2.869833226, -3.293283924, -3.831346387, NA, NA, 
-3.323947791, NA, NA, NA, NA, NA, -4.397581863, -4.068855504, 
NA, NA, -3.27028378, -3.662618619), day.8 = c(-3.873589331, -3.446192193, 
-3.616207965, NA, NA, -3.13869325, NA, -5.010807453, NA, NA, 
NA, -4.091502649, -4.412399025, -4.681675749, NA, -3.404738625, 
-3.955464159), day.15 = c(-5.176583159, -2.512963066, -3.392832457, 
NA, NA, -3.194662968, NA, -3.60440455, NA, NA, -4.875554468, 
-2.507376205, -4.727255906, -5.27116754, -3.200499549, -3.361296145, 
-4.320554841), day.22 = c(-4.550052847, -3.654013004, -3.486879661, 
NA, NA, -3.614890858, NA, NA, NA, NA, -4.706690492, -2.200533317, 
-4.836957953, NA, -4.390423731, NA, NA), day.29 = c(-4.730006329, 
-3.46707372, -3.594457287, NA, NA, -3.800757834, NA, NA, NA, 
NA, -4.285154089, -2.121152491, -4.816807055, -5.064577888, -2.945243736, 
-4.479177287, -5.226435146), day.43 = c(-4.398680025, -3.144603215, 
-3.642065153, NA, NA, -3.8268662, NA, NA, NA, NA, -4.762539208, 
-2.156862316, -4.118608495, NA, -4.030291084, -4.678213147, NA
), day.57 = c(-4.689982547, -2.713502214, -3.51279797, NA, -5.069579266, 
-3.495580794, NA, NA, NA, NA, -4.515973639, -1.90591075, -4.134826117, 
-4.479351427, -3.482134037, -4.538534489, NA)), .Names = c("X", 
"day.0", "day.2", "day.4", "day.6", "day.8", "day.15", "day.22", 
"day.29", "day.43", "day.57"), class = "data.frame", row.names = c("Arcobacter", 
"Bacillus", "Bordetella", "Campylobacter", "Chlamydia", "Clostridium ", 
"Corynebacterium", "Enterococcus", "Escherichia", "Francisella", 
"Legionella", "Mycobacterium", "Pseudomonas", "Rickettsia", "Staphylococcus", 
"Streptococcus", "Treponema"))

수치enter image description here

도움이 되었습니까?

해결책

레이블을 맨 위로 이동하라는 요청은 매우 쉽습니다(scales 섹션 아래의 ?xyplot을 살펴본 후).

 levelplot(data_matrix, scale=list(x=list(rot=45,alternating=2)), 
           ylab="Days", xlab="Strains", col.regions = color)

NA 값을 색상 범례로 가져오려면 좀 더 생각이 필요할 수 있지만 색상 키 인수에 대한 합리적인 값인 것처럼 보입니다. at 그리고 col 충분할 수도 있습니다.

levelplot(data_matrix, scale=list(x=list(rot=45,alternating=2)), 
         ylab="Days", xlab="Strains", col.regions = color, 
         colorkey=list(at=as.numeric( factor( c( seq(-5.5, -2, by=0.5), 
                               "NA"))), 
                         labels=as.character( c( seq(-5.5, -2, by=0.5), 
                                     "NA")), 
                         col=c(color,  "#FFFFFF") ) )

enter image description here

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top