Re: [問題] 畫圖上顏色的問題

看板R_Language作者 (攸藍)時間9年前 (2015/02/28 22:51), 9年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《PhysicsBoy (翟南)》之銘言: : [問題敘述]: : 假設有兩個一維陣列,分別是A和B : A = c(25到30之間的數字,有重複) : B = c(19當23之間的數字,有重複) : 意即B裡面的數字一定都小於A : 接著我想將A和B畫直方圖在同一張圖上,該圖乃表示個別數字出現次數的統計圖 : 也就是X軸是表示A和B出現的數字,Y軸是該數字出現的次數 : 現在我想將A和B以不同顏色畫出 : 也就是如果A的直方圖是藍色,那B就以不是藍色的顏色畫出 : 問題在此,可否有辦法使用plot函式直接一次畫出來??? : 而不是先畫一半(如先畫A)後再用point補上另外一半(再畫B) : 以上請教,謝謝! 據我所知,plot做不到,利用lattice的formula and groups 可以輕鬆做到這一點,code範例如下: A = sample(25:30, 100, replace = TRUE) B = sample(19:23, 100, replace = TRUE) library(lattice) dat = stack(data.frame(A, B)) histogram( ~ values, groups = ind, data = dat, #以下只是細部設定 type = "density", breaks = 18:31 + 0.5, ylim = c(0, 0.25), par.settings = simpleTheme(col = c("cyan","yellow"), alpha=0.4), auto.key = list(columns = 2, col = c("cyan","yellow"), text = c("Data A", "Data B")), panel = function(...) panel.superpose(...,panel.groups=panel.histogram, col = c("cyan","yellow"), alpha = 0.4)) PS: breaks = 18:31+0.5可以取代成nint = 12 另外,ggplot2也可以做到,簡單範例如下: library(ggplot2) ggplot(dat, aes(values)) + geom_histogram(binwidth = 1, position = "identity", aes(fill = factor(ind), y = ..density..), colour = "black") + scale_fill_discrete(name="DataSet") 就學習難易度來說,ggplot2是簡單許多,而且顏色不用手動設定, lattice很多都需要自己設定,比較複雜, 我個人偏好lattice,只是比較喜歡他的程式寫法 我不是很習慣用ggplot2的風格... 另外,ggplot2是base on lattice做的,而且lattice畫圖會比較快 (reference: http://tinyurl.com/lyu857e ) 補充: 如果要把lattice畫的圖跟ggplot2有一定的相似的話 可以透過方式做: library(latticeExtra) histogram( ~ values, groups = ind, data = dat, type = "density", breaks = 18:31 + 0.5, ylim = c(0, 0.25), par.settings = ggplot2like(col = c("cyan","yellow"), alpha=0.4), auto.key = list(columns = 2, col = c("cyan","yellow"), text = c("Data A", "Data B")), axis = axis.grid, panel = function(...) panel.superpose(...,panel.groups=panel.histogram, col = c("cyan","yellow"), alpha = 0.4)) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.152.127 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1425135105.A.F4B.html

02/28 23:37, , 1F
感謝大大,這就來測試看看!!
02/28 23:37, 1F
有問題或是哪裏不清楚,歡迎發問 ※ 編輯: celestialgod (36.235.152.127), 03/01/2015 00:57:40
文章代碼(AID): #1KyTO1zB (R_Language)
文章代碼(AID): #1KyTO1zB (R_Language)