R: использование grid.echo для преобразования Plot в grid не работает с обратными осями y - PullRequest
0 голосов
/ 27 августа 2018

После создания графического графика с 4-5 графиками я пытался преобразовать его в объект сетки, чтобы использовать grid.arrange для объединения графиков с выводом из Levelplot:

dev.off()
mat <- cbind(1:2,3:4,5:6)
layout(mat,nrow=1,ncol=6, byrow=TRUE) #= matrix(c(1,2,3,4,5,6)
par(mfrow=c(1,6))
par(mar = c(5, 4, 1, 1))
plot( 1-(outData[,(2)]), outData$depths,
 xlab = "1-R2Samples", 
 ylab = "depth", 
 ylim= (range(outData$depths)), ## to make this fail change to ylim= 
rev(range(outData$depths)),
 type = "l",
 pch = 5,
 cex = 1,
las=1,
asp = 0  
)
par(mar = c(5, 1, 1, 1))
plot(outData$Int, outData$depths,  
 xlab = "Volume Sum", 
 ylab = "", 
ylim=(range(outData$depths)), ## to make this fail change to 
ylim=rev(range(outData$depths)),
 type = "l",
 yaxt = "n",
 pch = 5,
 cex = 0.1
)
library(gridGraphics)
grab_grob <- function(){
grid.echo()
grid.grab()
}
p1 <-grab_grob()`

Эта проблема IЭто связано с преобразованием графики в сетку.

С графикой, созданной с использованием Plot(), графическое окно обычно заканчивается 5 графиками, упорядоченными в виде столбцов рядом друг с другом.

По какой-то причине процесс grid.echo завершается неудачно, потому что мне нужно повернуть оси y, и я пытаюсь понять, почему.

По ошибке я получаю это сообщение об ошибке с обращенными осями (хочу показать0 сверху и самые высокие значения снизу).

С другой стороны, grid.echo отлично работает, если я не поверну ось Y.

"Error in unit(ticks[ticksub], "native") :   'x' and 'units' must have length > 0 "

Данные outData являются XXX obs.из 14 переменных, и моя цель состоит в том, чтобы отобразить выбранные переменные в зависимости от глубины.

grid.echo работает, если глубина уменьшается по оси Y (а не наоборот).

structure(list(depths = c(0.005, 0.015, 0.025, 0.035, 0.045), 
               outr2 = c(0.803147038991965, 0.719125018822535, 
                         0.69839336799921,0.657247646400696, 0.744238996282677), 
               Int = c(-0.00000102997230239077, -0.00000241955173121919, 
                       -0.00000334081711621547, -0.00000194823979055884, -0.00000408144523677508), 
               AvPeat1 = c(0.258752895317787, 0.191682024387082, 0.162885203307831, 
                           0.171238890185635, 0.196734971227272), 
               AvLor0.7 = c(0.574080094004846, 0.663133691909617, 0.712370721311404, 
                            0.758247798201192, 0.794280590391875), 
               SGoo3.088 = c(0.167167010677367, 0.145184283703301, 0.124744075380765, 
                             0.0705133116131729, 0.00898443838085217), 
               `Int -CI` = c(-0.00000275976206093585, -0.00000431831516647923, 
                             -0.00000537600925543973, -0.00000384988709740556, -0.00000608770133458209), 
               `Int +CI` = c(0.000000699817456154306, -0.000000520788295959148, 
                             -0.00000130562497699121, -0.0000000465924837121146, 
                             -0.00000207518913896807), 
               `AvPeat -CI` = c(0.232586945280783, 0.159074674126924, 0.128594303046463, 
                                0.132733085135592, 0.164549253275563), 
               `AvPeat +CI` = c(0.284918845354791, 0.224289374647241, 0.197176103569199, 
               0.209744695235678, 0.228920689178982), 
               `AvLor -CI` = c(0.52198969187707, 0.59821994006912, 0.644105407748852, 
               0.681591576413949, 0.730206211723999), 
               `AvLor +CI` = c(0.626170496132622, 0.728047443750113, 0.780636034873956, 
               0.834904019988435, 0.858354969059752), 
               `SGoo -CI` = c(0.116467123729589, 0.0820033569829375, 0.0583010544268054, 
               -0.00409662840847729, -0.053379521619722), 
               `SGoo +CI` = c(0.217866897625146, 0.208365210423665, 0.191187096334724, 
               0.145123251634823, 0.0713483983814263), 
               .Names = c("depths", "outr2", "Int", "AvPeat1", "AvLor0.7", "SGoo3.088", 
               "Int -CI", "Int +CI", "AvPeat -CI", "AvPeat +CI", "AvLor -CI", "AvLor +CI", 
               "SGoo -CI", "SGoo +CI"), row.names = c(NA, 5L), class = "data.frame"))

1 Ответ

0 голосов
/ 14 сентября 2018

Мое решение этой проблемы состояло в том, чтобы построить графическое изображение горизонтально, чтобы переключить оси таким образом, чтобы глубина была горизонтальной, а не вертикальной.

Я также получил это от автора пакета, что оно было связано сошибка в 'gridGraphics', которая, по-видимому, исправлена ​​в версии для разработчиков на github (https://github.com/pmur002/gridgraphics),, но, к сожалению, для этого требуется версия разработки R.

Тем временем он также предоставил обходной путь (отрицатьданные, а затем отмените метки тиков) ...

revDepths <- -(outData$depths)
par(mar = c(5, 4, 1, 1))
plot(1 - (outData[,(2)]), revDepths,
      xlab = "1-R2Samples",
      ylab = "depth",
      ylim= range(revDepths),
      type = "l",
      pch = 5,
      cex = 1,
      las=1,
      asp = 0,
      axes=FALSE)
axis(1)
ticks <- axTicks(2)
axis(2, at=ticks, labels=-ticks)

Я попробовал это и изо всех сил пытался заставить его работать, но к тому времени я сделал нужную графику, переключая оси и форматируя графикубыть портретом, а не пейзажем. Однако выполнение предложенного выше предложения может помочь другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...