Значения в R легендах сокращены до Ne + n формы - PullRequest
0 голосов
/ 28 июня 2011

Мы пытаемся напечатать некоторые финские карты лесного хозяйства, используя R. Карта нарисована красиво, но некоторые цифры в легендах показаны не во всей их длине, а в формате 3e + 06.

Это происходит, когда размер строки в легенде слишком длинный. Это может быть проблемой для некоторых пользователей.

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

library(maptools)
library(RColorBrewer)
library(classInt)
Sys.setlocale(category = 'LC_ALL', locale = 'fi_FI@euro')

png(file="tupatmp/950fi_4.png", height=600, width=600, res=100)

basemap <- readShapePoly("shp/metsakeskus.shp",IDvar="mknro_1")
xx <- basemap[basemap$att.data$mknro_1 %in% c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14)]
csv <- read.csv("tupatmp/950fi.csv")
plotvar <- csv$k_4
nclr <- 8
plotclr <- brewer.pal(nclr,"RdYlGn")

options(digits = 10)
class <- classIntervals(plotvar,
                        nclr,
                        style="fixed",
                        fixedBreaks=c(0,5000,10000,15000,20000,250000,3000000,3500000,40000000))
colcode <- findColours(class, plotclr,digits = getOption(digits))
plot(xx,col=colcode)

par(family="sans")
par(mgp = c(0,1,0))

title(main = "Nettotulojen nykyarvon maksimointi 5% korkokannalla 2037
Ahvenanmaa, Lounais-Suomi, Häme-Uusimaa, Kaakkois-Suomi, Pirkanmaa, Etelä-Savo, Etelä-Pohjanmaa, Keski-Suomi, Pohjois-Savo, Pohjois-Karjala, Kainuu, Pohjois-Pohjanmaa, Lappi, Rannikko  (pohjanmaa), Rannikko  (etelärannikko)",
      sub = "Kantohinta-arvo Käytönrajoitus: Puuntuotannon ulkopuolella", 
      font.main=2,cex.main=0.9,cex.sub=0.9)

legend(2730000,7315000,
       title="1000eur",legend=names(attr(colcode,"table")), 
       fill=attr(colcode,"palette"),
       border="black", cex=0.8,bty="o", xpd="FALSE")
dev.off()

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

Я быстро пробежался по коду: фактическое преобразование выглядит следующим образом:

nres <- символ (лк - 1) </p>

В коде для tableClassIntervals (из classInt). Вы можете проверить эту функцию, чтобы увидеть, что она просто игнорирует свой аргумент digits. Возможно, вы захотите сообщить об этом авторам пакета.

Тем не менее: как сказал @Gavin, воспроизводимость была бы хорошей.

2 голосов
/ 28 июня 2011

Попробуйте установить для параметра scipen положительное число вместо od digits:

opts <- options(scipen = 10)

но трудно понять, решит ли это проблему, поскольку ваш код не работает, потому что у нас нет шейп-файла.

...