knitr画图时中文出现乱码

COS论坛 | 统计之都 讨论区 软件应用 S-Plus & R语言 knitr画图时中文出现乱码

该主题包含 15 条回复,4个帖子,最后由  cauwinphone2 年, 4 月 之前 更新。

查看 15 个帖子 - 1 到 15(总计 16 个)
  • 作者
    帖子
  • 1 楼

    xwydq
    Participant

    经过配置使用RStudio和knitr生成报告,
    可是画图就生成乱码,换了ubuntu结果还是一样的,
    目前的sessionInfo()

    R version 3.0.2 (2013-09-25)
    Platform: i386-w64-mingw32/i386 (32-bit)
    locale:
    [1] LC_COLLATE=Chinese_People's Republic of China.936
    [2] LC_CTYPE=Chinese_People's Republic of China.936
    [3] LC_MONETARY=Chinese_People's Republic of China.936
    [4] LC_NUMERIC=C
    [5] LC_TIME=Chinese_People's Republic of China.936    
    attached base packages:
    [1] graphics  grDevices utils     datasets  methods   stats     base     
    other attached packages:
    [1] knitr_1.5       reshape2_1.2.2  ggplot2_0.9.3.1 RODBC_1.3-9    
    loaded via a namespace (and not attached):
     [1] colorspace_1.2-4   dichromat_2.0-0    digest_0.6.3       evaluate_0.5.1     formatR_0.10
     [6] grid_3.0.2         gtable_0.1.2       labeling_0.2       MASS_7.3-29        munsell_0.4.2
    [11] plyr_1.8           proto_0.3-10       RColorBrewer_1.0-5 scales_0.2.3       stringr_0.6.2
    [16] tools_3.0.2  

    查看了谢老大的http://www.screenr.com/SvL8的说明,示例是可以实现的,但是同样的问题用plot画图怎么就不可以 啊!!有人说是tex的设置问题,对latex不了解,折腾1天了,知情人忘透露下!!

    如这个chunk:

    <<example_cn,echo=TRUE,fig=TRUE>>=
    x <- rnorm(100)
    y <- rnorm(100)
    plot(x, y, main="chinese中文")
    @

    老是报错,警告。
    生成的文档该出现中文的部分乱码~~[s:12]

    2 楼

    xwydq
    Participant

    up

    3 楼

    neo.cryptic
    Participant
    4 楼

    cauwinphone
    Participant

    去除中文如何?

    5 楼

    neo.cryptic
    Participant

    回复 第2楼 的 xwydq:贴错了,应该是这个:点击这里

    6 楼

    neo.cryptic
    Participant

    实际上在输出图形中还是可以支持中文的;但是我前几天还是被中文注释的问题困扰。。。试了很多种方法组合都不行,最后统一换成英文注释就可以了 ==

    7 楼

    xwydq
    Participant

    回复 第6楼 的 neo.cryptic:老大那到滴是支持还是支持啊[s:12]

    8 楼

    xwydq
    Participant

    回复 第4楼 的 cauwinphone:就是 “中文” 这两个字乱码,国内写报告都搞成英文国情不允许啊

    9 楼

    neo.cryptic
    Participant

    回复 第7楼 的 xwydq:在前面加一个code chunk:

    pdf.options(family='GB1')

    10 楼

    ywh19860616
    Participant

    回复 第9楼 的 neo.cryptic:
    很奇怪的问题,不同版本加这个有些可以,有些不行。
    昨晚用自己电脑可以,现在到办公室的电脑又不可以啦。

    11 楼

    xwydq
    Participant

    回复 第9楼 的 neo.cryptic:回复 第10楼 的 ywh19860616:

    pdf.options(family='GB1')

    好奇怪,这样图片中的中文正常显示,但是要代码中的中文正常显示,还得一堆统一编码的设置?

     \documentclass[twoside,UTF8]{ctexart}
     \usepackage[T1]{fontenc}
     \usepackage{CJKutf8}
     \usepackage[letterpaper]{geometry}
     \usepackage{esint}
     \makeatletter
     \usepackage{Sweave}
     \makeatother
     \begin{document}
     \begin{CJK}{UTF8}{}%

    12 楼

    xwydq
    Participant

    http://yihui.name/knitr/demo/pandoc/
    看了老大的介绍,md可以转化为多种格式甚至docx,
    但是不知道如何实现Rnw转化为docx格式??

    另外发现使用pandoc转化后的docx文件中的图片放大就不是很清楚了,能不能改进??

    13 楼

    ywh19860616
    Participant

    回复 第11楼 的 xwydq:
    我现在电脑的信息如下:

    > sessionInfo()
    R version 3.0.1 (2013-05-16)
    Platform: i386-w64-mingw32/i386 (32-bit)
    locale:
    [1] LC_COLLATE=Chinese_People's Republic of China.936
    [2] LC_CTYPE=Chinese_People's Republic of China.936
    [3] LC_MONETARY=Chinese_People's Republic of China.936
    [4] LC_NUMERIC=C
    [5] LC_TIME=Chinese_People's Republic of China.936    
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     
    loaded via a namespace (and not attached):
    [1] tools_3.0.1

    Rnw的内容如下:

    \documentclass{article}
    \begin{document}
    <<example_cn,echo=TRUE,fig=TRUE>>=
    pdf.options(family='GB1')
    x <- rnorm(100)
    y <- rnorm(100)
    plot(x, y, main='chinese中文')
    @
    \end{document}

    RStudio中的options中选择knitr和pdfLatex

    可是这里运行就是会出现这个错误

    PDF.JS Build: c684dfc
    Message: Malformed PDF: invalid font name

    不知道是为何?

    14 楼

    ywh19860616
    Participant

    回复 第12楼 的 xwydq:是的,可以先用knit把Rmd文件生成为md文件,然后利用
    pandoc(‘xxx.md’, format=’latex’) 这样可以生成pdf文件,只要目的可以达到就
    行吧。

    15 楼

    cauwinphone
    Participant

    %我的是可以的。使用Rstudio及knitr。感谢上面的提示。另外,为对付中文,我使用了ctexbook,ccmap,以及pdf.options(family=’GB1′),保存时,选编码为CP936(System default)。经过这一番折腾,终于可以在chunk中使用中文了,坐标中也可。
    \documentclass[hyperref,a4paper]{ctexbook}
    \usepackage[body={16cm,22cm}, top=3cm]{geometry}
    \usepackage{indentfirst}
    %\geometry{papersize={21.59cm,27.94cm}}
    \usepackage{xcolor}
    \usepackage{graphicx}
    \usepackage{subfigure}
    \usepackage{ccmap}

    \begin{document}

    \section{处理中文问题}
    只要使用一个参数即可解决中文问题,即pdf.options(family=’BG1′)。太好了。见生成的图\ref{fig:example_cn}。另外,使用warning=F,将错误提示不再显示即可。Rnw文档保存时,要选编码即CP936(System default)。
    <<example_cn,fig.cap=’图中显示中文,包括坐标’,echo=TRUE,fig=TRUE,warning=FALSE>>=
    pdf.options(family=’GB1′)
    x <- rnorm(100)
    y <- rnorm(100)
    plot(x, y, main=’chinese中文’, xlab=”中文”, ylab=”中文”)
    @

    \end{document}

查看 15 个帖子 - 1 到 15(总计 16 个)

您必须先登录才能回复该主题。