2015-12-30 871 views
12

曾幾何時,我使用windowsFonts(Times=windowsFont("TT Times New Roman"))更改了我的ggplot2字體以更改它。現在我無法從中解脫出來。更改ggplot2中的字體

在試圖設置family=""ggplot2theme()我似乎無法生成字體的變化,因爲我用不同的字體系列編譯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字體。我認爲即使在最初的遷徙時期,這也是一個現在的警告。

UPDATE

當我運行windowsFonts()我的輸出是

$襯線[1] 「TT宋體」

$ SANS [1] 「TT宋體」

$ mono [1]「TT Courier New」

但是,這在我運行font_import()後,我只能得出結論,我的字體沒有保存在正確的位置。

LocalLibraryLocation <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Documents","\\R\\win-library\\3.2"); 
    .libPaths(c(LocalLibraryLocation, .libPaths())) 

回答

24

你只是錯過了一個初始化步驟,我認爲:運行該font_import()請求的代碼實際上加載庫。

您可以使用命令windowsFonts()查看可用字體。例如我的是這樣的,當我開始看這個:

> windowsFonts() 
$serif 
[1] "TT Times New Roman" 

$sans 
[1] "TT Arial" 

$mono 
[1] "TT Courier New" 

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

產生這樣的:

enter image description here

更新:

你可以找到你需要的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) 

產量: enter image description here

+0

感謝您的幫助,走了一半。我現在可以在'mono || sans'(這些看起來沒有什麼不同)和'serif''之間切換,但不是像「TT Times New Roman」這樣的實際名稱,但是另外,我不確定我的'loadFonts '成功了。當我調用'fonts()'時,我有一個包含近300種字體的列表,但我的猜測是它們沒有安裝到本地環境中,使得它們可以被Windows設備訪問。我不確定這是否有道理,但我試圖用可能有所幫助的代碼片段提供對原始問題的更新。再次感謝! – EngBIRD

+0

增加了一些代碼來回答這個問題。 –

+0

感謝您的姓名片段更新,它看起來非常有幫助,您的漫畫如何產生正確的外觀如果家庭是我安裝認可的唯一字符串。 – EngBIRD