2017-10-20 11 views
-1

行には「目的」があり、列には「成績」があります。ggplot2を使用した折れ線グラフの作成

私はggplot2を使用して14個の別々の折れ線グラフ(すべて1つのグラフにオーバーレイされています)を描画しようとしています。 "目的"の種類ごとに1つ。

x軸には「等級」があり、y軸にはセルの値がパーセントで表示されます。グレードと目的が実際に一緒にグループ化されていないので、私はどのようにこれを行うことができますか?

enter image description here

+0

ユーザーが/貼り付けをコピーすることができますので、プレーンテキストではなく画像などのデータを入力してください。 – neilfws

+0

私はすでに同じ日に、画像としてではなくプレーンテキストとしてデータを含めるように頼んだので、私はダウン投票しています。あなたのお手伝いをするために、良い質問をする習慣を身につけてください。あなたの質問を要求どおりに編集すると、私はダウンボートをアップヴォートに置き換えます。 – lebelinoz

答えて

2

私はggplot上に線をプロットする方法を説明するために、3つの目的&成績を取りました。

データセット:

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")) 

enter image description here

2

あなたデータは個別のカテゴリ(目的と成績)で構成されているため、折れ線グラフは継続的な移行を意味するため実際には適切ではありません。各目的の中で成績の合計が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() 

enter image description here

関連する問題