簡體   English   中英

R中的條形圖以直觀地可視化收入和支出

[英]barplot in R to intuitively visualize income and expenditure

year month income expense diff
2016 07 50 15 35
2016 08 30 70 -40

我有上述數據,我想每個月,從左到右,並排繪制一個圖表,收入和支出。 例如,在2016年7月,它有兩個豎線,收入介於(2016-07,-15)和(2016-07,35)之間,介於(2016-08,-40)和(2016-08,30之間) )的費用。 我設法用下面的R代碼制作了一個圖形,這與我真正想要的有所不同。

year<- c(2016,2016)
month<-c(07,08)
income<-c(50,30)
expense<-c(15,70)
diff<-c(35,-40)
(dtt<-data.frame(YEAR=year, MONTH=month, INCOME=income, EXPENSE=expense, DIFF=diff))
dttm<-as.matrix(dtt)
barplot(t(dttm[,c(3,4)]), beside=TRUE)

在此處輸入圖片說明

我想像這樣修改這個圖,任何幫助將不勝感激。

在此處輸入圖片說明

感謝您的關注。 首先,我想添加到我的先前信息中,即對於2016年8月,它有兩個豎線,分別是(2016-08,0)和(2016-08,30)之間的收入,以及(2016-08, -40)和(2016-08,30)的費用。 我在下面畫了一張jpeg圖片,這是我想用R命令繪制的圖形。 我希望它使我的演示文稿更容易​​理解。

在此處輸入圖片說明

x

month income_expense
1 2016-07             50
2 2016-07            -15
3 2016-08             30
4 2016-08            -75

x$id <- seq_along(x$income_expense)
x$type <- ifelse(x$income_expense > 0, "in",
    "out")
x[x$month %in% c("Starting Cash", "End Cash"),
    "type"] <- "net"
month_type <- paste(x$month, x$type, sep="-")
x.paste<-cbind(x, month_type)

for (i in 1:(length(x.paste)/2)) {
x.paste$start5[2*i-1] <- ifelse(abs(x.paste$income_expense[2*i-1]) > abs(x.paste$income_expense[2*i]) , x.paste$income_expense[2*i],
    0)
x.paste$end5[2*i-1] <- ifelse(abs(x.paste$income_expense[2*i-1]) > abs(x.paste$income_expense[2*i]) , x.paste$income_expense[2*i-1]+x.paste$income_expense[2*i],
    x.paste$income_expense[2*i-1])
x.paste$start5[2*i] <- ifelse(abs(x.paste$income_expense[2*i-1]) > abs(x.paste$income_expense[2*i]) ,x.paste$income_expense[2*i] ,
    x.paste$income_expense[2*i-1]+x.paste$income_expense[2*i])
x.paste$end5[2*i] <- ifelse(abs(x.paste$income_expense[2*i-1]) > abs(x.paste$income_expense[2*i]) , 0,
    x.paste$income_expense[2*i-1])
}

png("Waterfall_bs01.png", width = 500, height = 300, pointsize = 12, bg = "white")
library(ggplot2)
ggplot(x.paste, aes(month_type, fill = type)) + geom_rect(aes(x = month_type,
xmin = id - 0.45, xmax = id + 0.45, ymin = end5,
ymax = start5))

graphics.off()

金寶

我想按月繪制費用和收入列。 為此,我垂直移動每個矢量,然后將其傳遞給geom_rect()。 不管怎么說,還是要謝謝你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM