第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如果數(shù)據(jù)丟失,geom_bar的寬度一致

如果數(shù)據(jù)丟失,geom_bar的寬度一致

瀟瀟雨雨 2019-09-02 17:12:11
有沒有辦法geom_bar()在下面的時(shí)間序列示例中丟失數(shù)據(jù)的情況下設(shè)置恒定寬度?我試過(guò)設(shè)置width在aes()沒有運(yùn)氣。在代碼示例下方的圖中比較5月'11至6月'11的條形寬度。colours <- c("#FF0000", "#33CC33", "#CCCCCC", "#FFA500", "#000000" )iris$Month <- rep(seq(from=as.Date("2011-01-01"), to=as.Date("2011-10-01"), by="month"), 15)colours <- c("#FF0000", "#33CC33", "#CCCCCC", "#FFA500", "#000000" )iris$Month <- rep(seq(from=as.Date("2011-01-01"), to=as.Date("2011-10-01"), by="month"), 15)d<-aggregate(iris$Sepal.Length, by=list(iris$Month, iris$Species), sum)d$quota<-seq(from=2000, to=60000, by=2000)colnames(d) <- c("Month", "Species", "Sepal.Width", "Quota")d$Sepal.Width<-d$Sepal.Width * 1000g1 <- ggplot(data=d, aes(x=Month, y=Quota, color="Quota")) + geom_line(size=1)g1 + geom_bar(data=d[c(-1:-5),], aes(x=Month, y=Sepal.Width, width=10, group=Species, fill=Species), stat="identity", position="dodge") + scale_fill_manual(values=colours)
查看完整描述

3 回答

?
拉丁的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

最簡(jiǎn)單的方法是補(bǔ)充數(shù)據(jù)集,以便每個(gè)組合都存在,即使它具有NA其值。舉一個(gè)更簡(jiǎn)單的例子(因?yàn)槟愕挠泻芏嗖恍枰墓δ埽?/p>


dat <- data.frame(a=rep(LETTERS[1:3],3),

                  b=rep(letters[1:3],each=3),

                  v=1:9)[-2,]


ggplot(dat, aes(x=a, y=v, colour=b)) +

  geom_bar(aes(fill=b), stat="identity", position="dodge")


這顯示了您要避免的行為:在組“B”中,沒有組“a”,因此條形更寬。補(bǔ)充dat用的所有組合一個(gè)數(shù)據(jù)幀a,并b:


dat.all <- rbind(dat, cbind(expand.grid(a=levels(dat$a), b=levels(dat$b)), v=NA))


ggplot(dat.all, aes(x=a, y=v, colour=b)) +

  geom_bar(aes(fill=b), stat="identity", position="dodge")  


查看完整回答
反對(duì) 回復(fù) 2019-09-02
?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

ggplot2 3.0.0中引入的一些新選項(xiàng)position_dodge()和新選項(xiàng)可以提供幫助。position_dodge2()


您可以使用preserve = "single"in position_dodge()來(lái)將寬度基于單個(gè)元素,因此所有條形的寬度將相同。


ggplot(data = d, aes(x = Month, y = Quota, color = "Quota")) + 

     geom_line(size = 1) + 

     geom_col(data = d[c(-1:-5),], aes(y = Sepal.Width, fill = Species), 

              position = position_dodge(preserve = "single") ) + 

     scale_fill_manual(values = colours)



使用position_dodge2()事物居中的方式進(jìn)行更改,將每組條形圖集中在每個(gè)x軸位置。它有一些padding內(nèi)置,所以padding = 0用來(lái)刪除。


ggplot(data = d, aes(x = Month, y = Quota, color = "Quota")) + 

     geom_line(size = 1) + 

     geom_col(data = d[c(-1:-5),], aes(y = Sepal.Width, fill = Species), 

              position = position_dodge2(preserve = "single", padding = 0) ) + 

     scale_fill_manual(values = colours)


查看完整回答
反對(duì) 回復(fù) 2019-09-02
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

我有同樣的問(wèn)題,但正在尋找一個(gè)適用于pipe(%>%)的解決方案。使用tidyr::spread和tidyr::gather來(lái)自tidyverse訣竅。我使用與@Brian Diggs相同的數(shù)據(jù),但是當(dāng)轉(zhuǎn)換為寬時(shí),大寫變量名稱不會(huì)以雙變量名結(jié)尾:


library(tidyverse)


dat <- data.frame(A = rep(LETTERS[1:3], 3),

                  B = rep(letters[1:3], each = 3),

                  V = 1:9)[-2, ]

dat %>% 

  spread(key = B, value = V, fill = NA) %>% # turn data to wide, using fill = NA to generate missing values

  gather(key = B, value = V, -A) %>% # go back to long, with the missings

  ggplot(aes(x = A, y = V, fill = B)) +

  geom_col(position = position_dodge())

編輯:


實(shí)際上,與管道結(jié)合的問(wèn)題實(shí)際上有一個(gè)更簡(jiǎn)單的解決方案。使用tidyr::complete在一行中給出相同的結(jié)果:


dat %>% 

  complete(A, B) %>% 

  ggplot(aes(x = A, y = V, fill = B)) +

  geom_col(position = position_dodge())


查看完整回答
反對(duì) 回復(fù) 2019-09-02
  • 3 回答
  • 0 關(guān)注
  • 790 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)