在R中使用基本图形时,如何在地图上绘制纬度和经度轴时可能需要将上标添加到轴标签.
考虑这个例子:
plot(-100:-50, 50:100, type="n", xlab="", ylab="", axes=FALSE)
axis(1, seq(-100, -50, 10), labels=paste(abs(seq(-100, -50, 10)), "o", "W", sep=""))
axis(2, seq(50, 100, 10), labels=paste(seq(50,100,10), "o", "N", sep=""))
box()
Run Code Online (Sandbox Code Playgroud)
在地图周围生成一个漂亮的框架.使度数符号上标更好.
这通常可以在其他绘图功能中完成,例如mtext()和text()使用expression(paste(...))或substitute()在这种情况下如何操作?
首先一个警告:我张贴了这个问题,在这里上的超级用户,但它显然是错误的地方要问R课题.我认识到这不是一个直接的编程问题,但我相信它可以通过改变图的产生方式来解决(即通过适当的编码).所以我希望读者认为这适合论坛.
R图通常完全由矢量图形元素(即点,线,多边形,文本)组成.R允许您以各种格式保存图形(或复制粘贴),包括各种栅格格式,PDF格式或Windows元文件.
我通常将图像保存为PDF并打印出来.这使得图像完全按照我的预期在纸上呈现,质量最高.我避免使用光栅格式(例如JPG,TIFF)进行打印,因为质量不可避免,而且出版商更喜欢矢量格式.
但是,我需要使用Microsoft Word 2007制作一个大型多页桌面发布文档,因此不能使用PDF.当我从元文件导入我的数字,或直接从R复制并粘贴到Word时,图像的屏幕和打印渲染都会略有变化(例如,多边形及其填充会略微错位).
鉴于我想保持高矢量质量(而不是使用光栅格式),我可以做些什么来使R矢量图形与Word一起使用?(当然Sweave和LaTeX会很好,但同样不是一个现实的选择).
考虑这个例子:
plot(c(1:100), c(1:100), pch=20)
## Copy and paste to Word 2007 as Windows metafile
## Print
## Quality is poorer (e.g. dot fills misaligned with borders)
pdf("printsPerfectly.pdf")
plot(c(1:100), c(1:100), pch=20)
dev.off()
## Now print PDF
## Quality is as expected
Run Code Online (Sandbox Code Playgroud)
编辑:继续@John的建议我把它作为EPS postscript文件(见下文)制作,将它作为图片插入Word.因为最终它将从Word创建的PDF打印,我使用默认的Word 2007设置将其转换为PDF,将其打印在我的HP Laserjet P1606dn激光打印机上,然后拍摄照片以说明多边形边框和填充不对齐的问题(图像左侧,下方).我也直接用R从PDF制作它pdf()并使用PDF打印并拍摄照片(右下图).

它可能看起来像小土豆!但是当你为了达到高质量而遇到很多麻烦时,最终被挫败是令人失望的.此外,这里并不是很明显,但数字并不像PDF(右)那样高质量(左),而忽略了对照片的关注差异.
我正在寻找一种在R中的图形设备上绘制照片JPEG图像的简单方法.
例如,使用该raster包的以下内容似乎忽略了图像中的颜色属性.我想以原始颜色再现照片:
library(raster)
library(rgdal)
myJPG <- raster("colourfulPic.jpg")
plot(myJPG) ## Recolours JPEG;
Run Code Online (Sandbox Code Playgroud)
我发现该软件包rimage最近已经存档,似乎不再推荐使用(见这里),如果它确实能够满足我的需求.
类似地EBImage,BioConductor可能也可以工作,不是为64位Windows构建的,不幸的是我需要这种架构.
请告诉我,我错过了基本图形中非常明显的东西?
我想在栅格地图上识别线性要素,例如道路和河流,并SpatialLines使用R 将它们转换为线性空间对象(类).
的raster和sp封装可以用于从特征栅格到多边形矢量对象(转换SpatialPolygons类别). rasterToPolygons()将从栅格中提取特定值的单元格并返回多边形对象.可以使用dissolve=TRUE选项简化产品,该选项调用rgeos包中的例程来执行此操作.
这一切都很好,但我更喜欢它是一个SpatialLines对象.我怎样才能做到这一点?
考虑这个例子:
## Produce a sinuous linear feature on a raster as an example
library(raster)
r <- raster(nrow=400, ncol=400, xmn=0, ymn=0, xmx=400, ymx=400)
r[] <- NA
x <-seq(1, 100, by=0.01)
r[cellFromRowCol(r, round((sin(0.2*x) + cos(0.06*x)+2)*100), round(x*4))] <- 1
## Quick trick to make it three cells wide
r[edge(r, type="outer")] <- 1
## Plot
plot(r, legend=FALSE, axes=FALSE)
Run Code Online (Sandbox Code Playgroud)

