2013-02-06 31 views
25

Tôi không thể đặt phông chữ trong geom_text. Dưới đây là những gì tôi đã thử:Không thể thay đổi phông chữ trong 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 

Tôi đã nhập tất cả các phông chữ như được chỉ định here. Bất kỳ ý tưởng gì vẫn còn sai?

+5

không hoạt động nếu bạn thử 'windowsFonts (Times = windowsFont (" TT Times New Roman "))' trước? –

+1

có. cảm ơn bạn. bạn nên đăng nó như một câu trả lời. Bạn có thể giải thích nó được không?Và tôi có phải làm điều này trong tất cả các kịch bản khi tôi muốn sử dụng phông chữ khác nhau không? – Joschi

+0

Tôi đang dùng mac ngay bây giờ nên tôi không thể thực sự thích thú nhưng [this] (https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/781cT5yMqCg) có thể giúp nhưng chủ yếu là ý tưởng của điều này là một khi bạn đã cài đặt các phông chữ bạn cung cấp cho họ để R sử dụng rõ ràng –

Trả lời

25

tôi sẽ cố gắng"

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

Bằng cách này quy định cụ thể của bạn một cách rõ ràng các bản đồ Windows Font

+1

Vậy bạn sẽ làm như thế nào cho mỗi phông chữ được nhập? –

10

Bạn phải nhập khẩu các phông chữ hệ thống bằng cách sử dụng lệnh:.

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

Đây thực sự là câu trả lời thực sự cho câu hỏi. – skoh

+2

Nếu bạn có nhiều phông chữ, giải pháp này sẽ mất nhiều thời gian. Sử dụng 'pattern =" Times "' hoặc một cái gì đó để giảm số lượng phông chữ được tải – C8H10N4O2

13

Những câu trả lời khác không giải quyết được sự cố của tôi (Windows 10).

Chìa khóa cho hệ thống của tôi wa s để gọi extrafont::loadfonts(device="win")trướclibrary(ggplot2).

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

vấn đề chung với các địa điểm chữ:

Tôi đã cài đặt các phông chữ từ một thư mục ngẫu nhiên với extrafont::font_import() trước đó. Vì vậy, extrafont::fonttable() đã tham chiếu các tệp trong thư mục C:\Windows\Fonts\ của tôi. Để khắc phục điều này, tôi đặt lại số extrafonts::fonttable() của mình bằng install.packages("extrafontdb") để xóa tham chiếu đến phông chữ ở một vị trí khác.

Chỉnh sửa liên quan đến tiết kiệm:

sâu xuống hang thỏ. Tiết kiệm là một thách thức bổ sung. Để extrafont::loadfonts(device="pdf") Tôi phải đảm bảo không có phông chữ nào trong số extrafont::fonttable() có tên gia đình giống hệt và trạng thái in đậm/nghiêng. Tôi đã chỉnh sửa extrafont:::fonttable_file() để giải quyết mọi phông chữ đậm/nghiêng trùng lặp trong gia đình của tôi. Sử dụng Roboto Condensed Tôi đổi tên họ phông chữ của phông chữ ánh sáng thành "Roboto Condensed Light".

Tiết kiệm với ggsave(device="pdf") sau đó hoạt động. Mở các tệp trong acrobat các phông chữ không hiển thị chính xác. Tôi đã thử nhúng các phông chữ bằng ghostscript cũng như sử dụng thiết bị cairo_pdf. Giải pháp dễ nhất và chức năng nhất là mở tệp .pdf trong Illustrator (phông chữ hiển thị tốt ở đó) và ngay lập tức lưu lại chúng dưới dạng .pdf.

Chỉnh sửa 2 liên quan đến tiết kiệm:

tiết kiệm như eps là cách duy nhất để bảo vệ các tập tin trong cả hai họa sĩ minh họa và Acrobat. Kết quả là hoàn hảo. ggsave(g, file="Figure.eps", fonts=c("FONT FAMILIES USED", "Roboto Condensed", "Roboto Condensed Light"))

cuối cùng đang âm mưu:

Đây là tập cuối cùng của tôi về cuộc gọi tôi sử dụng trước khi âm mưu. Nhận xét là các lệnh thiết lập chỉ cần chạy một lần.

# 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) 
Các vấn đề liên quan