Re: [问题] ggsave cairo family与储存路径的问题

楼主: hanglong (小焕)   2018-12-28 19:59:46
※ 引述《hanglong (小焕)》之铭言:
: [问题类型]:
: 程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
: [软件熟悉度]:
: 新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: 各位R版上的先进大家好 近期我在使用程式上 遇到一些比较奇怪的问题
: 原先使用程式上 都没有任何的异常 但近期因为电脑有些问题 需要重灌
: 我就把自己写的程式储存起来 想说重灌后 再重新下载R与R Studio
: 灌好R后再重新下载需要的Package 但特别的是 原本可以跑的程式
: 就出现了Error 导致程式无法执行 以下为我的程式码
: [程式范例]:
: library(gplots)
: library(ggplot2)
: library(SixSigma)
: library(lubridate)
: library(Cairo)
: coat <- read.csv("C:\\Users\\rex\\Desktop\\coating.csv")*[m
: #其中 coat$作业日 是日期的形式,例如:2018/12/27
: #coat$average.是浮点数
: #我想用这两个画图,X座标为日期,Y座标为数值
: ggsave(plot = ggplot(data = coat) + geom_point(aes(strptime(作业日,
: "%Y/%m/%d"), average.1)), file = "X:\\趋势图.pdf", width = 15, height = 7,
: device = cairo_pdf, family = "Song")
: 但程式出现以下错误:
: Error in dev(filename = filename, width = dim[1], height = dim[2], ...) :
: unable to start device 'cairo_pdf'
: In addition: Warning message:
: In dev(filename = filename, width = dim[1], height = dim[2], ...) :
: cairo error 'out of memory'
: 在还无法解决此问题的情形下 我想说先画图 之后在解决储存的问题
: 因此将内容撷取出来:
: ggplot(data = coat) + geom_point(aes(strptime(作业日, "%Y/%m/%d"), average.1))
: 此时出现另外的错误:
: Error: Column `x` is a date/time and must be stored as POSIXct, not POSIXlt
: 而以上的两个问题 在重灌之前是都不会出现
: 程式是可以顺利执行的 但是不晓得为什么会出现这些错误
: 原本想说是不是有其他的Package我没有使用到 但是程式并没有出现看不懂函数的讯息
: 希望各位先进可以指点迷津 谢谢
:
: [环境叙述]:
:
: R version 3.5.2 (2018-12-20)
: Platform: x86_64-w64-mingw32/x64 (64-bit)
: Running under: Windows >= 8 x64 (build 9200)
: Matrix products: default
: locale:
: [1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 LC_CTYPE=Chinese
: (Traditional)_Taiwan.950
: [3] LC_MONETARY=Chinese (Traditional)_Taiwan.950 LC_NUMERIC=C
: [5] LC_TIME=Chinese (Traditional)_Taiwan.950
: attached base packages:
: [1] stats graphics grDevices utils datasets methods base
: other attached packages:
: [1] Cairo_1.5-9 lubridate_1.7.4 SixSigma_0.9-52 ggplot2_3.1.0
: gplots_3.0.1
: loaded via a namespace (and not attached):
: [1] Rcpp_1.0.0 magrittr_1.5 MASS_7.3-51.1 munsell_0.5.0
: [5] xtable_1.8-3 colorspace_1.3-2 lattice_0.20-38 R6_2.3.0
: [9] rlang_0.3.0.1 stringr_1.3.1 plyr_1.8.4
: caTools_1.17.1.1
: [13] tools_3.5.2 qcc_2.7 grid_3.5.2 gtable_0.2.0
: [17] KernSmooth_2.23-15 withr_2.1.2 gtools_3.8.1 digest_0.6.18
: [21] lazyeval_0.2.1 tibble_1.4.2 crayon_1.3.4 bitops_1.0-6
: [25] testthat_2.0.1 labeling_0.3 stringi_1.2.4 gdata_2.18.0
: [29] compiler_3.5.2 pillar_1.3.1 scales_1.0.0
:
: [关键字]:
:
: strptime ggsave ggplot2
感谢版上的大神帮忙解决了第一个问题 的确用as.POSIXct可以解决此问题
比较奇怪的是重灌之前不需要此程式码也可以顺利执行 至少已经解决了 谢谢
另外的问题 在今天的尝试 有一点了解问题的地方 程式码:
ggsave(plot = ggplot(data = coat) + geom_point(aes(strptime(作业日,
"%Y/%m/%d"), average.1)), file = "X:\\趋势图.pdf", width = 15, height = 7,
device = cairo_pdf, family = "Song")
我有将路径改成file = "X:\\Chart.pdf" 就可以顺利执行 且图片中的中文可以正常显示
(因为要印出中文 当初才用device = cairo_pdf与family = "Song"的指令
所以我认为可能跟程式无法看懂输出位置的中文
但我另外也有尝试将device = cairo_pdf, family = "Song"都删掉
且路径保持中文 结果也可以执行 但图片内的中文就无法印出
(当初就是遇到中文无法印出 才用这些指令 所以将其删除 不意外会有这结果)
现在看起来 好像是指令与输出路径(中文)会有冲突
只是这个问题在重灌前也是不会发生的
希望借由这些资讯 版上的先辈们 可以给些修正的建议 谢谢大家

Links booklink

Contact Us: admin [ a t ] ucptt.com