如何在不使用外部图像宿主的情况下,在由knitr生成的github上以降价方式显示图像?
我喜欢将包含多个R标记和标记文件的存储库上载到github 这是一个例子。这里有一个屏幕抓图如何在不使用外部图像宿主的情况下,在由knitr生成的github上以降价方式显示图像?,r,github,knitr,rstudio,R,Github,Knitr,Rstudio,我喜欢将包含多个R标记和标记文件的存储库上载到github 这是一个例子。这里有一个屏幕抓图 问题是图像无法显示。您可以单击图像,然后转到存储文件的位置。 引用的文件是: https://github.com/... /blob/.../myfigure.png 而我认为它需要参考 https://github.com/... /raw/.../myfigure.png 我考虑的事情: imgur:我可以通过添加以下代码来使用外部图像托管(例如): ```{r setup} opt
问题是图像无法显示。您可以单击图像,然后转到存储文件的位置。 引用的文件是:
https://github.com/... /blob/.../myfigure.png
而我认为它需要参考
https://github.com/... /raw/.../myfigure.png
我考虑的事情:
imgur:我可以通过添加以下代码来使用外部图像托管(例如):
```{r setup}
opts_knit$set(upload.fun = imgur_upload) # upload all images to imgur.com
````
但是,出于各种原因,我不想这样做(我在防火墙后面上传时遇到问题;速度很慢;这会产生不必要的依赖)
Rpubs:还有一个非常酷的。然而,在发布时,它似乎更适合于单个降价文档,而不是多个R降价文档。而且它没有在源R标记和标记文档之间提供如此紧密的联系
问题:
- 是否有使用R Markdown和knitr生成标记文件的工作流,当上载到github时,该文件允许标记文件显示存储在github存储库中的图像
opts_knit$set(base.url='https://github.com/.../raw/.../')
查看更改和
另见
编辑[使用更新将base.url恢复为以前的值
关于切换,您可以将函数定义为
create_gitpath <- function(user, repo, branch = 'master'){
paste0(paste('https://github.com', user, repo, 'raw', branch, sep = '/'),'/')
}
my_repo <- create_gitpath(user, repo)
knit.github <- function(..., git_url ){
old_url <- opts_knit$get('base.url')
on.exit(opts_knit$set(base.url = old_url))
opts_knit$set(base.url = git_url)
knit(..., envir = parent.frame())
}
create\u gitpath在标记文件开头的以下代码是什么
``` {r setup,echo=FALSE,message=FALSE}
gitsubdir <- paste(tail(strsplit(getwd(),"/")[[1]],1),"/",sep="")
gitrep <- "https://github.com/mpiktas/myliuduomenis.lt"
gitbranch <- "master"
opts_knit$set(base.url=paste(gitrep,"raw",gitbranch,gitsubdir,sep="/"))
```
`{r设置,echo=FALSE,message=FALSE}
gitsubdir有一些选项可以使用base64编码魔法在html中嵌入图像,我不记得在哪里看到过这个though@baptiste这对降价有用吗?我的印象是,这只对HTML有效,但我还没有仔细研究。或者,您可以对生成的每个文档运行一个regexp,这将更改foo/blob/..
到foo/raw/..
在标记文件中。如果您愿意,我可以在标记文件中对图像进行base64编码;请向我提交一个问题:标记与HTML在这里没有什么不同;这只是![](url)的问题
或
@JeromyAnglim我几乎完成了这项工作,但不幸的是,我刚刚意识到github在其标记中不支持base64编码的图像…叹气。刚刚联系了他们。+1谢谢。我目前正在探索如何以优雅的方式实际工作,特别是当您在多个文件夹中有多个R标记文件时还有一个挑战是将其合并到makefile中,以便只在最后添加,就在推送到github之前。当然,如果您在将图像提交到github之前添加它,那么您在初步数据分析中就看不到图像。您所要做的就是使用运行knit
de>base.url=''
直到您想要推送到github,然后使用github url进行最后一次运行。然后,当您想要更新代码时,将其返回base.url='',然后在更新时将其更改回github base.url,并确保为每个子文件夹中的每个R标记文件键入所有内容。我同意这一点这并不难,但我仍然认为让它变得优雅和自动化还有一个小任务,特别是当你有一个包含许多R降价文件的存储库时。例如,我有一个包含20多个单独R降价文件夹的回购。但我想我开始陷入一个与我最初提出的问题略有不同的问题。也许你需要调用knit.github
后,将base\u url
设置为其以前的值?此解决方案和下面的解决方案对我不起作用。我仍然看到“R项目图像”例如,作为一个链接,但没有图像。+1谢谢。我认为类似的东西将是一个很好的构建块,作为某种类型的makefile的一部分,可能是一个sed脚本,可以根据需要插入此命令。什么时候不需要?我想你只想在github上查看图形?