簡體   English   中英

如何在 R 中同時創建折線圖和條形圖

[英]How to create a line and bar chart together in R

嗨,對不起,如果這篇文章格式錯誤,我從未在此表格上張貼過。 我正在尋求在一個圖表上創建條形圖和折線圖的幫助。 我下面的代碼是我到目前為止所擁有的。 但是,當我實際繪制圖表時,我會附上圖表。 我哪里錯了?

在此處輸入圖像描述


applemusic_subs_rev <- read_csv("apple_music_revenue_and_subs.csv", show_col_types = F)

applemusic_subs_rev2 <-  subset(applemusic_subs_rev, select = c(1:3))  [-c(7),]

applemusic_subs_rev2 <- applemusic_subs_rev2 |> filter(!is.na(Revenue)) |> 
  
  mutate(Revenue = gsub("[\\$,]", "", Revenue),
         Revenue = gsub("billion", "", Revenue),
         Users = gsub("million", "", Users))

applemusic_subs_rev2$Revenue <- as.numeric(as.character(applemusic_subs_rev2$Revenue))
applemusic_subs_rev2$Users <- as.numeric(as.character(applemusic_subs_rev2$Users)) |>

  
mutate(Revenue = Revenue*1000)



    
applemusic_subs_rev2 <- applemusic_subs_rev2|>
mutate(Revenue = Revenue*1000)
#Revenue in Millions 

df <- data.frame(applemusic_subs_rev2)
#Data frame for graph 


ggplot(df) +
  geom_bar(aes(x = Year , weight = Users), fill = "grey70") +
  geom_line(aes(x = Year, y = Revenue, colour = "yellow")) + 
  scale_colour_manual(name = "Legend", labels = c("Value in 100"), values = c("black"))


輸出數據

structure(list(Year = c(2015, 2016, 2017, 2018, 2019, 2020, NA
), Revenue = c(NA, "$0.6 billion", "$1.1 billion", "$1.8 billion", 
"$2.8 billion", "$4.1 billion", NA), Users = c("11 million", 
"20 million", "27 million", "40 million", "50 million", "72 million", 
NA), ...4 = c(NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, 
-7L), spec = structure(list(cols = list(Year = structure(list(), class = c("collector_double", 
"collector")), Revenue = structure(list(), class = c("collector_character", 
"collector")), Users = structure(list(), class = c("collector_character", 
"collector")), ...4 = structure(list(), class = c("collector_logical", 
"collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), delim = ","), class = "col_spec"), problems = <pointer: 0x00000250d76dea50>, class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"))

由於我不知道數據,請注意這只是一個猜測。

沒有錯,只是RevenueUsers之間的值具有非常不同的比例,因此使用輔助軸會更好。

例如,我制作了這個df虛擬數據。

df <- data.frame(
  Year = c(2016,2017,2018,2019,2020),
  Revenue = c(600,1050,1700,2700,4100),
  Users = c(1,2,3,4,5)
)
  Year Revenue Users
1 2016     600     1
2 2017    1050     2
3 2018    1700     3
4 2019    2700     4
5 2020    4100     5

然后簡單地嘗試

ggplot(df) +
  geom_bar(aes(x = Year , weight = Users*800), fill = "grey70") +
  geom_line(aes(x = Year, y = Revenue, colour = "yellow")) +
  scale_y_continuous(name = "Revenue", sec.axis = sec_axis( ~ ./800, name = "Users")) +
  scale_colour_manual(name = "Legend", labels = c("Value in 100"), values = c("black")) 

在此處輸入圖像描述

請注意,上面代碼中的800來自RevenueUsers之間的最大數字之間的比率

為您的數據添加

ggplot(df) +
  geom_bar(aes(x = Year , weight = Users*56.9444), fill = "grey70") +
  geom_line(aes(x = Year, y = Revenue, colour = "yellow")) +
  scale_y_continuous(name = "Revenue", sec.axis = sec_axis( ~ ./56.9444, name = "Users")) +
 scale_colour_manual(name = "Legend", labels = c("Value in 100"), values = c("black")) 

在此處輸入圖像描述

暫無
暫無

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

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