ggplot2에서 글꼴 변경
옛날 옛적에, 나는 나의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 에어리얼"
$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)
산출량:
다른 옵션은 더 많은 유형의 글꼴(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()
플롯: 다음과 같이 Windows 그래픽 장치를 열어야 합니다.showtext
RStudio 내장 그래픽 장치와 잘 작동하지 않음
# https://github.com/yixuan/showtext/issues/7
# https://journal.r-project.org/archive/2015-1/qiu.pdf
# `x11()` on Linux, or `quartz()` on Mac OS
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)
편집: 사용할 다른 해결 방법showtext
R 스튜디오에서.R 세션 시작 시 다음 코드 실행(소스)
trace(grDevices::png, exit = quote({
showtext::showtext_begin()
}), print = FALSE)
편집 2: 0.9 버전부터 showtext는 RStudio 그래픽 장치(RSStudioGD)와 잘 작동합니다. RStudio 세션을 호출하기만 하면 플롯이 올바르게 표시됩니다.
새 항목을 설치하지 않으려는 경우 간단한 대답
▁to방 법▁in는▁change▁all플.plot + theme(text=element_text(family="mono"))
에▁where디mono
선택한 글꼴입니다.
기본 글꼴 옵션 목록:
- 모노의
- 산스
- 세리프
- 배달원
- 헬베티카
- 시대
- 아방가르드
- 북맨
- 헬베티카나로우
- 신세기 교과서
- 팔라티노
- URW 고딕
- URW 북맨
- 님버스몬
- 우르베티카
- 님버스 산
- 님버스 산초
- 센추리슈
- URP 팔라디오
- URW 타임즈
- 님버스 롬
R은 글꼴 적용 범위가 크지 않으며, Mike Wise가 지적했듯이 R은 공통 글꼴에 대해 서로 다른 이름을 사용합니다.
이 페이지는 기본 글꼴에 대해 자세히 설명합니다.
이것은 사용자 정의 글꼴을 사용자 정의 글꼴에 추가하려는 사람들에게 흥미로울 수 있습니다.ggplots
富士山의 shiny
반짝반짝 빛나는 앱io 에 있는 앱.
할 수 있는 일:
이는 내부의 다음과 같은 상부 섹션으로 이어집니다.app.R
파일 이름:
dir.create('~/.fonts')
file.copy("www/IndieFlower.ttf", "~/.fonts")
system('fc-cache -f ~/.fonts')
전체 예제 앱은 여기에서 찾을 수 있습니다.
ggplot2 그림의 글꼴을 전체적으로 변경하는 방법.
theme_set(theme_gray(base_size = 20, base_family = 'Font Name' ))
Windows(윈도우)에서는 글꼴을 매우 쉽게 변경할 수 있습니다.추가 패키지는 필요 없습니다. 코드 몇 줄만 추가하면 됩니다.
기본 산세리프 글꼴을 Arial에서 Calibri로 변경하려고 했다고 가정합니다.이 작업은 다음과 같이 수행되며 글꼴은 사용자가 생성하는 모든 ggplot:
windowsFonts(sans = windowsFont("Calibri"))
ggsave를 사용하여 gg plot을 저장하면 저장된 파일에 글꼴이 나타납니다.
새 글꼴을 통합하려면 ggplot 테마의 텍스트 요소를 편집해야 하지만 "sans"를 사용하는 대신 사용자 자신의 글꼴을 이 목록에 추가할 수도 있습니다.
SVG 파일을 만드는 데 svglite를 사용하는 경우 선택한 글꼴도 지정해야 합니다.예:
ggsave("MyPlot.svg", system_fonts = list("sans" = "Calibri"))
저는 Yaml 헤더에 null이라는 테마가 있는지 확인하여 R 마크다운에서 family="Roboto" 명령을 적용하지 않는 gem_text 문제를 해결했습니다.이전에 "페이지"로 설정되었으며 gem_text 행만 이상하게 재정의하고 있었습니다.
언급URL : https://stackoverflow.com/questions/34522732/changing-fonts-in-ggplot2
'programing' 카테고리의 다른 글
숫자가 정수인지 확인합니다. (0) | 2023.06.06 |
---|---|
':app:checkDebugDuplicateClass' 작업을 실행하지 못했습니다.아이오닉 4 안드로이드 (0) | 2023.06.06 |
판다 데이터 프레임 열 dtype 할당 (0) | 2023.06.06 |
Python: __init__ 내에서 예외를 제기하는 것은 나쁜 형식입니까? (0) | 2023.06.06 |
Android에서 URL별 ImageView를 로드하는 방법은 무엇입니까? (0) | 2023.06.06 |