小编geo*_*ory的帖子

sprintf似乎忽略了一些特殊字符

这是一个错误吗?

> nchar(sprintf("%-20s", "Sao Paulo"))
[1] 20
> nchar(sprintf("%-20s", "São Paulo"))
[1] 19
Run Code Online (Sandbox Code Playgroud)
> sessionInfo()
R version 3.2.4 (2016-03-10)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.4 (El Capitan)

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.2.4    fortunes_1.5-2
Run Code Online (Sandbox Code Playgroud)

r

9
推荐指数
1
解决办法
175
查看次数

在R中为网格箭头指定gpar设置

我正在开发一个比例大小的箭头图,并且有一个尺寸,方向和箭头尺寸的工作流程,但箭头有几个问题:1.它们有圆形连线和2.它们不是' t关闭(见右下角)即使type='closed'.

require(ggplot2)
require(grid)
d = data.frame(x = 1:10, y = 0, size = 1:10)

ggplot(d, aes(x, y, size = size)) +
  geom_segment(aes(xend = x, yend = y + size), 
               arrow = arrow(length = unit(d$size, "mm"), type='closed')) +
  scale_size(range = c(2, 4))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

箭头基于网格图形,但我无法弄清楚如何指定设置. get.gpar()收益率:

$lineend
[1] "round"

$linejoin
[1] "round"
Run Code Online (Sandbox Code Playgroud)

gpar(linejoin = 'mitre', lineend = 'butt')不会改变这一点.有没有办法改变这些设置?提前致谢.


编辑

绘制的图片包括grid.segments箭头添加:

在此输入图像描述

r ggplot2

8
推荐指数
1
解决办法
1905
查看次数

在ggplot中嵌入一个子图(ggsubplot)

我正在尝试使用ggplot重新创建这个基本生成的绘图,但是我想使用比这里演示的更优雅的工作流程 ,它直接依赖于grid::viewport().

在此输入图像描述

使用ggsubplot,我试过:

require(ggplot2)
require(ggsubplot)
d = data.frame(x = sort(rlnorm(300)), y = sort(rlnorm(300)), grp = 1)
ggplot(d, aes(x, y)) + geom_point() + theme_bw() +
  scale_x_continuous(limits=c(0, 10)) + scale_y_continuous(limits=c(0, 10)) +
  geom_subplot(data=d, aes(x=5, y=1, group = grp, subplot = geom_point(aes(x, y))), width=4, height=4)
Run Code Online (Sandbox Code Playgroud)

产生了以下令人失望的结果:

在此输入图像描述

显然需要一些工作,但如果将轴,标签和网格添加到子图中,它就不远了.知道怎么做吗?我找不到任何这方面的例子,ggsubplot默认删除这些元素.提前致谢.

r ggplot2

8
推荐指数
2
解决办法
4296
查看次数

ggplot中按比例大小的符号

使用ggplot绘制比例区域符号似乎需要使用sqrt()才能实现真正的比例:

require(ggplot2)

t <- data.frame(x=rep(c(1:5),5), y=rep(c(1:5),each=5), s=round(seq(1,100,length.out=25)))
t
p <- ggplot(data=t, aes(x=x,y=y))

# direct size-to-variable mapping
p + geom_point(aes(size=s), pch=22, fill='#0000FF75', col=NA) +
  scale_size(range = c(1, 40)) +
  geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1)

# proportional area size-to-variable mapping
p + geom_point(aes(size=sqrt(s)), pch=22, fill='#0000FF75', col=NA) +
  scale_size(range = c(1, 40)) +
  geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如您所看到的那样,当我需要标签显示原始数据时,这些标签是根的.尝试过使用scale_size选项但没有任何效果.任何人都知道修复此问题,或者是否可能有一个模糊的设置来实现比例区域大小映射?

提前致谢.

r ggplot2

7
推荐指数
1
解决办法
1990
查看次数

Windows中的多个shell命令

我正在尝试在R中复制一个shell命令,并且无法弄清楚如何将命令串在一起.这只返回工作文件夹的内容(system()由于某种原因失败):

> shell("dir")
 Volume info ..
 Directory of E:\Documents\R
 contents are listed..
Run Code Online (Sandbox Code Playgroud)

现在让我们尝试导航到C盘并运行dir(不使用明显的dir C:)..

> shell("cd C:")
C:\
> shell("dir")
 Volume in drive E is GT
 etc..
Run Code Online (Sandbox Code Playgroud)

所以似乎命令不能单独输入,因为shell不记得工作目录.所以..

