Как убрать десятичную букву из диаграмм в коде R? - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь получить диаграммы (.png) из данных с SQL Server, используя ODBC в R. Код работает нормально, но метка на оси Y находится в десятичных числах.например.10,0%, 20,0%, 30,0%, 40,0% и 50,0%.

Я не хочу, чтобы это было в десятичной позиции по оси Y.Пожалуйста, помогите мне избавиться от этой проблемы.

Пожалуйста, посмотрите мой код ниже и помогите мне с этой проблемой.

Выходная диаграмма

# produce plots for all the pids 
for (i in 1:n_pids){
  print(paste0('working on ', i, ' pid ', def_dates$pid_names[i]))
  pidx <- def_dates[i,'pid']
  sub <- res[pid == pidx]

  png(file = paste0(pidx, '-misrated.png'), width = 750, height = 350, units = "px", pointsize = 12 )
  par(oma = c(5, 1,1,1), mar=c(0,3,3,3))
  with(sub, plot(date, edf1/100,
                 type="l", col="blue", 
                 ylim=c(0,.5), bty='n', 
                 xlab=NA, ylab=NA, cex=0.9,lwd=2,
                 axes=F,xaxs = "i",yaxs="i",
                 panel.first = 
                   c(abline(h = seq(0,1,.1), lty = 2, col = 'grey') 
                     ,NULL)

  ))
  abline(v=as.Date(def_dates[def_dates$pid == pidx,'def'],'%m-%d-%Y'),
         col="red",lwd=2)

  axis.Date(1, at = seq(min(sub$date), max(sub$date), length.out = 10),
            format= "%b %Y") # bottom dates

  var1= seq(0,0.5,.1)#pretty_breaks(n=5)(sub$edf1/100)
  axis(2, lwd=0,
       at=var1,
       label=percent(var1),
       las=1) # EDF values
  par(new=T)
  with(sub, plot(date, displaystring, type="l",
                 col="darkgreen", lwd=2,
                 axes=F,  xlab=NA, ylab=NA))
  axis(side = 4, 
       at=seq(1,NROW(unique(sub$displaystring))),
       labels=unique(sub$displaystring),
       lwd=0,cex=0.5,las=1,
       col="darkgreen"
  )
  par(oma = c(0,0,0,0))

  legend("bottom", legend=c("DENBURY RESOURCES INC [1-Yr EDF9]","MIS RATING"), xpd = TRUE, 
         horiz = TRUE,
         inset = c(0,0), bty = "n",
         col=c("blue", "darkgreen"), lty=1, cex = 1)

  dev.off()

    #ggsave(paste0(pidx, '-rated.png'), p, scale=3, height=3, width=6, unit="in")

}

1 Ответ

0 голосов
/ 05 декабря 2018

Я не могу поручиться за остальную часть кода, но единственная часть, которая влияет на ось Y здесь:

  axis(2, lwd=0,
       at=var1,
       label=percent(var1),
       las=1) # EDF values

Когда вы найдете scales::percent, страница справки делаетне кажется, чтобы дать простой способ контролировать десятичные разряды.Я предлагаю использовать для этого good-ole sprintf.

scales::percent(var1)
# [1] "0.0%"  "10.0%" "20.0%" "30.0%" "40.0%" "50.0%"

sprintf("%0.0f%%", 100*var1)
# [1] "0%"  "10%" "20%" "30%" "40%" "50%"

Таким образом, ваш полученный код будет:

  axis(2, lwd=0,
       at=var1,
       label=sprintf("%0.0f%%", 100*var1),
       las=1) # EDF values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...