<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          R語言學(xué)習(xí) - 圖形設(shè)置中英字體

          共 3000字,需瀏覽 6分鐘

           ·

          2021-09-27 05:00

          繪制生信寶典調(diào)查總結(jié)文中的柱狀圖時(shí),出現(xiàn)了中文亂碼,就搜索了下解決方案,記錄如下。

          修改圖形的字體

          ggplot2中修改圖形字體。

          # 修改坐標(biāo)軸和legend、標(biāo)題的字體
          theme(text=element_text(family="Arial"))
          # 或者
          theme_bw(base_family="Arial")

          # 修改geom_text的字體
          geom_text(family="Arial")

          ggplot2支持中文字體輸出PDF

          showtext包可給定字體文件,加載到R環(huán)境中,生成新的字體家族名字,后期調(diào)用這個(gè)名字設(shè)定字體,并且支持中文寫入pdf不亂碼

          library(showtext)
          showtext.auto(enable=TRUE)

          font_path = "FZSTK.TTF"
          font_name = tools::file_path_sans_ext(basename(font_path))
          font.add(font_name, font_path)

          # 修改坐標(biāo)軸和legend、標(biāo)題的字體
          theme(text=element_text(family=font_name))

          # 修改geom_text的字體
          geom_text(family=font_name)

          系統(tǒng)可用字體

          • Linux字體一般在 /usr/share/fonts下,也可以使用fc-list列出所以加載的字體。

          • Windows字體在 C:\Windows\Fonts\下,直接可以看到,也可以拷貝到Linux下使用。

          合并字體支持中英文

          通常情況下,作圖的字體都是英文,ggplot2默認(rèn)的或按需求加載一種字體就可以了。但如果中英文混合出現(xiàn)時(shí),單個(gè)字體只能支持一種文字,最好的方式是合并兩種字體,類似于Word中設(shè)置中英文分別使用不同的字體。

          軟件FontForge可以方便的合并中英文字體,其安裝也比較簡(jiǎn)單,直接 yum install fontforge.x86_64。

          假如需要合并FZSTK.TTF (windows下獲取)和Schoolbell-Regular.ttf (谷歌下載),這兩個(gè)都是手寫字體。按如下,把字體文件和程序腳本mergefont.pe放在同一目錄下,運(yùn)行fontforge -script mergefont.pe即可獲得合并后的字體FZ_School.ttf。

          $ ls
          FZSTK.TTF mergefont.pe Schoolbell-Regular.ttf
          $ cat mergefont.pe
          Open("FZSTK.TTF")
          SelectAll()
          ScaleToEm(1024)
          Generate("temp.ttf", "", 0x14)
          Close()

          # Open English font and merge to the Chinese font
          Open("Schoolbell-Regular.ttf")
          SelectAll()
          ScaleToEm(1024)

          MergeFonts("temp.ttf")
          SetFontNames("FZ_School", "FZST", "Schoolbel", "Regular", "")
          Generate("FZ_School.ttf", "", 0x14)
          Close()

          $ fontforge -script mergefont.pe
          $ ls
          FZ_School.ttf FZSTK.TTF mergefont.pe Schoolbell-Regular.ttf

          然后安裝前面的介紹使用showtext導(dǎo)入即可使用。

          一個(gè)示例

          字體文件自己從Windows獲取,School bell從Google fonts獲取。

          library(showtext)
          ## Add fonts that are available on current path

          # 方正字體+schoole bell (中英混合)
          font.add("FZ_School", "FZ_School.ttf")
          # 黑體
          font.add("simhei", "simhei.ttf")
          font.add("Arial","arial.ttf")

          # 黑體和Arial的合體
          font.add("HeiArial", "HeiArial.ttf")
          showtext.auto()  ## automatically use showtext for new devices

          library(ggplot2)

          p = ggplot(NULL, aes(x = 1:10, y = 2^(1:10), group=1)) + geom_line() +
           theme(axis.title.y=element_text(family="Arial"), axis.title.x=element_text(family="HeiArial"),
                 plot.title=element_text(family="simhei")) +
           xlab("Days spent on 生信寶典") +
           ylab("Things you have learned") +
           ggtitle("生信寶典,換個(gè)角度學(xué)生信") +
           annotate("text", 7, 300, family = "FZ_School", size = 8,
                    label = "收獲曲線 (Harvest curve)", angle=15)

          # annotate指定的是文字的中間部分的位置

          ggsave(p, filename="example-SXBD.pdf", width = 7, height = 4)  ## PDF device

          Reference

          • 中英文字體混合:

            http://www.voidcn.com/article/p-gnggkwmy-vn.html

          • 改變字體類型:

            https://github.com/yixuan/showtext

          • 獲取文件名:

            https://stackoverflow.com/questions/29113973/getting-filename-without-extension-in-r


          關(guān)注生信寶典,換個(gè)角度學(xué)生信

          高顏值免費(fèi)在線繪圖(點(diǎn)擊圖片直達(dá)網(wǎng)站手冊(cè))


          往期精品(點(diǎn)擊圖片直達(dá)文字對(duì)應(yīng)教程)


          后臺(tái)回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集



          瀏覽 16
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级黄色毛片视频 | 在线观看视频免费无码免费视频 | 97剪辑福利视频 | 99热精品在线观看首页 | 大香蕉鸥\美一区二区 |