1. ホーム
  2. r

[解決済み] ggplot2 のフォントを変更する

2022-03-03 08:52:18

質問

むかしむかし、私は自分の ggplot2 フォントは windowsFonts(Times=windowsFont("TT Times New Roman")) . さて、これでは取れませんね。

を設定しようとすると 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)

ということになります。

更新情報

必要なフォント名を family のパラメータは element_text を以下のコードで実行します。

> 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)

を収得することができます。