Re: [問題] 折線圖+長條圖呈現

看板R_Language作者 (天)時間8年前 (2017/06/14 20:00), 8年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串8/9 (看更多)
我Update一下ggplot2的狀態 ggplot2 2.2.0已經准許你這樣做了 成果:http://imgur.com/7YIrEB8
程式好讀版:https://pastebin.com/u6fCQKuy 程式碼: library(ggplot2) library(dplyr) 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()) ggplotColours <- function(n = 6, h = c(0, 360) + 15){ if ((diff(h) %% 360) < 1) h[2] <- h[2] - 360/n hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65) } transDblAxisForBar <- function(x, y) { return((y - min(y)) / (max(y) - min(y)) * extendrange(x)[2]) } cols <- ggplotColours(2) ggplot(sum0, aes(V1, n)) + geom_bar(position = "stack", stat = "identity", fill = cols[1]) + geom_line(aes(x = V1, y = transDblAxisForBar(n, mean)), col = cols[2], lwd = 1.5) + scale_y_continuous("n", sec.axis = sec_axis(~ . / extendrange(sum0$n)[2] * diff(range(sum0$mean))+ min(sum0$mean), name = "mean")) ※ 引述《sacidoO (阿罵)》之銘言: : #更新 感謝版主c大各種code詳解 及G大還有Andrew大的幫忙!已經有解了 : 更新方法一於置底 : 借用這個標題 跟原po有一樣的問題 試了幾個幫法 但是都不成功......... : 不知道版上有沒有人能有方法解決兩種方法使其更優......感謝了! : [程式範例] : #data: 用c大分享的 code : library(dplyr) : ngrp <- 2L : numSamples <- 200L : DF <- data.frame(V1 = sample(1L:3L, numSamples, TRUE), V2 = sample(1L:2L, : numSamples, TRUE), : V3 = rnorm(numSamples), V4 = rnorm(numSamples), V5 = : rnorm(numSamples)) : #sum statistics : sum0<-DF %>% group_by(V1) %>% summarise (mean=mean(V2),n=n()) : #方法一: bar chart 不在節點上,看起來怪怪的 : par(mar=c(4,4.5,4,4)) : barplot(sum0$n,ylim=c(0,max(sum0$n)+0.1*max(sum0$n)), : yaxt="n",width=0.2,space=2) : axis(side=4) : mtext("Count", side=4, line=1.8) : par(new=T) : plot(sum0$V1,sum0$mean, xlab="cartegpory level", ylim=c(0,2), ylab="") : mtext("Group mean",side=2, line=1.8) : lines(sum0$V1,sum0$mean, type="o") : #方法二 使用ggpltot, 但是無法讓兩圖在同一圖上... : library(ggplot2) : #frequency plot : g.botton<-ggplot()+geom_bar(data=sum0,aes(x=V1, y=n), stat="identity")+ : labs(y="Counts")+ : theme_classic() : #line plot : g.top<-ggplot()+geom_line(data=sum0, aes(x=V1, y=mean, : group=1))+geom_point(data=sum0,aes(x=V1,y=mean, group=1))+ : scale_y_continuous(limits = c(0,2),position="right")+ : labs(y="Group mean")+ : theme_classic() : print(g.bottom) #vp ? : print(g.top) #vp? : ※ 引述《samex4x4 (Same)》之銘言: : : [問題類型]: : : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : : [軟體熟悉度]: : : 入門(寫過其他程式,只是對語法不熟悉) : : [問題敘述]: : : 想詢問是否有辦法同時畫出長條圖和摺線圖在一張圖表上? : : 兩者是不同的數值(取不同欄位) : : 大概是長這樣 : : http://imgur.com/b5XELZF.jpg
: : 謝謝QQ : : [程式範例]: : : [環境敘述]: : : 3.3.2 : : [關鍵字]: : : 選擇性,也許未來有用 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.47.89 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1497441620.A.6FA.html ※ 編輯: celestialgod (36.235.47.89), 06/14/2017 20:03:02
文章代碼(AID): #1PGILKRw (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1PGILKRw (R_Language)