-3

我们正在尝试使用 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()
4

2 回答 2

3

我已经快速浏览了代码:实际转换似乎是通过这一行完成的:

nres <- 字符(lx - 1)

tableClassIntervals(of classInt) 的代码中。你可以检查这个函数,看看它只是忽略了它的digits参数。您可能想将此信号通知包作者。

仍然:正如@Gavin 所说,重现性会很好。

于 2011-06-28T09:47:28.707 回答
2

尝试将scipen选项设置为正数而不是 od digits

opts <- options(scipen = 10)

但很难看出这是否会解决问题,因为您的代码不起作用,因为我们没有 shapefile。

于 2011-06-28T08:53:41.083 回答