Метки данных идут поверх других - PullRequest
0 голосов
/ 24 апреля 2019

Я использую функцию пользовательской панели (найдено здесь ) для отображения меток данных на графике.

require(HH)     # also loads: lattice, grid, latticeExtra

# custom panel function
myPanelFunc <- function(...){
  panel.likert(...)
  vals <- list(...)
  DF <- data.frame(x=vals$x, y=vals$y, groups=vals$groups)

  ### some convoluted calculations here...
  grps <- as.character(DF$groups)
  for(i in 1:length(origNames)){
    grps <- sub(paste0('^',origNames[i]),i,grps)
  }

  DF <- DF[order(DF$y,grps),]

  DF$correctX <- ave(DF$x,DF$y,FUN=function(x){
    x[x < 0] <- rev(cumsum(rev(x[x < 0]))) - x[x < 0]/2
    x[x > 0] <- cumsum(x[x > 0]) - x[x > 0]/2
    return(x)
  })

  subs <- sub(' Positive$','',DF$groups)
  collapse <- subs[-1] == subs[-length(subs)] & DF$y[-1] == DF$y[-length(DF$y)]
  DF$abs <- abs(DF$x)
  DF$abs[c(collapse,FALSE)] <- DF$abs[c(collapse,FALSE)] + DF$abs[c(FALSE,collapse)]
  DF$correctX[c(collapse,FALSE)] <- 0
  DF <- DF[c(TRUE,!collapse),]

  DF$perc <- ave(DF$abs,DF$y,FUN=function(x){x/sum(x) * 100})
  ###

  panel.text(x=DF$correctX, y=DF$y, label=paste0(round(DF$perc,1),'%'), cex=0.7)
}

data(ProfChal)
origNames = colnames(ProfChal) # required for myPanelFunc
likert(x=Question ~ . , data=ProfChal[ProfChal$Subtable=="Employment sector",]
       ,main='Is your job professionally challenging?' # title
       ,as.percent=TRUE
       ,panel=myPanelFunc
)

Однако на полученном графике я вижу некоторые метки поверх других. Почему это происходит только для некоторых ярлыков, а не для всех?

results - custom panel function , HH package, Likert function

1 Ответ

0 голосов
/ 24 апреля 2019

Не уверен, что я прав, поскольку я не могу видеть данные, но похоже, что в первой строке (Академическая (не учащаяся)) 0 отвечает категорически не согласен, а в 4-й (Частный консультант / работающий не по найму) - 0, категорически не согласен или не согласенчто, вероятно, будет причиной проблемы.Я думаю, что решение этой проблемы может заключаться в том, что если 0 ответил на опцию, удалите метку.

...