2017-03-15 25 views
0

2つの変数を並べて使用するRスタジオのggplotを使用してバープロットを作成したいと思います。私はオンラインで見つけた他の人の提案に従ってみましたが、うまくいきません。ここで 2つの変数を使用してggplotの棒グラフを並べて表示

は、私が使用しているデータです:

x <- c(5,17,31,9,17,10,30,28,16,29,14,34) 

y <- c(1,2,3,4,5,6,7,8,9,10,11,12) 

day <- c(1,2,3,4,5,6,7,8,9,10,11,12) 

だから、私は何をやろうとしていることは、X & yはxとy(の側barplotsによって、x軸と側の日を持っています色付けされている)。私がやった

まず最初は、データフレーム作りました:

df1 <- data.frame(x,y,day) 

をして、私が試した:

ggplot(DF1、AES(X =日、Y =のx、y)を)+ geom_bar(stat = "identity"、color = x、width = 1、position = "dodge")

しかし、私はそれを正しく動作させることができません。どのように私はこれを達成するだろうとどんな提案?

+0

フォローアップの質問:その日の色に基づいていますか? 「x」か「y」のグループに属しているかに基づいていますか? – TaylorV

答えて

3

あなたは正しい考えを持っています、私はパッケージの機能がmelt()だと思います。

library(ggplot2) 
library(reshape2) 

x <- c(5,17,31,9,17,10,30,28,16,29,14,34) 
y <- c(1,2,3,4,5,6,7,8,9,10,11,12) 
day <- c(1,2,3,4,5,6,7,8,9,10,11,12) 


df1 <- data.frame(x, y, day) 
df2 <- melt(df1, id.vars='day') 
head(df2) 

ggplot(df2, aes(x=day, y=value, fill=variable)) + 
    geom_bar(stat='identity', position='dodge') 

enter image description here

+0

パーフェクト、まさに私が行っていたこと...助けてくれてありがとう – Electrino

0

それとも、二つのグラフを生成するためにfacet_wrapを使用することができます。

ggplot(data = df2, aes(x = day, y = value, fill = day)) + geom_bar(stat = "identity") + facet_wrap(~ variable) + scale_x_continuous(breaks=seq(1,12,2)) 
:あなたは一日の使用 fill = dayに応じた色付きのバーをしたい場合は

library("ggplot2") 
    library("reshape") 
    x <- c(5,17,31,9,17,10,30,28,16,29,14,34) 
    y <- c(1,2,3,4,5,6,7,8,9,10,11,12) 
    day <- c(1,2,3,4,5,6,7,8,9,10,11,12) 
    df1 <- data.frame(x,y,day) 
    df2 <- reshape::melt(df1, id = c("day")) 
    ggplot(data = df2, aes(x = day, y = value, fill = variable)) + geom_bar(stat = "identity")+ facet_wrap(~ variable) + scale_x_continuous(breaks=seq(1,12,2)) 

enter image description here

enter image description here

+0

'day'を因数に変換すると、日々はこのような連続的なスケールにはならないことに気づく価値があります。 – TaylorV

+0

' + scale_x_continuous = seq(1,12,2)) 'となります。 –

関連する問題