むかしむかし、windowsFonts(Times=windowsFont("TT Times New Roman"))
を使用してggplot2
フォントを変更しました。今、私はこれからそれを得ることができません。
family=""
をggplot2
theme()
に設定しようとすると、以下のMWEを異なるフォントファミリでコンパイルするときにフォントの変更を生成できないようです。
library(ggplot2)
library(extrafont)
loadfonts(device = "win")
a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16,
# family="Comic Sans MS"))
# family="CM Roman"))
# family="TT Times New Roman"))
# family="Sans"))
family="Serif"))
print(a)
print("Graph should have refreshed")
Rは警告font family not found in Windows font database
を返していますが、これが正常であり問題ではないことを示すチュートリアルがありました(もし見つかった場合は、ここでリンクを更新します)。また、私のグラフがかつてarialまたはhelviticaタイプのフォントを使用していたため、何らかの理由でこれが一時的に機能しました。これは、最初の移行時でも常に現在の警告であったと思います。
更新
windowsFonts()
を実行すると、出力は
$ serif [1] "TT Times New Roman"
$ sans [1]「TT Arial」
$ mono [1]「TT Courier New」
しかし、これはfont_import()
を実行した後であるため、フォントが適切な場所に保存されていないと結論付けることができます。 font_import()
リクエストを実行したコードは、実際にライブラリをロードします:
LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2");
.libPaths(c(LocalLibraryLocation, .libPaths()))
あなたは私が思う初期化ステップを見逃しただけです。
windowsFonts()
コマンドを使用すると、使用可能なフォントを確認できます。たとえば、私がこれを見始めたとき、私のものは次のようになります。
> windowsFonts()
$serif
[1] "TT Times New Roman"
$sans
[1] "TT Arial"
$mono
[1] "TT Courier New"
パッケージextraFontを挿入し、次のようにfont_import
を実行した後(5分ほどかかりました):
library(extrafont)
font_import()
loadfonts(device = "win")
私はもっと多くの利用可能なものがありました-ここにリストするには議論が多すぎる、確かに多すぎます。
それから私はあなたのコードを試しました:
library(ggplot2)
library(extrafont)
loadfonts(device = "win")
a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16, family="Comic Sans MS"))
print(a)
これをもたらす:
次のコードスニペットで、element_text
のfamily
パラメーターに必要なフォントの名前を見つけることができます。
> names(wf[wf=="TT Times New Roman"])
[1] "serif"
その後:
library(ggplot2)
library(extrafont)
loadfonts(device = "win")
a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text=element_text(size=16, family="serif"))
print(a)
別のオプションは、 showtext
パッケージを使用することです。これは、より多くの種類のフォント(TrueType、OpenType、Type 1、Webフォントなど)およびより多くのグラフィックデバイスをサポートし、Ghostscriptなどの外部ソフトウェアの使用を回避します。
# install.packages('showtext', dependencies = TRUE)
library(showtext)
一部のGoogleフォントをインポートする
# https://fonts.google.com/featured/Superfamilies
font_add_google("Montserrat", "Montserrat")
font_add_google("Roboto", "Roboto")
現在の検索パスからshowtext
にフォントをロードします
# Check the current search path for fonts
font_paths()
#> [1] "C:\\Windows\\Fonts"
# List available font files in the search path
font_files()
#> [1] "AcadEref.ttf"
#> [2] "AGENCYB.TTF"
#> [428] "pala.ttf"
#> [429] "palab.ttf"
#> [430] "palabi.ttf"
#> [431] "palai.ttf"
# syntax: font_add(family = "<family_name>", regular = "/path/to/font/file")
font_add("Palatino", "pala.ttf")
font_families()
#> [1] "sans" "serif" "mono" "wqy-microhei"
#> [5] "Montserrat" "Roboto" "Palatino"
## automatically use showtext for new devices
showtext_auto()
プロット:showtext
はRStudio組み込みのグラフィックスデバイスではうまく機能しないため、Windowsグラフィックスデバイスを開く必要があります
# https://github.com/yixuan/showtext/issues/7
# https://journal.r-project.org/archive/2015-1/qiu.pdf
windows()
myFont1 <- "Montserrat"
myFont2 <- "Roboto"
myFont3 <- "Palatino"
library(ggplot2)
a <- ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
ggtitle("Fuel Efficiency of 32 Cars") +
xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
theme(text = element_text(size = 16, family = myFont1)) +
annotate("text", 4, 30, label = 'Palatino Linotype',
family = myFont3, size = 10) +
annotate("text", 1, 11, label = 'Roboto', hjust = 0,
family = myFont2, size = 10)
## On-screen device
print(a)
## Save to PNG
ggsave("plot_showtext.png", plot = a,
type = 'cairo',
width = 6, height = 6, dpi = 150)
## Save to PDF
ggsave("plot_showtext.pdf", plot = a,
device = cairo_pdf,
width = 6, height = 6, dpi = 150)
## turn showtext off if no longer needed
showtext_auto(FALSE)
パーティーに遅れましたが、これはshinyapps.ioのggplots
アプリ内のshiny
にカスタムフォントを追加したい人にとっては興味深いかもしれません。
あなたはできる:
これは、app.R
ファイル内の次の上部セクションにつながります。
dir.create('~/.fonts')
file.copy("www/IndieFlower.ttf", "~/.fonts")
system('fc-cache -f ~/.fonts')
完全なサンプルアプリは here にあります。