2017-03-02 2 views
2

x 축에 다른 날짜로 twoord.plot을 사용하려고 시도하고 ly 및 백분율을 ry으로 계산하고 축 3을 제거하거나 색을 변경하려고합니다. axes = F을 설정하면 작동하지 않으며 xaxt = 'n'도 마찬가지입니다.날짜가 축 (축 3 제거)

오류 plot.default(lx, ly, xlim = xlim, ylim = lylim, xlab = xlab,의 : 여러 실제 인수 일치 형식 인수 "axes"이 솔루션은 여기에 주어진

:

Remove all axis values and labels in twoord plot가하는 사실

axes = FALSE 나에게이 오류 메시지를 제공합니다 다른 rxlx 인 경우 작동하지 않습니다. 어떻게에에

set.seed(123) 
library(plotrix) 
twoord.plot(
    lx = seq(as.Date("2016-01-01"), as.Date("2017-01-01"), by = "days"), 
    ly = round(runif(367) * 6), 
    rx = seq(as.Date("2016-05-09"), as.Date("2017-01-12"), by = "days"), 
    ry = sort(rnorm(249, 60, 10)), 
    lylim = range(round(runif(367) * 6)) + c(0, 10), 
    rylim = range(sort(rnorm(249, 60, 10))) + c(-35, 10), 
    ylab.at = mean(round(runif(367) * 6)), 
    rylab.at = mean(sort(rnorm(249, 60, 10))), 
    rylab = "Percentages %", ylab = "No. of x", 
    type = c("l", "l"), lcol = "skyblue4", rcol = "chocolate1" , 
    xtickpos = as.numeric(seq(as.Date("2016-01-01"), as.Date("2017-01-01"), by = "months")), 
    xticklab = seq(as.Date("2016-01-01"), as.Date("2017-01-01"), by = "months")) 

어떤 아이디어 :

여기 내가 사용되는 것과 유사한 코드는? 미리 감사드립니다! :)

답변

1

