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