看板 R_Language 關於我們 聯絡資訊
原文恕刪。 這邊提供另一種解法,使用的是highcharter套件 可以做出不少漂亮的互動圖形! :) 完成圖可參考: http://i.imgur.com/7ScoSnl.jpg
(這邊借用celestialgod大大的資料) library(dplyr) library(highcharter) numSamples <- 200L DF <- data.frame(V1 = sample(1L:4L, numSamples, TRUE), V2 = sample(1L:2L, numSamples, TRUE)) sum0 <- DF %>% group_by(V1) %>% summarise (mean = mean(V2), n = n()) highchart() %>% hc_xAxis(categories=sum0[["V1"]]) %>% hc_yAxis_multiples( list(title=list(text="n")), list(title=list(text="mean"),opposite=T) ) %>% hc_add_series(name="n",type="column", data=sum0[["n"]], dataLabels=list(enabled=T,color="green")) %>% hc_add_series(name="mean",type="line",yAxis=1, data=round(sum0[["mean"]],digits=2), dataLabels=list(enabled=T)) %>% hc_exporting(enabled = TRUE) 指定x軸、y軸,然後添加series就搞定了。 (還可以享受滑鼠滑來滑去、點來點去有動態效果的成就感XD) 加了hc_exporting()那行,用瀏覽器開啟時就可以把圖存成靜態圖片(JPEG,PNG...) 有一些tricky的地方,個人覺得要花不少時間才能熟悉作者的邏輯 有html或javascript基礎應該可以比較快上手 (更別提highcharter套件的help文件非常貧脊...) 不過會發現當放大或縮小圖形的時候,圖形也會跟著改變! (應該是因為highchart會自己調整圖形為最適合視窗的大小) 例如下圖就跟上圖長得不太一樣(紅圈處) http://i.imgur.com/OFlMgcz.png
也就是說這種double axis的圖形 因為要把兩種「不能比較」的單位同時放在一張圖裡, 只要對應的轉換公式改變,圖形相對位置就有可能改變,造成不同的解讀。 我想這應該是Hadley大神堅持不在ggplot2中添加這功能的原因吧~ (要的話自己刻...哈哈) "Because they are easily manipulated to mislead." 就算是後來的ggplot2新增sec.axis參數, 初衷也只是提供像是華氏攝氏、公里英哩之類,有固定轉換公式單位的對照 https://goo.gl/g3LTFw 有興趣可以去找stackoverflow上那篇討論,(我推文在前面文章裡) 有滿多關於double axis plot 適用情境的討論, (還可以看Hadley大神跟網友互嗆XD) "I don't understand why you think I should do something that I believe is wrong just because lots of people think it's a good idea." 總之使用上要特別小心~~~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.201.237 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1497473188.A.5EA.html ※ 編輯: locka (36.224.201.237), 06/15/2017 04:54:46 ※ 編輯: locka (36.224.201.237), 06/15/2017 05:03:39 ※ 編輯: locka (36.224.201.237), 06/15/2017 05:15:17
Edster: 大神真霸氣 06/15 12:01
carl090105: 想到手刻雙軸的日子... 不過這套件會用到highcharts 06/15 12:34
carl090105: 沒有license的問題嗎? 06/15 12:34
如果是commercial或是governmental使用就要授權。 ※ 編輯: locka (36.224.201.237), 06/15/2017 13:04:43