2013-02-06 31 views
25

geom_textでフォントを設定できません。ここに私が試したものです:ggplot/geom_textでフォントを変更できない

labels_test<-data.frame(a=c("a","b","c"),b=c(1:3),c=c(3:1)) 
    # works 
    ggplot() + geom_text(data=labels_test,aes(b,c,label=a),color="blue") 
    # does not work: 
    ggplot() + geom_text(data=labels_test,aes(b,c,label=a),color="blue",family="Times") 
    # error message: In grid.Call.graphics(L_text, as.graphicsAnnot(x$label), x$x, x$y,: 
    # Font family not found in Windows font database 

hereを示したように、私はすでにすべてのフォントを輸入しました。どんな考えがまだ間違っているのでしょうか?

+5

'windowsFonts(Times = windowsFont(" TT Times New Roman "))'を最初に実行するとうまくいきますか? –

+1

はいそうです。ありがとうございました。あなたはそれを回答として掲示するべきです。あなたはそれを説明できますか?また、私は別のフォントを使用したいときにすべてのスクリプトでこれを行う必要がありますか? – Joschi

+0

私はちょうど今、マックにいるので、私は本当にうまくいきませんが、[this](https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/781cT5yMqCg)は助けになるかもしれませんが、主にアイデアですこれは明示的に使用するためにRに与えたフォントをインストールした後です –

答えて

25

私はあなたが明示的にWindowsのフォントマッピングを指定してこれを行うには、「

windowsFonts(Times=windowsFont("TT Times New Roman")) 

をしようとするだろう

+1

インポートされたフォントごとにどのようにしたらいいですか? –

10

あなたはコマンドを使用して、システムフォントをインポートする必要があります。

font_import(paths = NULL, recursive = TRUE, prompt = TRUE,pattern = NULL) 
+1

これは実際に質問に対する本当の意味です。 – skoh

+2

フォントが多い場合、この解決には長い時間がかかります。 'pattern =" Times "'などを使って、読み込まれるフォントの数を減らしてください – C8H10N4O2

13

他の回答を私の問題を解決できませんでした(Windows 10)。

私のシステムのためのキー電話をextrafont::loadfonts(device="win")library(ggplot2)より前に呼び出します。フォントの場所と

extrafont::loadfonts(device="win") 
#extrafont::fonttable() 
#extrafont::font_import("C:/Windows/Fonts/", pattern = "RobotoCondensed") 
library(ggplot2) 

共通問題:私は以前extrafont::font_import()でランダムなフォルダからフォントをインストールしていた

。そのようにextrafont::fonttable()は私のC:\Windows\Fonts\フォルダのファイルを参照しました。この問題を解決するには、別の場所にあるフォントへの参照をクリアするために、extrafonts::fonttable()install.packages("extrafontdb")にリセットしました。節約に関する

編集:ウサギの穴ダウン

深いです。節約はさらに難題でした。 extrafont::loadfonts(device="pdf")に私のextrafont::fonttable()のフォントには、同じ姓と太字/斜体のステータスがないことを確認しなければなりませんでした。私はextrafont:::fonttable_file()を編集して、私の家族の中の重複した太字/斜体フォントを解決しました。 Roboto Condensedを使って私は軽フォントのフォントファミリを "Roboto Condensed Light"に改名しました。

ggsave(device="pdf")で節約した。 acrobatでファイルを開くと、フォントが正しく表示されませんでした。私はghostscriptでフォントを埋め込み、cairo_pdfデバイスを使ってみました。最も簡単で機能的な解決策は、Illustratorで.pdfファイルを開き(フォントはそこに表示されます)、直ちに.pdfとしてもう一度保存することでした。節約に関する

編集2:.EPSなど

の保存はイラストレーターおよびAcrobatの両方でファイルを保存するための唯一の方法でした。結果は完璧です。 ggsave(g, file="Figure.eps", fonts=c("FONT FAMILIES USED", "Roboto Condensed", "Roboto Condensed Light"))

最終的なプロットコード:

は、ここで私はプロットする前に使用するコールの私の最後のセットです。コメントは、一度だけ実行する必要のあるセットアップコマンドです。

# Plotting 
extrafont::loadfonts(device="pdf") 
extrafont::loadfonts(device="postscript") 
# extrafont::font_import("C:/Windows/Fonts/", pattern = "RobotoCondensed", prompt = F) 
# extrafont::fonttable() 
# C:/Program Files/R/R-3.3.1/library/extrafontdb/fontmap/ - Change lights to "Roboto Condensed Light" 
# After ggsave(device="pdf") or ggsave(device="eps") open and resave the file in Illustrator 
library(hrbrthemes) 
library(ggplot2) 
関連する問題