sym*_*ush 5 r ggplot2 shiny extrafont
我可以自定义字体ggplot:
library(extrafont)\n\nwindowsFonts()\nfont_import(pattern = "comic", prompt = FALSE)\nloadfonts(device = "win")\nwindowsFonts()\n\nggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) + \n geom_line(position="jitter", color="red", size=2) + theme_bw() +\n theme(text=element_text(size=16, family="Comic Sans MS"))\nRun Code Online (Sandbox Code Playgroud)\n\n这呈现为:
\n\n\n\n\n\n我还可以将该图和 extrafont 集成到一个闪亮的应用程序中,该应用程序在本地运行,如下所示:
\n\nlibrary(ggplot2)\nlibrary(extrafont)\nlibrary(shiny)\n\nfont_import(paths = "www", pattern = "comic", prompt = FALSE)\nloadfonts()\nprint(fonts())\n\nui <- fluidPage(plotOutput("plot"),textOutput("fonts"))\n\nserver <- function(input, output) {\n output$plot <- renderPlot({\n ggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) + \n geom_line(position="jitter", color="red", size=2) + theme_bw() +\n theme(text=element_text(size=16, family="Comic Sans MS"))\n })\n output$fonts <- renderText(print(fonts()))\n}\n\nshinyApp(ui = ui, server = server)\nRun Code Online (Sandbox Code Playgroud)\n\n但是,当我尝试将其部署到shinyapps.io 时,出现错误:
\n\n\n\n\n应用程序无法启动(以代码 1 退出)。
\n\n使用 R 注册字体 扫描 www 中的 ttf 文件 ... 从 .ttf 文件中提取 .afm\n 文件...\n /srv/connect/apps/21-comic-font/www/comici.ttfWarnung in gzfile(dest, \n "w") 参见 komprimierte Datei\n \'/opt/R/3.4.3/lib/R/library/extrafontdb/metrics/comici.afm.gz\' nicht\n \xc3\xb6ffnen。格伦德事件。值 [3L] 中的“权限被拒绝” Fehler :\n kann Verbindung nicht \xc3\xb6ffnen Ruft auf: local ... tryCatch ->\n tryCatchList -> tryCatchOne -> Ausf\xc3\xbchrung angehalten
\n
我试图通过合并这里的答案来解决这个问题。我将.ttf文件添加到该www目录,并将extrafontdb包源添加到该r-lib目录。(当然,我部署了两者......)。
完整的app.R文件现在如下所示:
.libPaths(c(\'r-lib\', .libPaths()))\ninstall.packages(\'r-lib/extrafontdb_1.0.tar.gz\',type = \'source\',repos = NULL)\n\nlibrary(ggplot2)\nlibrary(extrafontdb)\nlibrary(extrafont)\nlibrary(shiny)\n\nfont_import(paths = "www", pattern = "comic", prompt = FALSE)\nloadfonts()\nprint(fonts())\n\nui <- fluidPage(plotOutput("plot"),textOutput("fonts"))\n\nserver <- function(input, output) {\n output$plot <- renderPlot({\n ggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) +\n geom_line(position="jitter", color="red", size=2) + theme_bw() +\n theme(text=element_text(size=16, family="Comic Sans MS"))\n })\n output$fonts <- renderText(print(fonts()))\n}\n\nshinyApp(ui = ui, server = server)\nRun Code Online (Sandbox Code Playgroud)\n\n当我部署它时,我得到一个正在运行的应用程序和以下输出:
\n\n\n\n现在奇怪的是,renderText(print(fonts()))打印出Comic Sans MS。所以它看起来的字体已经加载了。但该图没有显示正确的字体。
这是为什么?我该如何解决它?
\n我找到了一个似乎可以工作的解决方案shinyapps.io (但不能在本地工作,因为它是一个仅限 Linux 的解决方案。不知何故,它不适用于我原来的“ComicSans MS”字体,但该字体无论如何都不漂亮..;-))
开始了:
这将导致以下app.R文件:
ibrary(ggplot2)
library(shiny)
dir.create('~/.fonts')
file.copy("www/IndieFlower.ttf", "~/.fonts")
system('fc-cache -f ~/.fonts')
ui <- fluidPage(plotOutput("plot"))
server <- function(input, output) {
output$plot <- renderPlot({
ggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) +
geom_line(position="jitter", color="red", size=2) + theme_bw() +
theme(text=element_text(size = 16, family = "IndieFlower"))
})
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
情节如下:
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |