我正在嘗試通過 sankey 圖賺取收入,最好使用ggsankey或另一個 ggplot 擴展,因為我需要最終的圖作為影像(png)。這是我的資料:
data <- tibble::tribble(
~Name, ~Annual.Amount, ~Category,
"Moira's Earnings", 50000L, "Income",
"Johnny's Earnings", 300000L, "Income",
"Living Expenses", 140000L, "Expenses",
"Spent Savings", 25238L, "Expenses",
"Liabilities", 44280L, "Expenses",
"Planned Savings", 23000L, "Expenses",
"Taxes", 98482L, "Expenses",
"Insurance", 13000L, "Expenses"
)
我正在嘗試創建類似此圖的內容,但只有前 2 個流量,所有收入都從費用流向的一列中: 
uj5u.com熱心網友回復:
library(tidyverse)
library(networkD3)
data <- tibble::tribble(
~Name, ~Annual.Amount, ~Category,
"Moira's Earnings", 50000L, "Income",
"Johnny's Earnings", 300000L, "Income",
"Living Expenses", 140000L, "Expenses",
"Spent Savings", 25238L, "Expenses",
"Liabilities", 44280L, "Expenses",
"Planned Savings", 23000L, "Expenses",
"Taxes", 98482L, "Expenses",
"Insurance", 13000L, "Expenses"
)
Nodes = tibble(
Name = c(data$Name, "Budget") %>% unique()
) %>% as.data.frame()
df = data %>% filter(Category=="Income") %>%
select(-Category) %>%
rename(Source = Name) %>%
mutate(Target = "Budget") %>%
bind_rows(
data %>%
filter(Category=="Expenses") %>%
select(-Category) %>%
rename(Target = Name) %>%
mutate(Source = "Budget")
) %>% mutate(
IDSource = match(Source, Nodes$Name)-1,
IDTarget = match(Target, Nodes$Name)-1
) %>% as.data.frame()
sankeyNetwork(Links = df, Nodes = Nodes,
Source = "IDSource", Target = "IDTarget",
Value = "Annual.Amount", NodeID = "Name",
sinksRight=FALSE, fontSize = 16)

小更新
library(webshot)
webshot::install_phantomjs()
sankeyNetwork(Links = df, Nodes = Nodes,
Source = "IDSource", Target = "IDTarget",
Value = "Annual.Amount", NodeID = "Name",
sinksRight=FALSE, fontSize = 16) %>%
saveNetwork("sn.html")
webshot("sn.html", "sankeyNetwork.png")

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/343054.html
下一篇:使用purr包回圈Dunn的測驗
