繁体   English   中英

华夫饼图 - FontAwesome 问题

[英]Waffle Chart - FontAwesome issue

在其他地方发布了一些关于这个问题的帖子,我已经尝试了解决方案,但似乎无法让它发挥作用。 如果有一种替代华夫饼的方法可以给我类似的输出,我也很想知道。

我正在尝试绘制此链接所见的华夫饼图

使用代码:

waffle(c(50, 30, 15, 5), rows = 5, use_glyph = "child", glyph_size = 6, 
title = "Look I made an infographic using R!")

但是,我收到错误消息:错误:未找到 FontAwesome。 通过以下方式安装: https ://github.com/FortAwesome/Font-Awesome/tree/master/fonts

所以我已经将它安装到我的 Mac 上,我可以看到字体出现在 Word 上。

我尝试使用此处的代码建议将其安装在 R 上:

library(extrafont)
font_import(pattern="FontAwesome")

我收到错误消息:正在扫描 /Library/Fonts/、/System/Library/Fonts、~/Library/Fonts/ 中的 ttf 文件...从 .ttf 文件中提取 .afm 文件... data.frame 中的错误(fontfile = ttfiles, FontName = "", stringsAsFactors = FALSE) :参数暗示不同的行数:0、1

我也试过:

font_import()

但我收到错误 Found FontName for 0 fonts。

谢谢您的帮助!

我也很难让字体与waffle一起使用。 但是,华夫饼图在 ggplot 中制作起来非常简单,因此您可以创建自己的waffle函数,使用emojifontextrafont做同样的事情

library(emojifont)
library(extrafont)
library(ggplot2)

my_waffle <- function(x, rows = 5, use_glyph = 'square', glyph_size = 6,
                      title = 'Waffle chart') {
  
  len <- sum(x)
  waffles <- seq(len) - 1
  nms <- if(is.null(names(x))) seq_along(x) else names(x)
  df <- data.frame(xvals = waffles %/% rows,
                   yvals = 1 - (waffles %% rows),
                   fill = factor(rep(nms, times = x)))
  
  ggplot(df, aes(xvals, yvals, color = fill)) +
    geom_text(label = fontawesome(paste('fa', use_glyph, sep = '-')), 
              family = 'fontawesome-webfont', size = glyph_size) +
    coord_equal(expand = TRUE) +
    lims(x  = c(min(df$xvals) - 1, max(df$xvals) + 1),
         y  = c(min(df$yvals) - 1, max(df$yvals) + 1)) + 
    theme_void(base_size = 16) +
    labs(title = title, color = NULL) +
    theme(plot.title = element_text(),
          plot.margin = margin(10, 10, 10, 10)) 
} 

现在您可以使用相同的参数调用my_waffle而不是waffle并获得所需的结果:

my_waffle(c(50, 30, 15, 5), rows = 5, use_glyph = "child", glyph_size = 6, 
       title = "Look I made an infographic using R!")

在此处输入图像描述

my_waffle(c(gasoline = 50, diesel = 30, hybrid = 15, electric = 5), 
          rows = 5, use_glyph = "car",
          glyph_size = 6, 
          title = "Look I made an infographic using R!")

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM