fmt
tidak ada hubungannya dengan jarak item legenda. Untuk penjelasan rinci tentang fmt
silakan lihat Menggunakan Perintah Memformat String C-style . Cukup tempelkan cuplikan kode berikut di R
konsol Anda untuk melihat perbedaannya (pi ~ 3.14):
sprintf("%f", pi)
sprintf("%.3f", pi)
sprintf("%1.0f", pi)
sprintf("%5.1f", pi)
sprintf("%05.1f", pi)
sprintf("%+f", pi)
sprintf("% f", pi)
sprintf("%-10f", pi) # left justified
sprintf("%e", pi)
sprintf("%E", pi)
sprintf("%g", pi)
sprintf("%g", 1e6 * pi) # -> exponential
sprintf("%.9g", 1e6 * pi) # -> "fixed"
sprintf("%G", 1e-6 * pi)
choro.legend()
panggilan legend()
internal. Untuk mengurangi jarak horizontal antara item legenda, Anda harus mengubah text.width
parameter legend()
fungsi. Sayangnya choro.legend
tidak menyediakan parameter untuk ditetapkan secara text.width
eksternal, melainkan menghitung secara internal. Saya menambahkan space_reduction
parameter ke choro.legend
dan sedikit memodifikasi fungsi asli sebagai berikut:
choro.legend <- function (px, py, sh, under = "under", over = "over", between = "to",
fmt = "%g", cex = 1, space_reduction = 0, ...)
{
x = sh$breaks
lx = length(x)
if (lx < 3)
stop("break vector too short")
res = character(lx + 1)
res[1] = paste(under, sprintf(fmt, x[1]))
for (i in 1:(lx - 1)) res[i + 1] <- paste(sprintf(fmt, x[i]),
between, sprintf(fmt, x[i + 1]))
res[lx + 1] <- paste(over, sprintf(fmt, x[lx]))
maxwidth <- max(strwidth(res)) - space_reduction
temp <- legend(x = px, y = py, legend = rep(" ", length(res)),
fill = sh$cols, text.width = maxwidth, cex = cex, ...)
text(temp$rect$left + temp$rect$w, temp$text$y, res, pos = 2,
cex = cex)
}
Simpan potongan ini dalam file skrip R dan source
itu. Cuplikan kode yang dapat direproduksi akan seperti berikut:
library(GISTools)
data(newhaven)
blocks
val <- blocks@data$POP1990
shade <- auto.shading(val)
choropleth(blocks, v= val, shade)
choro.legend(514000, 175000,shade,title='My Legend',cex=.8, bty = "n", fmt = "%0.0f",
space_reduction=4000)
Secara bertahap memperkecil / menambah space_reduction
parameter untuk mencapai hasil yang diinginkan.