Добавьте отрезки к облачному графику в решетке - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь добавить линейные сегменты в облако сюжет с пакетом lattice.

Я прочитал документацию по решетке и нашел функции lsegments() и panel.segments(), но не смог найти решение. На самом деле, я не уверен, можно ли использовать эти функции на трехмерном графике, созданном с помощью функции cloud(). У меня есть координаты x0, y0, x1 и y1 для установки. Но как мне установить координату z для отрезков?

Мои данные:

d <- structure(list(V1 = c(-0.231868485424126, 0.260991275378284, 
-0.973129576550547, 0.150224354474776, -0.743673301914161, 
0.21938366130134, 
0.899845151352479, 0.0808627438470515, 0.317569956044341, 
-0.481908931028419
), V2 = c(-0.964917334664869, 0.629592806926283, 0.155210445495851, 
-0.808297399258872, 0.38884655631618, -0.960935067863847, 
0.18526488864338, 
-0.701769619946431, -0.114753054406819, -0.737619553095911), 
V3 = c(0.123172816523645, -0.731776230580839, 0.170083934724984, 
0.569287236528258, -0.543827523817191, -0.168744198429227, 
0.394912173303622, 0.707799842595184, 0.941265668938531, 
0.472949444534652)), class = "data.frame", row.names = c(NA, 
-10L))

Мои векторы для сегментов:

from <- c(4, 1, 1, 1, 8, 3, 7, 2, 3)
to <- c(8, 10, 6, 4, 9, 5, 9, 5, 10)

Как моя цель выглядит в 2D:

plot(d[,1:2])
segments(d[from,1], d[from,2], d[to,1], d[to,2],col="black", lty=3 )

enter image description here

Что мне удалось сделать с решеткой:

lattice::cloud(V3~V1+V2, data = d, pch= 19,
       screen=list(z = 30, x = -70, y = 0),
       scales=list(arrows=FALSE, cex=0.6, col="black", font=3,
                   tck=0.6, distance=1) ,
       drop.unused.levels = FALSE,

       panel = function(...){
         lattice::panel.cloud(...)
         lattice::panel.segments(x0 = d[from,1], y0 = d[from,2], x1 = 
d[to,1], y1 = d[to,2], z0=d[from,3], z1=d[to,3],  lwd=2, col="blue" )
       })

Я знаю, что нет параметров z0 или z1. Я помещаю их только в качестве иллюстрации того, что я намерен делать. Несмотря на то, что этот код создает следующую графику:

enter image description here

В вертикальном положении есть странная синяя линия.

Другая информация:

Я также прочитал следующие вопросы SO, но не смог найти решение своей проблемы:

Добавить 3D аблайн к облачному графику в решетчатом пакете R

Как построить сегменты или стрелки с решеткой в ​​R? (из набора данных широкого формата)

Построение каркаса И облака с решеткой в ​​R

Информация о сезоне:

R version 3.5.1 (2018-07-02)
Platform: x86_64-suse-linux-gnu (64-bit)
Running under: openSUSE Leap 15.0

Matrix products: default
BLAS: /usr/lib64/R/lib/libRblas.so
LAPACK: /usr/lib64/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               
LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     
LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                  
LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] lattice_0.20-35     MultiRNG_1.1        KODAMA_1.4          
bindrcpp_0.2.2      prodlim_2018.04.18  dplyr_0.7.6         
RcppMLPACK_1.0.10-6
[8] Rcpp_0.12.18       

loaded via a namespace (and not attached):
 [1] rstudioapi_0.7   bindr_0.1.1      magrittr_1.5     splines_3.5.1    
tidyselect_0.2.4 R6_2.2.2         rlang_0.2.1      fansi_0.2.3     
 [9] tools_3.5.1      grid_3.5.1       checkmate_1.8.5  utf8_1.1.4       
cli_1.0.0        yaml_2.2.0       survival_2.41-3  assertthat_0.2.0
[17] tibble_1.4.2     crayon_1.3.4     Matrix_1.2-14    lava_1.6.3       
purrr_0.2.5      glue_1.3.0       compiler_3.5.1   pillar_1.3.0    
[25] backports_1.1.2  BBmisc_1.11      pkgconfig_2.0.1
...