这是一个非常新的问题,但我说有这样的数据:
test_data <-
data.frame(
var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
date = seq(as.Date("2002-01-01"), by="1 month", length.out=100)
)
Run Code Online (Sandbox Code Playgroud)
如何在x轴上使用?绘制时间序列var0和var1同一图表?奖励积分,如果你做和不同的颜色,并且可以包括一个传奇!dateggplot2var0var1
我确信这很简单,但我找不到任何例子.
我们假设我们有以下数据框
data <- data.frame(time=1:10, y1=runif(10), y2=runif(10), y3=runif(10))
Run Code Online (Sandbox Code Playgroud)
我们想创建一个这样的情节:
p <- ggplot(data, aes(x=time))
p <- p + geom_line(aes(y=y1, colour="y1"))
p <- p + geom_line(aes(y=y2, colour="y2"))
p <- p + geom_line(aes(y=y3, colour="y3"))
plot(p)
Run Code Online (Sandbox Code Playgroud)

但是,如果我们有更多的"y"列,我们不知道它们的确切名称.这提出了一个问题:我们如何以编程方式迭代所有列,并将它们添加到绘图中?基本上目标是:
otherFeatures <- names(data)[-1]
for (f in otherFeatures) {
# what goes here?
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现许多方法都行不通.例如(以下所有示例仅显示上面for循环中的代码行):
我的第一次尝试只是使用aes_string而不是aes为了通过循环变量指定列名f:
p <- p + geom_line(aes_string(y=f, colour=f))
Run Code Online (Sandbox Code Playgroud)
但这并没有给出相同的结果,因为现在colour不会是每行的固定颜色(aes_string将f在数据框环境中解释).因此,图例将变为颜色条,并且不包含不同的列名.我的下一个猜测是混合,aes并aes_string试图设置colour为固定字符串:
p <- p + geom_line(aes_string(y=f), aes(colour=f))
Run Code Online (Sandbox Code Playgroud)
但这导致了 …
这是关于这一点的后续问题:R:在一个图中绘制多行
在那里,我使用了部分数据来绘制多行图形图.现在我想在一个网格中绘制多个图形,因为我已经对数据进行了分组.现在我这样做是为每组数据创建数据帧,然后为每个数据帧创建一个图表并将它们组合使用gridd.arrange()
但是,我想知道我是否可以将分组数据作为1个数据集处理,而不是创建所有这些单独的表?
我的数据结构如下:
Category1 Category2 Category3
Company 2011 2013 2011 2013 2011 2013
Company1 300 350 290 300 295 290
Company2 320 430 305 301 300 400
Company3 310 420 400 305 400 410
Run Code Online (Sandbox Code Playgroud)
那么有没有办法立即处理这个问题并绘制3个图表(每个类别)以及每个公司的年度(2011年和2013年)?
这不应该是这么难,但我被困住了.我有一个以下表格的表格:
| 1 | 2 | 3
------------------------------------
TypeA | 3213 | 2121 | 43
TypeB | 31321 | 321 | 10
TypeC | 332 | 11 | 9
Run Code Online (Sandbox Code Playgroud)
我想生成一条线图,有三条线:每条Type一条,x坐标为"1,2,3",y坐标为数字(3213,...).我按照这里的步骤操作,但不知道如何迭代第一列.
我需要使用 ggplot 绘制不同日期的每小时数据,这是我的数据集:
数据由每小时观察组成,我想将每天的观察绘制成单独的一行。
这是我的代码
xbj1 = bj[c(1:24),c(1,6)]
Run Code Online (Sandbox Code Playgroud)
xbj2 = bj[c(24:47),c(1,6)]
xbj3 = bj[c(48:71),c(1,6)]
ggplot()+
geom_line(data = xbj1,aes(x = Date, y= Value), colour="blue") +
geom_line(data = xbj2,aes(x = Date, y= Value), colour = "grey") +
geom_line(data = xbj3,aes(x = Date, y= Value), colour = "green") +
xlab('Hour') +
ylab('PM2.5')
Run Code Online (Sandbox Code Playgroud)
请就此提出建议。