Преобразование десятичного числа к смешанному основанию (основа) число

Копаться в гробах не мой любимый хак, но он может служить своей цели:

# generate plot
# (I used a smaller base_size because my computer screen is small)
p <- ggplot(grouped,aes(ay,gruplar,fill=value)) + 
  geom_raster(aes(fill = value),na.rm = T) + 
  facet_grid(anagruplar~yil,scales = "free",space = "free",switch = "y") + 
  labs(x="", y="") +
  theme_minimal(base_size = 10) +
  theme(strip.placement = "outside",
        strip.text.y = element_text(angle = 90),
        axis.text.y.left = element_text(hjust = 0, size=10))

# examine ggplot object: alignment is off
p 

# convert to grob object: alignment is unchanged (i.e. still off)
gp <- ggplotGrob(p)
dev.off(); grid::grid.draw(gp)

# change viewport parameters for left axis grobs
for(i in which(grepl("axis-l", gp$layout$name))){
  gp$grobs[[i]]$vp$x <- unit(0, "npc")     # originally 1npc
  gp$grobs[[i]]$vp$valid.just <- c(0, 0.5) # originally c(1, 0.5)
}

# re-examine grob object: alignment has been corrected
dev.off(); grid::grid.draw(gp)

plot

6
задан nickf 17 April 2009 в 06:55
поделиться

3 ответа

Псевдокод:

bases = [24, 60, 60]
input = 86462                       #One day, 1 minute, 2 seconds
output = []

for base in reverse(bases)
    output.prepend(input mod base)
    input = input div base          #div is integer division (round down)
6
ответ дан 9 December 2019 в 22:39
поделиться

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

  var theNumber = 313732097; // ms smhd var оснований = [1000, 60, 60, 24, 365]; var placeValues ​​= []; // инициализируем массив var currPlaceValue = 1; for (var i = 0, l = base.length; i  = 0; --v) {output [v] = Math.floor (theNumber / placeValues ​​[v]); theNumber% = placeValues ​​[v]; } console.log (выходной); // [97, 52, 8, 15, 3] -> 3 дня, 15 часов, 8 минут, 52 секунды, 97 миллисекунд 
1
ответ дан 9 December 2019 в 22:39
поделиться

Число -> установлено:

factors = [52,7,24,60,60,1000]
value = 662321
for i in n-1..0
  res[i] = value mod factors[i]
  value = value div factors[i]

И наоборот:

Если у вас есть такие числа, как 32 (52), 5 (7), 7 (24), 45 ( 60), 15 (60), 500 (1000), и вы хотите, чтобы это было преобразовано в десятичное число:

Возьмите число n, умножьте его на коэффициент n-1, продолжайте для n-1..n = 0

values = [32,5,7,45,15,500]
factors = [52,7,24,60,60,1000]

res = 0;
for i in 0..n-1
  res = res * factors[i] + values[i]

И у вас есть номер.

3
ответ дан 9 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: