簡體   English   中英

使用ggplot2創建折線圖

[英]Creating a line graph using ggplot2

在行上有“目的”,在列上有“成績”。

我正在嘗試使用ggplot2繪制14個單獨的折線圖(全部重疊在一張圖上)。 每種類型的“目的”之一。

在x軸上將是“等級”,在y軸上將是單元格中的百分比值。 由於等級和目的實際上並未歸類在一起,我該怎么辦?

在此處輸入圖片說明

我采用了三個目的和等級來說明如何在ggplot上繪制線條。

數據集:

df <- data.frame(purpose = c("car", "credit card", "debt consolidation"),
                 a = c(26.64, 24.81, 14.04),
                 b = c(30.44, 35.27, 27.65),
                 c = c(23.93, 24.85, 29.06))

將data.frame轉換為堆疊形式:

library(tidyr)
df2 <- df %>% 
       gather(grade, val, a:c)

繪制折線圖:

ggplot(df2, aes(as.numeric(as.factor(grade)), val, colour=purpose)) + 
     geom_line() + 
     scale_x_continuous("Grades", breaks=1:3, labels=c("A", "B", "C"))

在此處輸入圖片說明

您的數據由離散類別(目的和等級)組成,因此折線圖並不適用,因為它暗示着連續過渡。 由於每種目的的等級總和為100%,因此我認為堆疊條形是更好的選擇。

library(dplyr)
library(tidyr)
library(ggplot2)

df1 <- data.frame(purpose = c("car", "credit card", "debt consolidation"),
                        a = c(26.64, 24.81, 14.04),
                        b = c(30.44, 35.27, 27.65),
                        c = c(23.93, 24.85, 29.06),
                        d = c(11.66, 10.13, 16.96),
                        e = c(5.18, 3.88, 8.87),
                        f = c(1.79, 0.90, 2.80),
                        g = c(0.36, 0.16, 0.62))

df1 %>% 
  gather(grade, value, -purpose) %>% 
  ggplot(aes(purpose, value)) + 
    geom_col(aes(fill = grade)) + 
    scale_fill_brewer(palette = "Spectral") +
    coord_flip()

在此處輸入圖片說明

暫無
暫無

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

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