## Convert linear feature to a …Run Code Online (Sandbox Code Playgroud) 我正在准备一个包含第三方编译可执行文件的R包.计划是使用system()调用将其与R连接.我有权分发这个可执行文件,但不是它的源代码.不幸的是,它仅在Windows 32位下编译,并且不可能在不同的体系结构下轻松地重新编译它.
了解此程序包的受众有限,应如何分发可执行文件?我也认识到,由于这个原因,CRAN不允许这样做.
例如,应该将可执行文件包含在软件包安装的/ bin /子文件夹中,或者应该在软件包本身安装时以某种方式下载可执行文件.
此外,如果在这种情况下我面临什么许可问题?
我正在使用R创建一个多绘图布局图,并且可以方便地在其中一个图中创建多行文本框.
我熟悉使用Sweave来组合图像,文本和R代码,但由于各种原因,我需要将其作为R中生成的单页图.因此需要绘制文本框而不是使用Latex标记.
现有包中是否有可以执行此操作的功能?如果做不到这一点,有人会建议一个简单的方法来处理这个问题
考虑这种情况:
## Specify the dimensions of the plot
## that we require
win.graph(8,4)
## Two panel layout
layout(matrix(1:2, 1, 2))
par(mar=c(0,0,0,0))
## Left panel shows picture
plot(rep(1:10, each=10), rep(1:10, times=10),
col=rainbow(100), pch=20, cex=5)
## Right panel discusses the data
plot.default(c(0,100), c(0,100), type="n", axes=FALSE,
ylab="", xlab="")
text(20, 30, "It would be great if this text box\n
could handle word wrap, and ideally given the size\n
of the font (i.e. the cex parameter) and the area\n
of the plot …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种有效的方法来简化整数向量作为汇总字符串,以便将其格式化为适合表格单元格.
例如:
c(1, 2, 3, 4, 6, 8, 9, 10)Run Code Online (Sandbox Code Playgroud)
应该产生
"1-4, 6, 8-10"Run Code Online (Sandbox Code Playgroud)
这在打印向量中的所有元素将很快使表格不可读的情况下变得特别有用.
例如
c(1:50, 53, 89:120)Run Code Online (Sandbox Code Playgroud)
应该产生
"1-50, 53, 89-120"Run Code Online (Sandbox Code Playgroud) 给定一个data.frame只包含字符串的列(没有因子),其中一些应保留字符串,其中一些是整数,其中一些是双精度,我怎么能猜出转换字符串最合适的存储模式?
fixDf <- data.frame(isChar=c("A", "B", "C"),
isDouble=c("0.01", "0.02", "0.03"),
isInteger=c("1", "2", "3"), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种简单的方法可以确定需要完成以下操作,然后执行此操作:
mode(fixDf[, "isDouble"]) <- "double"
mode(fixDf[, "isInteger"]) <- "integer"
Run Code Online (Sandbox Code Playgroud)
理想情况下,遇到错误时,处理此错误的函数会使数据保持字符串形式.
编辑:我略微重写了标题问题,并调整了文本以回应@DWin的评论.
组合投影和未投影的地理图层可能具有挑战性.通常,似乎有些转型是必要的,因为地理层来自不同的产品和出版商.
我知道R有几个工具来执行地理变换.例如:
Spatial*在sp封装中,spTransform()在功能rgdal包都可以使用; 和,Raster*在raster封装中,projectRaster()可以使用的功能.这是我想要在R中完成的特定任务:转换为UTM网格区域15N(基准:NAD83)描述UTM网格区域15N(基准面:NAD27)投影中的湖泊的多边形层(这是ESRI shapefile格式).
我熟悉使用expression()和bquote()在R中的文本基础图形中绘制特殊Tex时的标记.但是如果没有解析器抛出错误,如何做"近似等于".我指的是?plotmath确定标记时.
plot(c(1,100), c(1,100), type="n", axes=FALSE, xlab="", ylab="")
# This works
text(50, 80, expression(paste("The area is 24 ", km^2)))
# This doesn't
text(50, 50, expression(paste("Reginald is ", %~~% , "14 years old")))
Run Code Online (Sandbox Code Playgroud) 在PostgreSQL中使用MySQL外来数据包装器,有一个不错的技巧,使您可以快速将有关MySQL数据库中所有表的信息告知Postgres。如下:
IMPORT FOREIGN SCHEMA my_favourite_database FROM SERVER mysql_server INTO public;
没有模拟DROP FOREIGN SCHEMA。尽管DROP FOREIGN TABLE可以对每个表进行零碎处理,但这也需要知道外部数据库中所有表的名称。我也不确定此命令是否实际上DROP是外部数据库中的表还是仅是与其连接的表。
一个人将如何自动地做到这一点。
我想同样的方法将适用于PostgreSQL中的任何外部数据包装器