精華區beta R_Language 關於我們 聯絡資訊
※ 引述《celestialgod (攸藍)》之銘言: : ※ 引述《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, ylim = c(0, 0.5), : par.settings = simpleTheme(col = c("cyan","yellow")), 剛剛我試著改顏色,分別是將cyan都改成red,而yellow改成blue : 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)) 上面這行的也改 最後圖示在此 http://ppt.cc/XXTj 直方圖的藍色跟紅色不是那麼的藍色跟紅色 請問這該如何解決呢? 謝謝 : 另外,ggplot2也可以做到,簡單範例如下: : ggplot(dat, aes(values)) + geom_histogram(binwidth = 1, : position = "identity", aes(fill = factor(ind)), colour = "black") + : scale_fill_discrete(name="DataSet") : 就學習難易度來說,ggplot2是簡單許多,而且顏色不用手動設定, : lattice很多都需要自己設定,比較複雜, : 我個人偏好lattice,只是比較喜歡他的程式寫法 : 我不是很習慣用ggplot2的風格... : 另外,ggplot2是base on lattice做的,而且lattice畫圖會比較快 : (reference: http://tinyurl.com/lyu857e ) -- 離開你的視線~讓情緒完完整整的宣洩~ 我想今夜就這樣吧~ 反正孤獨也無所謂~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.112.61 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1425138513.A.0F6.html
celestialgod: alpha = 1就好了 03/01 00:01
celestialgod: 要跟legend一致的方法就在simpleTheme中加入 03/01 00:02
celestialgod: alpha = 0.4 (跟下面panel function一樣的參數) 03/01 00:03
PhysicsBoy: 收到!那如果y軸想用絕對數量而非density該怎改? 03/01 00:03
celestialgod: change type="density" to type="count" 03/01 00:04
celestialgod: 改成count, ylim也要做更改就是了 03/01 00:04
PhysicsBoy: 恩恩!就來試試看!太感謝了!! 03/01 00:10