그냥 해킹twoord.plot 기능. 모든 축 레이블을 만드는 예제는 다음과 같습니다 (플롯 작성시 twoord.plot 대신 twoord.plot2을 사용하십시오). 축을 모두 제거하려면 주석 (행 앞에 #을 추가) 행 88-90 (ly 용) 및 행 123-125 (ry 용). 나는 아래 함수에서 그들에 대한 노트를 남겼다.

twoord.plot2 = function (lx, ly, rx, ry, data = NULL, main = "", xlim = NULL, 
    lylim = NULL, rylim = NULL, mar = c(5, 4, 4, 4), lcol = 1, 
    rcol = 2, xlab = "", lytickpos = NA, ylab = "", ylab.at = NA, 
    rytickpos = NA, rylab = "", rylab.at = NA, lpch = 1, rpch = 2, 
    type = "b", xtickpos = NULL, xticklab = NULL, halfwidth = 0.4, 
    axislab.cex = 1, do.first = NULL, ...) 
{ 
    if (!is.null(data)) { 
     ly <- unlist(data[ly]) 
     ry <- unlist(data[ry]) 
     if (missing(lx)) 
      lx <- 1:length(ly) 
     else lx <- unlist(data[lx]) 
     if (missing(rx)) 
      rx <- 1:length(ry) 
     else rx <- unlist(data[rx]) 
    } 
    if (missing(lx)) 
     lx <- 1:length(ly) 
    if (missing(ry)) { 
     if (missing(rx)) { 
      rx <- 1:length(ry) 
      ry <- ly 
      ly <- lx 
      lx <- 1:length(ly) 
     } 
     else { 
      ry <- rx 
      rx <- 1:length(ry) 
     } 
    } 
    oldmar <- par("mar") 
    par(mar = mar) 
    if (is.null(xlim)) 
     xlim <- range(c(lx, rx)) 
    if (missing(lx)) 
     lx <- 1:length(ly) 
    if (is.null(lylim)) { 
     lylim <- range(ly, na.rm = TRUE) 
     lyspan <- diff(lylim) 
     if (lyspan == 0) 
      lyspan <- lylim[1] 
     lylim[2] <- lylim[2] + lyspan * 0.04 
     if (lylim[1] != 0) 
      lylim[1] <- lylim[1] - lyspan * 0.04 
    } 
    if (length(type) < 2) 
     type <- rep(type, 2) 
    if (match(type[1], "bar", 0)) { 
     oldcex <- par(cex = axislab.cex) 
     plot(lx, ly, xlim = xlim, ylim = lylim, xlab = xlab, 
      ylab = "", yaxs = "i", type = "n", main = "", axes = FALSE, 
      ...) 
     par(oldcex) 
     if (!is.null(do.first)) 
      eval(parse(text = do.first)) 
     ybottom <- par("usr")[3] 
     if (lylim[1] < 0) 
      abline(h = 0, lty = 2) 
     rect(lx - halfwidth, ifelse(ly < 0, ly, ybottom), lx + 
      halfwidth, ifelse(ly > 0, ly, 0), col = lcol) 
    } 
    else { 
     oldcex <- par(cex = axislab.cex) 
     plot(lx, ly, xlim = xlim, ylim = lylim, xlab = xlab, 
      ylab = "", yaxs = "i", type = "n", main = "", axes = FALSE, 
      ...) 
     par(oldcex) 
     if (!is.null(do.first)) 
      eval(parse(text = do.first)) 
     points(lx, ly, col = lcol, pch = lpch, type = type[1], 
      ...) 
    } 
    title(main = main) 
    xylim <- par("usr") 
    box() 
    if (is.null(xticklab)) 
     axis(1, cex.axis = axislab.cex) 
    else { 
     if (is.null(xtickpos)) 
      xtickpos <- 1:length(xticklab) 
     axis(1, at = xtickpos, labels = xticklab, cex.axis = axislab.cex) 
    } 
    if (is.na(lytickpos[1])) 
     lytickpos <- pretty(ly) 
    if (is.na(ylab.at)) 
     ylab.at <- mean(lytickpos) 
    color.axis(2, at = lytickpos, axlab = ylab, axlab.at = ylab.at, #LINE 88 
     col = "black", cex.axis = axislab.cex, #col = ifelse(is.na(lcol), 1, lcol), cex.axis = axislab.cex, 
     cex = axislab.cex) #LINE 90 
    if (is.null(rylim)) { 
     rylim <- range(ry, na.rm = TRUE) 
     ryspan <- diff(rylim) 
     if (ryspan == 0) 
      ryspan <- rylim[1] 
     rylim[2] <- rylim[2] + ryspan * 0.04 
     if (rylim[1] != 0) 
      rylim[1] <- rylim[1] - ryspan * 0.04 
    } 
    ymult <- diff(lylim)/diff(rylim) 
    yoff <- lylim[1] - rylim[1] * ymult 
    if (match(type[2], "bar", 0)) { 
     if (rylim[1] < 0) 
      abline("h", 0) 
     rect(rx - halfwidth, ifelse(ry < 0, ry, rylim[1] * ymult + 
      yoff), rx + halfwidth, ifelse(ry > 0, ry * ymult + 
      yoff, 0), col = rcol) 
    } 
    else points(rx, ry * ymult + yoff, col = rcol, pch = rpch, 
     type = type[2], ...) 
    if (is.na(rytickpos[1])) 
     rylabels <- pretty(rylim) 
    else rylabels <- rytickpos 
    if (min(rylabels) < rylim[1]) 
     rylabels <- rylabels[rylabels >= rylim[1]] 
    if (max(rylabels) > rylim[2]) 
     rylabels <- rylabels[rylabels <= rylim[2]] 
    axat <- rylabels * ymult + yoff 
    if (is.na(rylab.at)) 
     rylab.at <- mean(rytickpos) 
    if (!is.na(rylab.at)) 
     rylab.at <- rylab.at * ymult + yoff 
    color.axis(4, at = axat, labels = rylabels, axlab = rylab, #LINE 123 
     axlab.at = rylab.at, col = "black", #axlab.at = rylab.at, col = ifelse(is.na(rcol), 1, rcol), 
     cex.axis = axislab.cex, cex = axislab.cex) #LINE 125 
    par(mar = oldmar, new = FALSE, col.axis = "black") 
} 
+1

대단히 감사합니다. 나는 관리했다! :) – Lil