> (cmd = "cd C:
+ dir")
[1] "cd C:\ndir"
> shell(cmd)
C:\
Run Code Online (Sandbox Code Playgroud)

没有运气,因为没有报告C:文件夹.我尝试过的其他方法也失败了.感谢任何想法.

r

6
推荐指数
2
解决办法
983
查看次数

R中地图的更好的山体阴影

我正在为一些地形图绘制改进的山体阴影.记录的基本山体阴影工作流程image()是:

require(raster)
alt = getData('alt', country='CHE')
slope = terrain(alt, opt='slope')
aspect = terrain(alt, opt='aspect')
hill = hillShade(slope, aspect, 40, 270)
plot(hill, col=grey(0:100/100), legend=FALSE, main='Switzerland')
plot(alt, col=rainbow(25, alpha=0.35), add=TRUE)
Run Code Online (Sandbox Code Playgroud)

此图像显示plot(hill..)之前plot(alt..)应用:

在此输入图像描述

该方法创建一个实心的灰色底层山体阴影,其上半透明地绘制其他数据层(例如高程阴影).这种方法的问题是(a)平坦地形的中性色(RBG(202,202,202),'#CAPACA')严重遮蔽整个模型,这(b)防止多个阴影层,例如'瑞士山体阴影使用'方法.

我可以想象一个将光栅转换为矩阵并将山体阴影作为数值乘数应用于其他层的亮度的解决方法,但这看起来并不优雅(尽管我可能错了).我想知道是否有人在这方面有任何想法或(最好)经验?提前致谢.

gis r

6
推荐指数
1
解决办法
2713
查看次数

当使用coord_map设置限制时,ggplot map plot失败

我正试图将地图绘制限制在特定区域. 因为后者弄乱了多边形,所以coord_map 优先选择scale_x_continuous和y等价.但在这里我发现它因某种原因失败了.这是我的代码(下载一个57kb的shapefile):

require(maptools)
require(ggplot2)
download.file('https://dl.dropboxusercontent.com/u/46043231/UK.zip', "uk.zip", method="internal", mode="wb")
unzip('uk.zip')
uk = readShapePoly('uk_outline_1000m.shp')
print(bbox(uk))
        min       max
x  259.9625  655566.4
y 7211.7025 1218558.9
uk2 = fortify(uk)
(p = ggplot(uk2, aes(x=long, y=lat, group=group)) + geom_polygon() + coord_equal())
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是当coord_map使用时,情节消失了:

p + coord_map(xlim=c(0, 630000), ylim=c(0, 1000000))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

知道发生了什么事吗?

maps r ggplot2

6
推荐指数
1
解决办法
2438
查看次数

ggplot无法绘制最小点

我发现当scale_size_area数据范围跨越几个数量时,使用最小点绘制点时会被省略.由于在某处变为零而可能出现的错误?

require(ggplot2)
d = data.frame(x=1:4, y=rep(1,4), v=10^(1:4))

ggplot(d, aes(x, y, size=v)) + geom_point() +
  geom_text(aes(label = v), size=2, col='red') +
  scale_size_area(max_size = 50) +
  theme(legend.position = "none")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2

6
推荐指数
1
解决办法
92
查看次数

条件矩阵邻接计算

我有一个矩阵,例如:

set.seed(1)
m = matrix(rep(NA,100), nrow=10)
m[sample(1:100,10)] = 1
m
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   NA   NA   NA   NA   NA   NA   NA   NA   NA    NA
 [2,]   NA   NA   NA   NA   NA   NA    1   NA   NA    NA
 [3,]   NA   NA   NA   NA   NA   NA   NA   NA   NA    NA
 [4,]   NA   NA   NA   NA   NA   NA   NA   NA   NA    NA
 [5,]   NA   NA   NA   NA   NA   NA   NA   NA   NA    NA
 [6,]    1   NA   NA   NA …
Run Code Online (Sandbox Code Playgroud)

r matrix

6
推荐指数
1
解决办法
92
查看次数

将自定义图像添加到ggplot facets

我想为每个方面添加自定义图像.使用annotation_custom复制所有方面的图像,例如:

require(ggplot2); require(grid); require(png); require(RCurl)

p = ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point() + facet_wrap(~Species)

img1 = readPNG(getURLContent('https://cdn2.iconfinder.com/data/icons/animals/48/Turtle.png'))
img2 = readPNG(getURLContent('https://cdn2.iconfinder.com/data/icons/animals/48/Elephant.png'))
img3 = readPNG(getURLContent('https://cdn2.iconfinder.com/data/icons/animals/48/Hippopotamus.png'))

a1 = annotation_custom(rasterGrob(img1, interpolate=TRUE), xmin=7, xmax=8, ymin=3.75, ymax=4.5)
a2 = annotation_custom(rasterGrob(img2, interpolate=TRUE), xmin=7, xmax=8, ymin=3.75, ymax=4.5)
a3 = annotation_custom(rasterGrob(img3, interpolate=TRUE), xmin=7, xmax=8, ymin=3.75, ymax=4.5)

p + a1
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

是否有另一种方法可以实现这一点,从而img1-3正确填充各个方面?

r ggplot2

6
推荐指数
1
解决办法
751
查看次数

标签 统计

r ×10

ggplot2 ×6

gis ×1

maps ×1

matrix ×1