我在markdown中创建了一个报告,并使用该函数render()
将代码编译成PDF.它在一个月前工作正常,但是当我现在运行代码时,它给了我一个错误:
Latexmk:这是Latexmk,John Collins,2016年4月22日,版本:4.45.创建输出:output/Medborgerskabstabeller99.pdf
tools :: file_path_as_absolute(output_file)出错:文件'output/Medborgerskabstabeller99.pdf'不存在
我用来创建PDF的渲染命令如下所示:
outfile <- file.path("output",paste0("Medborgerskabstabeller99"))
render(input = "Medborgerskabstabeller.Rmd",
encoding = "UTF-8",
output_file = paste0(outfile,".pdf"))
Run Code Online (Sandbox Code Playgroud)
首先,代码工作时没有出现"Latexmk"消息.
其次,我不知道为什么它说"Medborgerskabstabeller99.pdf"不存在,当它上面说它刚刚创建了文件时.
任何关于这个问题的建议都将受到高度赞赏!
当我编写Tufte讲义pdf时,一些数字的传说往往太大.我正在编织一个fig.fullwidth=TRUE
部分,并将fig.width=
参数从2改为50,看看它们是否有任何区别.当我指定时,fig.width=2
我最终得到一个小图,并且图例会大幅扩展以填充空间:
显然,下一步是尝试更大fig.width
但是这些在大约之后停止产生任何差异fig.width=10
(尽管仍然更好):
我假设fig.width是以英寸为单位的宽度,所以这是有意义的,因为我使用的纸张尺寸是A4大约8英寸.
我的问题是,如何进一步减小图例的大小,使其占用更合适的尺寸?我试过手动设置字体大小:
theme(legend.title = element_text(size = 9),
legend.text = element_text(size = 8))
Run Code Online (Sandbox Code Playgroud)
但是这些对编织者的传说没有任何影响(尽管它们会在按预期手动绘制时影响绘图).
最小的可重复示例(粘贴到.Rmd文件和编织):
---
title: "knitr: figure legend too big"
documentclass: article
classoption: a4paper
output: rmarkdown::tufte_handout
---
```{r setup, include=FALSE}
require("knitr")
require("rgdal")
require("rgeos")
require("maptools")
require("ggplot2")
```
```{r, fig.cap="test", fig.fullwidth=TRUE, fig.width=10}
# About 650k
download.file("https://census.edina.ac.uk/ukborders/easy_download/prebuilt/shape/England_gor_2011_gen.zip",
destfile = "regions.zip")
unzip("regions.zip")
regions <- readOGR(dsn = ".", "england_gor_2011_gen")
regions@data$test <- as.character(1:nrow(regions@data))
regions_f <- fortify(regions, region = "name")
regions_f <- merge(regions_f, regions@data, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在R中执行解散.我之前在QGIS中已经完成了这项工作,但我想在R中实现这一点,以便在可能的情况下与我的其他工作流程集成.
我有一个带有小地理多边形的ESRI shapefile(输出区域,如果你熟悉英国人口普查地理).我还提供了一个查找表,其中列出了所有OA代码及其关联的聚合地理代码.
我无法提供我正在处理的实际文件,但可比较的文件和下面的最小可重复示例:
和代码:
require("rgdal") # for readOGR
require("rgeos") # for gUnion
require("maptools")
unzip("soa.zip")
soa <- readOGR(dsn = "soa", "england_oac_2011")
proj4string(soa) <- CRS("+init=epsg:27700") # British National Grid
lookup <- read.csv("oa-soa.csv")
slsoa <- gUnaryUnion(soa, id = lookup$LSOA11CD)
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
slsoa <- unionSpatialPolygons(soa, lookup$$LSOA11CD)
Run Code Online (Sandbox Code Playgroud)
但我的理解是,由于我安装了(R)GEOS,因此无论如何都使用了rgeos包中的gUnion方法.
所以,我的问题是溶解似乎有效; 我没有收到错误消息,而length()函数表明我现在有更少的多边形:
length(soa@polygons) # 1,817
length(slsoa@polygons) # should be 338
Run Code Online (Sandbox Code Playgroud)
但是这些图看起来是相同的(即内部溶解没有起作用),如以下两个图所示:
plot(soa)
plot(slsoa)
Run Code Online (Sandbox Code Playgroud)
我环顾了一下互联网和stackoverflow,看看我是否可以解决我的问题,发现了几篇但没有成功的文章.
有没有人知道我做错了什么以及为什么情节不正常?
非常感谢.
我正在编写自己的R包,想绘制一个spatialPolygonsDataFrame
对象.如果我写它作为一个脚本,我想简单地加载必要的包(maptools
,rgdal
,和rgeos
用)library()
和情节有plot(x)
.
当写一个包来构建使用library()
是不建议,代替它的是通常通过将其加入到加载包Imports:
中NAMESPACE
.如果我这样做,我收到以下错误:
as.double(y)出错:无法强制将'S4'强制转换为'double'类型的向量
如果编写脚本,则通过加载maptools
包来更正此问题library()
.
我知道你可以加载单个方法用ImportMethodsFrom
在NAMESPACE
这样试图从导入情节方法maptools
使用这种方法,但有没有运气.当我在看NAMESPACE
的的maptools
包我找不到出口的阴谋方法.我已经看到有一个plot.Spatial
功能,我试图导入到我NAMESPACE
没有成功:
请求的"maptools"中找不到任何方法:plot.Spatial
最后,我已经尝试添加maptools
到Depends:
而不是Imports:
我的NAMESPACE
,这确实工作.这是规范的方式吗?为一种方法附加整个包装似乎有点过分(另外我不知道哪些功能被屏蔽了等等).加载必要工具以在自己编写的函数中绘制地图的最佳方法是什么?
编辑1:针对@哈克-R的问题,我不知道是否plot.Spatial是我需要的,或者即使它是正确的唯一方法.这是我有根据的猜测,这将使我能够绘制spatial
对象.
我有以下数据集:
dat = structure(list(C86_1981 = c("Outer London", "Buckinghamshire",
NA, "Ross and Cromarty", "Cornwall and Isles of Scilly", NA,
"Kirkcaldy", "Devon", "Kent", "Renfrew"), C96_1981 = c("Outer London",
"Buckinghamshire", NA, "Ross and Cromarty", "Not known/missing",
NA, "Kirkcaldy", NA, NA, NA), C00_1981 = c("Outer London", "Inner London",
"Lancashire", "Ross and Cromarty", NA, "Humberside", "Kirkcaldy",
NA, NA, NA), C04_1981 = c("Kent", NA, NA, "Ross and Cromarty",
NA, "Humberside", "Not known/missing", NA, NA, "Renfrew"), C08_1981 = c("Kent",
"Oxfordshire", NA, "Ross and Cromarty", "Cornwall and Isles …
Run Code Online (Sandbox Code Playgroud)