我正在寻找一种方法来修改ggplot中的字体类型.目前,我很乐意简单地将字体更改为"courier"字体系列,但最终我的目标是调用一个自定义字体模板——对于后一点的任何输入都将不胜感激.

我做了一些家庭作业(job),查看了以下帖子和文章:

这可能是因为我对ggplot2还是一个毫无希望的业余爱好者,但我甚至无法将图表字体切换到courier.有什么帮助吗?我已经在下面列出了相关图表的数据,以及代码,希望这一切都很容易理解.

推荐答案

以最少的麻烦解决了我的问题.这是一个分两步走的解决方案,如果不听从回应的成员的建议,我是不可能达成的.

为了更改ggplot文本默认值,我修改了Brandon提到的代码:

http://johndunavent.com/combined-line-and-bar-chart-ggplot2

其中John Dunavent创建了一个函数theme_min,可以对其进行编辑,以提供ggplot的默认选项,包括使用Windows字体命令从Windows导入的字体.我对他的代码的改编如下:

theme_min = function (size=10, font=NA, face='plain', 
    panelColor=backgroundColor, axisColor='#999999', 
    gridColor=gridLinesColor, textColor='black') 
{
    theme_text = function(...)
        ggplot2::theme_text(family=font, face=face, colour=textColor, 
            size=size, ...)

opts(
    axis.text.x = theme_text(),
    axis.text.y = theme_text(),
    axis.line = theme_blank(),
    axis.ticks = theme_segment(colour=axisColor, size=0.25),
    panel.border = theme_rect(colour=backgroundColor),
    legend.background = theme_blank(),
    legend.key = theme_blank(),
    legend.key.size = unit(1.5, 'lines'),
    legend.text = theme_text(hjust=0),
    legend.title = theme_text(hjust=0),
    panel.background = theme_rect(fill=panelColor, colour=NA),
    panel.grid.major = theme_line(colour=gridColor, size=0.33),
    panel.grid.minor = theme_blank(),
    strip.background = theme_rect(fill=NA, colour=NA),
    strip.text.x = theme_text(hjust=0),
    strip.text.y = theme_text(angle=-90),
    plot.title = theme_text(hjust=0),
    plot.margin = unit(c(0.1, 0.1, 0.1, 0.1), 'lines'))
}

##Create a custom font type. Could be 'F', 'TEST', whatever
windowsFonts(F = windowsFont('Wide Latin'))

##and insert this line of code into the original code I list above: 
+ theme_min(font='F', size=10) 

尴尬的是,在创建绘图之前,没有办法(我发现)一般地修改geom_文本对象的字体设置.不过,詹姆斯的上述解决方案对这一点非常有效.我没有使用标准字体,而是将fontfamily="F"设置为引入我在theme_min()中选择的自定义字体,即:

grid.gedit("GRID.text",gp=gpar(fontfamily="F"))

希望这对其他想要修改图形字体的用户有用.

为所有帮助我解决这个问题的人干杯!

R相关问答推荐

R 创建创建标签或类别的新列,直到它到达新标签

我可以根据使用 mutate() 和 cross() 的许多其他列来改变许多列吗?

逐列返回最常见的值,将该列中的 null 替换为该值

在 R 中系统地重命名字符串

为 facet_grid 中的级别添加唯一的水平线

用逗号分隔的引号连接字符串

如果条件在 R 中匹配,则将一列拆分为两个现有列

减少名称与模式匹配的列

如果向量之间有公共元素/没有公共元素,则返回 TRUE/FALSE

如何显示多个图层的图例(geom_point 和 geom_bar)?

更改输入值时不要清除(用户输入的)react 变量的值

当新列名作为字符向量给出时,在“data.table”中对数据进行分组的好方法

返回 R 中的第 90 个百分位值

将汇总表添加到分面网格箱线图

考虑到 position='dodge' 的条形,如何在柱状条形图上添加线条,其中线条通过条形的中间顶部?

将悬停标签重新定位在栏的中间,这样它就不会覆盖标题

R包stargazer产生两个表输出而不是一个

将随机观察值的总和计算为 R 中每周的总和

如何使用 cross 和 .names 参数将此基本 R 代码转换为 dplyr

R:重新排列数据框中行的顺序