我想在R studio中使用两个变量并排使用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轴上有几天,并且x和y的并排条形图(x&amp; y被着色)对应于日期编号。
我做的第一件事就是制作一个数据框:
df1 <- data.frame(x,y,day)
然后我尝试了:
ggplot(df1,aes(x = day,y = x,y))+ geom_bar(stat =&#34; identity&#34;,color = x,width = 1,position =&#34; dodge&# 34)
但我无法让它正常运作。关于我如何实现这一目标的任何建议?
答案 0 :(得分:10)
您有正确的想法,我认为melt()
包中的reshape2
功能是您正在寻找的。 p>
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')
答案 1 :(得分:3)
或者您可以使用facet_wrap
生成两个图:
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))
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))